[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[certi-cvs] certi/scripts GenMsgBase.py GenMsgCXX.py GenMsg...
From: |
CERTI CVS commits |
Subject: |
[certi-cvs] certi/scripts GenMsgBase.py GenMsgCXX.py GenMsg... |
Date: |
Fri, 29 Jul 2011 09:08:24 +0000 |
CVSROOT: /sources/certi
Module name: certi
Changes by: Eric NOULARD <erk> 11/07/29 09:08:24
Modified files:
scripts : GenMsgBase.py GenMsgCXX.py GenMsgC.py
GenMsgAST.py
Log message:
Better C message generator
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgBase.py?cvsroot=certi&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgCXX.py?cvsroot=certi&r1=1.23&r2=1.24
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgC.py?cvsroot=certi&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgAST.py?cvsroot=certi&r1=1.22&r2=1.23
Patches:
Index: GenMsgBase.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgBase.py,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- GenMsgBase.py 28 Jul 2011 14:04:20 -0000 1.11
+++ GenMsgBase.py 29 Jul 2011 09:08:22 -0000 1.12
@@ -19,7 +19,7 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
## USA
##
-## $Id: GenMsgBase.py,v 1.11 2011/07/28 14:04:20 erk Exp $
+## $Id: GenMsgBase.py,v 1.12 2011/07/29 09:08:22 erk Exp $
## ----------------------------------------------------------------------------
# We use logging for ... logging :-)
@@ -169,6 +169,8 @@
stream.write(self.commentEndWith+'\n')
else:
stream.write('\n')
+ else:
+ stream.write('\n')
def writeCommentLines(self,stream, commentLines):
"""
Index: GenMsgCXX.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgCXX.py,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -b -r1.23 -r1.24
--- GenMsgCXX.py 16 Jul 2011 18:10:09 -0000 1.23
+++ GenMsgCXX.py 29 Jul 2011 09:08:23 -0000 1.24
@@ -20,7 +20,7 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
## USA
##
-## $Id: GenMsgCXX.py,v 1.23 2011/07/16 18:10:09 erk Exp $
+## $Id: GenMsgCXX.py,v 1.24 2011/07/29 09:08:23 erk Exp $
## ----------------------------------------------------------------------------
"""
@@ -120,9 +120,7 @@
def openNamespaces(self, stream):
if self.AST.hasPackage():
self.writeComment(stream, self.AST.package)
-
# we may have nested namespace
-
nameSpaceList = self.AST.package.name.split('.')
for ns in nameSpaceList:
stream.write(self.getIndent() + '''namespace %s {
@@ -135,7 +133,6 @@
if self.AST.hasPackage():
# we may have nested namespace
-
nameSpaceList = self.AST.package.name.split('.')
nameSpaceList.reverse()
for ns in nameSpaceList:
@@ -355,9 +352,7 @@
for native in self.AST.natives:
if native.hasLanguage('CXX'):
for line in native.getLanguageLines('CXX'):
-
# we are only interested in native "include" statement
-
stmt = line.statement
if stmt.find('#include') >= 0 and not stmt \
in self.included.keys():
Index: GenMsgC.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgC.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- GenMsgC.py 28 Jul 2011 14:04:20 -0000 1.7
+++ GenMsgC.py 29 Jul 2011 09:08:23 -0000 1.8
@@ -20,7 +20,7 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
## USA
##
-## $Id: GenMsgC.py,v 1.7 2011/07/28 14:04:20 erk Exp $
+## $Id: GenMsgC.py,v 1.8 2011/07/29 09:08:23 erk Exp $
## ----------------------------------------------------------------------------
"""
@@ -302,7 +302,7 @@
if field.qualifier == 'optional':
stream.write(self.getIndent())
tmp = self.upperFirst(field.name)
- stream.write('uint8_t has%s(%s_t cthis)'
+ stream.write('uint8_t has%s(%s_t* cthis)'
% (tmp, self.nameprefix + msg.name))
if not headerOnly:
stream.write(' {return cthis->_has%s;}\n' % tmp)
@@ -481,7 +481,7 @@
if msg.hasMerge():
stream.write(self.getIndent()
- + '%s super;\n'
+ + '%s* super;\n'
% self.getTargetTypeName(msg.merge.name))
# write fields
@@ -601,7 +601,7 @@
else:
stream.write(self.getIndent()+'newObj->'+field.name+' = ')
if isinstance(field.typeid,GenMsgAST.EnumType):
- stream.write('%s;\n' % field.typeid.values[0].name)
+ stream.write('%s;\n' % (self.nameprefix +
self.AST.shortenName(field.typeid.name) +'_'+field.typeid.values[0].name))
else:
stream.write(self.getTargetTypeName(field.typeid.name)+'_create(1);\n')
@@ -633,17 +633,15 @@
if None == methodName: # field has no Serialize Method Name found in
the map
# non native field case
if field.typeid.name in [m.name for m in self.AST.messages]:
- stream.write(field.name + indexField
- + '_serialize(msgBuffer);\n')
+ self.writeCommentLines("FIXME call serialize for field %s" %
field.name)
+ #stream.write(field.name + indexField+
'_serialize(msgBuffer);\n')
elif field.typeid.name in [m.name for m in self.AST.enums]:
# enum type field case (enum are serialized as uint32)
methodName = self.getSerializeMethodName('uint32')
stream.write(methodName)
- stream.write('(msgBuffer' + field.name + indexField + ');\n')
+ stream.write('(msgBuffer,cthis->' + field.name + indexField +
');\n')
else:
-
# native field case
-
stream.write(self.commentLineBeginWith
+ ' FIXME FIXME FIXME\n')
stream.write(self.getIndent()
@@ -666,7 +664,7 @@
indexField = ''
if field.qualifier == 'optional':
stream.write(self.getIndent())
- stream.write('fprintf(out,"(opt) %s =" ' % field.name)
+ stream.write('fprintf(out,"(opt) %s =" cthis->' % field.name)
elif field.qualifier == 'repeated':
indexField = '[i]'
stream.write(self.getIndent())
@@ -680,7 +678,7 @@
stream.write(self.getIndent() + 'out ')
else:
stream.write(self.getIndent())
- stream.write('fprintf(out," %s = " ' % field.name)
+ stream.write('fprintf(out," %s = " cthis->' % field.name)
methodName = self.getSerializeMethodName(field.typeid.name)
if None == methodName: # field has no Serialize Method Name found in
the map
@@ -725,7 +723,7 @@
indexField = ''
if field.qualifier == 'optional':
stream.write(self.getIndent())
- stream.write('cthis->_has%s = MB_read_bool(msgBuffer);\n'
+ stream.write('MB_read_bool(msgBuffer,&(cthis->_has%s));\n'
% self.upperFirst(field.name))
stream.write(self.getIndent())
stream.write('if (cthis->_has%s) {\n'
@@ -734,8 +732,8 @@
elif field.qualifier == 'repeated':
indexField = '[i]'
stream.write(self.getIndent())
- stream.write('uint32_t ' + field.name
- + 'Size = MB_read_uint32(msgBuffer);\n')
+ stream.write('uint32_t ' + field.name+ 'Size;\n');
+ stream.write('MB_read_uint32(msgBuffer,&'+field.name+'Size);\n')
stream.write(self.getIndent())
stream.write('cthis->'+field.name + 'size =' + field.name
+ 'Size);\n')
@@ -752,45 +750,36 @@
stream.write('cthis->'+field.name + indexField
+ '_deserialize(msgBuffer);\n')
elif field.typeid.name in [m.name for m in self.AST.enums]:
-
# enum type field case (enum are deserialized as uint32)
-
targetTypeName = \
self.getTargetTypeName(field.typeid.name)
methodName = self.getDeSerializeMethodName('uint32')
# We should check if the uint32 value is in enum range before
casting it into enumtype
- stream.write('cthis->'+field.name + indexField + ' =
static_cast<'
- + targetTypeName + '>('
- + methodName + ' ());\n')
+ stream.write(methodName +'(msgBuffer,(&cthis->'+field.name +
indexField + '));\n')
else:
-
# native field case
-
stream.write(self.commentLineBeginWith
+ ' FIXME FIXME FIXME\n')
stream.write(self.getIndent()
+ self.commentLineBeginWith
+ " don't know how to deserialize native field
<%s> of type <%s>\n"
% (field.name, field.typeid.name))
- else:
# field has one Deserialize Method Name found in the map
- if methodName == 'read_string':
- stream.write(methodName + '(msgBuffer,'
- + field.name + indexField + ');\n')
else:
-
+ if methodName == 'MB_read_string':
+ stream.write(methodName + '(msgBuffer,cthis->'
+ + field.name + indexField +
',MAX_CSTRINGSIZE);\n')
+ else:
# We may have to vast in order to enforce conversion
-
if isinstance(field.typeid, GenMsgAST.NativeType):
stream.write('cthis->'+field.name + indexField
+ ' = static_cast<'
+ field.typeid.name + '>('
+ methodName + '(msgBuffer));\n')
else:
- stream.write('cthis->'+field.name + indexField
- + ' = ' + methodName
- + '(msgBuffer);\n')
+ stream.write(methodName
+ + '(msgBuffer,&(cthis->'+field.name +
indexField+'));\n')
if field.qualifier == 'optional':
self.unIndent()
@@ -930,12 +919,13 @@
stream.write(self.getIndent() + "assert(nb>0);\n")
stream.write(self.getIndent() + 'newObj =
malloc(nb*sizeof(%s_t));\n' % (self.nameprefix+msg.name))
stream.write(self.getIndent() + "assert(newObj!=NULL);\n")
+
if msg.hasMerge():
stream.write(self.getIndent()+
'for (%s i=0;i<nb;++i) {\n' %
self.getTargetTypeName("uint32"))
self.indent()
stream.write(self.getIndent()+
- 'newObj[i].super = %s_create(1)\n' %
(self.nameprefix+msg.merge.name))
+ 'newObj[i].super = %s_create(1);\n' %
(self.nameprefix+msg.merge.name))
# Assign my name (we can use constant string here)
stream.write(self.getIndent()
+ 'newObj[i].super->messageName = "%s"; \n' %
msg.name)
@@ -945,7 +935,7 @@
self.replacePrefix[1], 1) + ';\n')
else:
stream.write(self.getIndent() + 'newObj[i].super->type
= '
- + msg.name.upper() + ';\n')
+ + self.nameprefix +
self.AST.shortenName("MessageType")+ '_' + msg.name.upper() + ';\n')
self.unIndent()
stream.write(self.getIndent()+"}\n")
@@ -981,8 +971,8 @@
self.indent()
if msg.hasMerge():
self.writeCommentLines(stream,"Call mother class")
- stream.write(self.getIndent()
- + 'Super_serialize(msgBuffer);\n')
+ self.writeCommentLines(stream,"FIXME TBD")
+ #stream.write(self.getIndent()+
'Super_serialize(msgBuffer);\n')
self.writeCommentLines(stream,"Specific serialization
code")
self.applyToFields(stream, msg.fields,
self.writeSerializeFieldStatement)
@@ -1000,8 +990,8 @@
self.indent()
if msg.hasMerge():
self.writeCommentLines(stream,"Call mother class")
- stream.write(self.getIndent()
- + 'Super_deserialize(msgBuffer);\n')
+ self.writeCommentLines(stream,"FIXME TBD")
+ #stream.write(self.getIndent()+
'Super_deserialize(msgBuffer);\n')
self.writeCommentLines(stream,"Specific deserialization
code")
self.applyToFields(stream, msg.fields,
self.writeDeSerializeFieldStatement)
@@ -1033,11 +1023,11 @@
% msg.name)
if msg.hasMerge():
self.writeCommentLines(stream,"Call mother class")
- stream.write(self.getIndent()
- + 'Super_show(out);\n')
+ self.writeCommentLines(stream,"FIXME TBD")
+ #stream.write(self.getIndent()+ 'Super_show(out);\n')
self.writeCommentLines(stream,"Specific show code")
- self.applyToFields(stream, msg.fields,
- self.writeShowFieldStatement)
+ # FIXME this needs a rewrite
+ #self.applyToFields(stream,
msg.fields,self.writeShowFieldStatement)
stream.write(self.getIndent()
+ 'fprintf(out,"[%s -End] \\n");\n'
% msg.name)
Index: GenMsgAST.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgAST.py,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- GenMsgAST.py 19 Jul 2011 20:21:21 -0000 1.22
+++ GenMsgAST.py 29 Jul 2011 09:08:23 -0000 1.23
@@ -20,7 +20,7 @@
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
## USA
##
-## $Id: GenMsgAST.py,v 1.22 2011/07/19 20:21:21 erk Exp $
+## $Id: GenMsgAST.py,v 1.23 2011/07/29 09:08:23 erk Exp $
## ----------------------------------------------------------------------------
"""
@@ -1154,7 +1154,6 @@
# kind of message.
# However some message types may merge from one another
# as soon as there is a "common" root merge type
-
if msg.hasMerge():
parent = AST.getType(msg.merge)
parent.nbHeir += 1
@@ -1177,6 +1176,12 @@
if not self.checkMessageFields(msg, AST):
return
+ # only add merger type in the enumeration if the
+ # type is not native
+ if (not isinstance(lastMerge, NativeType)):
+ enumval = EnumType.EnumValue(lastMerge.name.upper(), None)
+ enumval.type = lastMerge.name
+ msgTypeEnumVals.append(enumval)
enumval = EnumType.EnumValue('LAST', None)
enumval.type = None
msgTypeEnumVals.append(enumval)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [certi-cvs] certi/scripts GenMsgBase.py GenMsgCXX.py GenMsg...,
CERTI CVS commits <=