[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[certi-cvs] certi/scripts GenerateMessages.py CERTI_Network...
From: |
certi-cvs |
Subject: |
[certi-cvs] certi/scripts GenerateMessages.py CERTI_Network... |
Date: |
Sun, 06 Sep 2009 10:02:02 +0000 |
CVSROOT: /sources/certi
Module name: certi
Changes by: Eric NOULARD <erk> 09/09/06 10:02:02
Modified files:
scripts : GenerateMessages.py CERTI_NetworkMessage.msg
Log message:
Handle the repeated case
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenerateMessages.py?cvsroot=certi&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/CERTI_NetworkMessage.msg?cvsroot=certi&r1=1.3&r2=1.4
Patches:
Index: GenerateMessages.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenerateMessages.py,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- GenerateMessages.py 5 Sep 2009 21:26:33 -0000 1.17
+++ GenerateMessages.py 6 Sep 2009 10:02:02 -0000 1.18
@@ -19,7 +19,7 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
## USA
##
-## $Id: GenerateMessages.py,v 1.17 2009/09/05 21:26:33 erk Exp $
+## $Id: GenerateMessages.py,v 1.18 2009/09/06 10:02:02 erk Exp $
## ----------------------------------------------------------------------------
"""
@@ -1052,6 +1052,19 @@
targetTypeName = self.getTargetTypeName(field.typeid.name)
if field.typeid.name == "onoff":
+ if field.qualifier == "repeated":
+ stream.write(self.getIndent())
+ stream.write("void "+field.name+"On(uint32_t rank)")
+ stream.write(" {"+field.name+"[rank] = true;};\n")
+
+ stream.write(self.getIndent())
+ stream.write("void "+field.name+"Off(uint32_t rank)")
+ stream.write(" {"+field.name+"[rank] = false;};\n")
+
+ stream.write(self.getIndent())
+ stream.write(targetTypeName+ "
is"+self.upperFirst(field.name)+"On(uint32_t rank)")
+ stream.write(" {return "+field.name+"[rank];};\n")
+ else:
stream.write(self.getIndent())
stream.write("void "+field.name+"On()")
stream.write(" {"+field.name+" = true;};\n")
@@ -1064,6 +1077,16 @@
stream.write(targetTypeName+ "
is"+self.upperFirst(field.name)+"On()")
stream.write(" {return "+field.name+";};\n")
else:
+ if field.qualifier == "repeated":
+ stream.write(self.getIndent())
+ stream.write(targetTypeName + "
get"+self.upperFirst(field.name)+"(uint32_t rank)")
+ stream.write(" {return "+field.name+"[rank];};\n")
+
+ stream.write(self.getIndent())
+ stream.write("void set"+self.upperFirst(field.name)+"(")
+ stream.write(targetTypeName+"
new"+self.upperFirst(field.name)+", uint32_t rank)")
+ stream.write("
{"+field.name+"[rank]=new"+self.upperFirst(field.name)+";};\n")
+ else:
stream.write(self.getIndent())
stream.write(targetTypeName + "
get"+self.upperFirst(field.name)+"()")
stream.write(" {return "+field.name+";};\n")
@@ -1073,12 +1096,23 @@
stream.write(targetTypeName+" new"+self.upperFirst(field.name)+")")
stream.write("
{"+field.name+"=new"+self.upperFirst(field.name)+";};\n")
+ def writeDeclarationFieldStatement(self,stream,field):
+ stream.write(self.getIndent())
+ if field.qualifier == "repeated":
+ stream.write("std::vector<%s> %s;" %
(self.getTargetTypeName(field.typeid.name),field.name))
+ else:
+ stream.write("%s %s;" %
(self.getTargetTypeName(field.typeid.name),field.name))
+ self.writeComment(stream, field)
+
def generateHeader(self,stream,factoryOnly=False):
# write the usual header protecting MACRO
(headerProtectMacroName,ext) = os.path.splitext(self.AST.name)
- headerProtectMacroName = "%s__HH" % headerProtectMacroName.upper()
+ headerProtectMacroName = "%s_HH" % headerProtectMacroName.upper()
stream.write("#ifndef %s\n"%headerProtectMacroName)
stream.write("#define %s\n"%headerProtectMacroName)
+ # add necessary standard includes
+ stream.write("#include <vector>\n")
+ stream.write("#include <string>\n")
# Generate namespace for specified package package
# we may have nested namespace
self.openNamespaces(stream)
@@ -1151,9 +1185,7 @@
stream.write(self.getIndent()+"protected:\n")
self.indent()
for field in msg.fields:
- stream.write(self.getIndent())
- stream.write("%s %s;" %
(self.getTargetTypeName(field.typeid.name),field.name))
- self.writeComment(stream, field)
+ self.writeDeclarationFieldStatement(stream,field)
self.unIndent()
# end protected
@@ -1217,6 +1249,9 @@
"""
Generate the body.
"""
+ # add necessary standard includes
+ stream.write("#include <vector>\n")
+ stream.write("#include <string>\n")
# Generate namespace for specified package package
# we may have nested namespace
self.openNamespaces(stream)
@@ -1393,28 +1428,6 @@
for l in msgFile:
cname = l.strip('_ \n')
- if (gentype.lower()=="body"):
- print "/*<BEGIN>---------- %s ------------<BEGIN>*/" % cname.title()
- print "NM_%s::NM_%s() {" % (cname.title(),cname.title())
- print " this->name = \"%s\";" % cname
- print " this->type = NetworkMessage::%s;" % cname
- print " /* specific field init */"
- print "}"
- print "NM_%s::~NM_%s() {" % (cname.title(), cname.title())
- print "}"
- print "void NM_%s::serialize() {" % cname.title()
- print " /* call mother class */ "
- print " NetworkMessage::serialize(); "
- print " /* specific code (if any) goes here */"
- print "} /* end of serialize */ "
- print "void NM_%s::deserialize() {" % cname.title()
- print " /* call mother class */ "
- print " NetworkMessage::deserialize(); "
- print " /* specific code (if any) goes here */"
- print "} /* end of deserialize */"
- print "/*<END>---------- %s ------------<END>*/\n" % cname.title()
-
-
if (gentype.lower()=="factory"):
print "case NetworkMessage::%s:" % cname
print " msg = new NM_%s(); " %cname.title()
Index: CERTI_NetworkMessage.msg
===================================================================
RCS file: /sources/certi/certi/scripts/CERTI_NetworkMessage.msg,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- CERTI_NetworkMessage.msg 5 Sep 2009 18:38:56 -0000 1.3
+++ CERTI_NetworkMessage.msg 6 Sep 2009 10:02:02 -0000 1.4
@@ -26,6 +26,11 @@
// Basic Message is the base class message for CERTI
native BasicMessage
+//native BasicMessage {
+// language C++ [#include BasicMessage.hh]
+// language Python [import certi.BasicMessage]
+// language Java [import certi.BasicMessage]
+//}
// Network message is the base class
// for message exchanged between RTIA and RTIG
@@ -38,14 +43,8 @@
// AKA CERTI Message
native Message
-enum SampleMessageType {
- NOT_USED,
- SMT_BASIC,
- SMT_NETWORK_MESSAGE,
- SMT_MESSAGE
-}
-
native AttributeHandle
+
message NM_WithHandleArray : merge NetworkMessage {
repeated AttributeHandle handle
}