certi-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[certi-cvs] certi/scripts GenMsgBase.py GenMsgJava.py GenMs...


From: CERTI CVS commits
Subject: [certi-cvs] certi/scripts GenMsgBase.py GenMsgJava.py GenMs...
Date: Fri, 15 Jul 2011 12:22:05 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      11/07/15 12:22:05

Modified files:
        scripts        : GenMsgBase.py GenMsgJava.py GenMsgCXX.py 
                         GenerateMessages.py GenMsgAST.py 

Log message:
        Update CERTI Java message generator in order to tolerate the new
        representation syntax.
        This is not enough for a fully functional Java generator but this is 
the first step

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgBase.py?cvsroot=certi&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgJava.py?cvsroot=certi&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgCXX.py?cvsroot=certi&r1=1.21&r2=1.22
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenerateMessages.py?cvsroot=certi&r1=1.43&r2=1.44
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgAST.py?cvsroot=certi&r1=1.19&r2=1.20

Patches:
Index: GenMsgBase.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgBase.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- GenMsgBase.py       11 Jun 2010 12:43:12 -0000      1.6
+++ GenMsgBase.py       15 Jul 2011 12:22:01 -0000      1.7
@@ -19,7 +19,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgBase.py,v 1.6 2010/06/11 12:43:12 erk Exp $
+## $Id: GenMsgBase.py,v 1.7 2011/07/15 12:22:01 erk Exp $
 ## ----------------------------------------------------------------------------
 
 # We use logging for ... logging :-)
@@ -55,7 +55,7 @@
         self.commentLineBeginWith = commentLineBeginWith
         self.logger = logging.Logger(self.generatorName() + 'Generator')
         self.logger.setLevel(logging.ERROR)
-        self.logger.addHandler(logging.StreamHandler(sys.stdout))
+        #self.logger.addHandler(logging.StreamHandler(sys.stdout))
         self.__indentString = '   '
         self.__indentLevel = 0
         self.builtinTypeMap = {
@@ -101,6 +101,33 @@
         else:
             return name
 
+    def getRepresentationFor(self, name):
+        for native in self.AST.natives:
+            if name == native.name:
+                return native.getRepresentation()
+        return None
+
+    def getSerializeMethodName(self, name):
+        if name in self.serializeTypeMap.keys():
+            return self.serializeTypeMap[name]
+        else:
+            representation = self.getRepresentationFor(name)
+            if representation and not representation.hasQualifier():
+                return 
self.getSerializeMethodName(representation.representation)
+        
+        self.logger.warn("No serialize method for <%s>", name)
+        return None
+
+    def getDeSerializeMethodName(self, name):
+        if name in self.deserializeTypeMap.keys():
+            return self.deserializeTypeMap[name]
+        else:
+            representation = self.getRepresentationFor(name)
+            if representation and not representation.hasQualifier():
+                return 
self.getDeSerializeMethodName(representation.representation)
+        self.logger.warn("No serialize method for <%s>", name)
+        return None
+
     def lowerFirst(self, str):
         res = str[0].lower() + str[1:]
         return res
@@ -117,13 +144,10 @@
         language has whole line comment support
         with some beginning characters.
         """
-
         if ASTElement.hasComment():
             for line in ASTElement.comment.lines:
-
                 # we should not indent optional comment
                 # since they come at the end of a line
-
                 if not ASTElement.comment.isAtEOL:
                     stream.write(self.getIndent())
                 stream.write(self.commentLineBeginWith)
@@ -136,27 +160,26 @@
         """
         Generate the header.
         """
-
         self.logger.error('generateHeader not IMPLEMENTED')
 
     def generateBody(self, stream, factoryOnly=False):
         """
         Generate the body.
         """
-
         self.logger.error('generateBody not IMPLEMENTED')
 
+    def addGeneratedByLine(self,stream):
+        stream.write(self.commentLineBeginWith)
+        stream.write(' Generated on %s by the CERTI message generator\n'
+                     % datetime.datetime.now().strftime('%Y %B %a, %d at 
%H:%M:%S'
+                     ))
+
     def generate(
         self,
         stream,
         what,
-        factoryOnly=False,
-        ):
-        stream.write(self.commentLineBeginWith)
-        stream.write(' Generated on %s by the CERTI message generator\n'
+        factoryOnly=False):
 
-                     % datetime.datetime.now().strftime('%Y %B %a, %d at 
%H:%M:%S'
-                     ))
         if what.lower() == 'header':
             self.generateHeader(stream, factoryOnly)
         elif what.lower() == 'body':
@@ -166,7 +189,6 @@
 
 
 class MsgSpecGenerator(CodeGenerator):
-
     """
     This is a text generator for C{MessageAST}.
     
@@ -199,21 +221,17 @@
         """
 
         # Generate package
-
         if self.AST.hasPackage():
             self.writeComment(stream, self.AST.package)
             stream.write('package %s\n' % self.AST.package.name)
 
     # Generate version
-
         if self.AST.hasVersion():
             self.writeComment(stream, self.AST.version)
             stream.write('version %d.%d\n' % self.AST.version.number)
 
         if not factoryOnly:
-
             # Generate native type
-
             for native in self.AST.natives:
                 self.writeComment(stream, native)
                 stream.write('native %s {\n' % native.name)
@@ -229,7 +247,6 @@
                 stream.write('}\n')
 
             # Generate enum
-
             for enum in self.AST.enums:
                 self.writeComment(stream, enum)
                 stream.write('enum %s {\n' % enum.name)
@@ -250,7 +267,6 @@
 ''')
 
             # Generate message type
-
             for msg in self.AST.messages:
                 self.writeComment(stream, msg)
                 stream.write('message %s' % msg.name)
@@ -287,7 +303,6 @@
 ''')
 
         # Generate Factory
-
         if self.AST.hasFactory():
             self.writeComment(stream, self.AST.factory)
             stream.write('factory %s {\n' % self.AST.factory.name)
@@ -301,5 +316,3 @@
             stream.write('''}
 
 ''')
-
-

Index: GenMsgJava.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgJava.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- GenMsgJava.py       11 Jun 2010 12:43:12 -0000      1.4
+++ GenMsgJava.py       15 Jul 2011 12:22:02 -0000      1.5
@@ -19,7 +19,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgJava.py,v 1.4 2010/06/11 12:43:12 erk Exp $
+## $Id: GenMsgJava.py,v 1.5 2011/07/15 12:22:02 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -31,6 +31,7 @@
 import GenMsgBase
 import GenMsgAST
 import sys
+import os
 
 
 class JavaGenerator(GenMsgBase.CodeGenerator):
@@ -151,58 +152,56 @@
 """)
 
     def generateHeader(self, stream, factoryOnly=False):
+        self.logger.warn("There is no 'header' for Java, only body.")
+        self.logger.warn("Header generation does sanity checks only")
         for native in self.AST.natives:
             if native.hasLanguage('Java'):
-
                 # This an example may be it would be worth to check whether if 
the
-                # refered native types are valids?
-
+                # referred native types are valids?
                 for line in native.getLanguageLines('Java'):
-                    stream.write('Found native **' + line.statement
-                                 + '**\n')
+                    self.logger.info('Found native **' + line.statement+ '**')
 
     def prepareName(self, name):
         upperAfterScore = lambda x: __import__('re').sub(r'_(.)',
                 lambda y: y.group(0).upper(), x)
+        if (name.find('_')>0):
         return upperAfterScore(name.lower()).replace('_', '')[1:]
-
-    def getSerializeMethodName(self, name):
-        if name in self.serializeTypeMap.keys():
-            return self.serializeTypeMap[name]
         else:
-            representation = self.getRepresentationFor(name)
-            if representation:
-                return self.getSerializeMethodName(representation)
-        print 'No serialize method name for <%s> ' % name
-        return None
-
-    def getDeSerializeMethodName(self, name):
-        if name in self.deserializeTypeMap.keys():
-            return self.deserializeTypeMap[name]
-        else:
-            representation = self.getRepresentationFor(name)
-            if representation:
-                return self.getDeSerializeMethodName(representation)
-        return None
-
-    def getRepresentationFor(self, name):
-        for native in self.AST.natives:
-            if name == native.name:
-                representation = native.getRepresentation()
-                if representation:
-                    return representation
-        return None
+            return name
 
     def generateBody(self, stream, factoryOnly=False):
         """
         Generate the body.
         """
+        # Java generator generates multiple files so close
+        # and delete the previously opened javaFile and create
+        # a directory with the same name instead
+        shouldCreateDir=False
+        if (isinstance(stream,file)):
+            mydirname = stream.name
+            if os.path.exists(mydirname):
+                os.remove(mydirname)
+                shouldCreateDir=True
+        elif (isinstance(stream,"".__class__)):
+            mydirname = stream
+            if not os.path.exists(mydirname):
+                shouldCreateDir = True
+        else:
+            self.logger.error("Unknown type of stream <%>" % type(stream))
 
+        if shouldCreateDir:
+            os.makedirs(mydirname)
+            self.logger.info("Generates java javaFile in %s directory" % 
mydirname)
         for msg in self.AST.messages:
-            file = open('messages/' + self.prepareName(msg.name)
+            if os.path.exists(mydirname):
+                javaFile = open(mydirname +os.sep+ self.prepareName(msg.name)
                         + '.java', 'w')
+            else:
+                javaFile = sys.stdout
+                javaFile.write("// ----------    %s ----------\n" % 
(self.prepareName(msg.name)+'.java'))
 
-            file.write("""// 
----------------------------------------------------------------------------
+            self.addGeneratedByLine(javaFile)
+            javaFile.write("""// 
----------------------------------------------------------------------------
 // CERTI - HLA Run Time Infrastructure
 // Copyright (C) 2010 Andrej Pancik
 //
@@ -224,25 +223,25 @@
 """)
 
             if self.AST.hasPackage():
-                file.write('package ' + self.AST.package.name
+                javaFile.write('package ' + self.AST.package.name
                            + ''';
 
 ''')
-            self.generateIncludes(file)
-            file.write(self.getIndent() + 'public class '
+            self.generateIncludes(javaFile)
+            javaFile.write(self.getIndent() + 'public class '
                        + self.prepareName(msg.name)
                        + ' extends CertiMessage {\n')
             self.indent()
 
             if len(msg.fields) > 0:
                 for field in msg.fields:
-                    file.write(self.getIndent() + 'private ')
+                    javaFile.write(self.getIndent() + 'private ')
 
                     # Combined field and "plain" field must not be treated the 
same way
 
                     if not isinstance(field,
                             GenMsgAST.MessageType.CombinedField):
-                        self.writeFieldStatement(file, field)
+                        self.writeFieldStatement(javaFile, field)
                     else:
 
                         # combined field may be written in a specific way
@@ -251,117 +250,111 @@
                         # generated
 
                         for cfield in field.fields:
-                            self.writeFieldStatement(file, cfield)
+                            self.writeFieldStatement(javaFile, cfield)
 
-            file.write('\n')
+            javaFile.write('\n')
 
             # constructor
 
-            file.write(self.getIndent() + 'public '
+            javaFile.write(self.getIndent() + 'public '
                        + self.prepareName(msg.name) + '() {\n')
             self.indent()
-            file.write(self.getIndent() + 'super(CertiMessageType.'
+            javaFile.write(self.getIndent() + 'super(CertiMessageType.'
                        + msg.name.upper()[2:] + ');\n')
             self.unIndent()
-            file.write(self.getIndent() + '''}
+            javaFile.write(self.getIndent() + '''}
 
 ''')
 
-            file.write(self.getIndent() + 'public '
+            javaFile.write(self.getIndent() + 'public '
                        + self.prepareName(msg.name)
                        + '(CertiLogicalTime federationTime) {\n')
             self.indent()
-            file.write(self.getIndent() + 'super(CertiMessageType.'
+            javaFile.write(self.getIndent() + 'super(CertiMessageType.'
                        + msg.name.upper()[2:] + ', federationTime);\n')
             self.unIndent()
-            file.write(self.getIndent() + '''}
+            javaFile.write(self.getIndent() + '''}
 
 ''')
 
-            # file.write(self.getIndent() + "public " + 
self.prepareName(msg.name) + "(double federationTime, attributes) {\n")
+            # javaFile.write(self.getIndent() + "public " + 
self.prepareName(msg.name) + "(double federationTime, attributes) {\n")
             # TODO attributes in constructor
             # self.indent()
-            # file.write(self.getIndent() + "super(CertiMessageType." + 
msg.name.upper()[2:] + ", federationTime);\n")
+            # javaFile.write(self.getIndent() + "super(CertiMessageType." + 
msg.name.upper()[2:] + ", federationTime);\n")
 
             # TODO initialize local attributes
             # self.unIndent()
-            # file.write(self.getIndent() + "}\n\n");
+            # javaFile.write(self.getIndent() + "}\n\n");
 
             if len(msg.fields) > 0:
-                file.write(self.getIndent() + '@Override\n')
-                file.write(self.getIndent()
+                javaFile.write(self.getIndent() + '@Override\n')
+                javaFile.write(self.getIndent()
                            + 'public void writeMessage(MessageBuffer 
messageBuffer) {\n'
                            )
                 self.indent()
-                file.write(self.getIndent()
+                javaFile.write(self.getIndent()
                            + '''super.writeMessage(messageBuffer); //Header
 
 ''')
 
                 for field in msg.fields:
-
+                    methodName = self.getSerializeMethodName(field.typeid.name)
                     # Combined field and "plain" field must not be treated the 
same way
-
                     if not isinstance(field,
-                            GenMsgAST.MessageType.CombinedField):
-                        file.write(self.getIndent()
-                                   + 
self.getSerializeMethodName(field.typeid.name)
+                            GenMsgAST.MessageType.CombinedField) and 
methodName:
+                        javaFile.write(self.getIndent()
+                                   + methodName
                                    % field.name + '\n')
-                    else:
-
+                    elif methodName:
                         # FIXME TODO
-
                         for cfield in field.fields:
                             pass
 
                 self.unIndent()
-                file.write(self.getIndent() + '''}
+                javaFile.write(self.getIndent() + '''}
 
 ''')
 
-                file.write(self.getIndent() + '@Override\n')
-                file.write(self.getIndent()
+                javaFile.write(self.getIndent() + '@Override\n')
+                javaFile.write(self.getIndent()
                            + 'public void readMessage(MessageBuffer 
messageBuffer) throws CertiException {\n'
                            )
                 self.indent()
-                file.write(self.getIndent()
+                javaFile.write(self.getIndent()
                            + '''super.readMessage(messageBuffer); //Header 
 
 ''')
 
                 for field in msg.fields:
-
+                    methodName = self.getSerializeMethodName(field.typeid.name)
                     # Combined field and "plain" field must not be treated the 
same way
-
                     if not isinstance(field,
-                            GenMsgAST.MessageType.CombinedField):
-                        file.write(self.getIndent()
-                                   + 
self.getDeSerializeMethodName(field.typeid.name)
+                            GenMsgAST.MessageType.CombinedField) and 
methodName:
+                        javaFile.write(self.getIndent()
+                                   + methodName
                                    % field.name + '\n')
-                    else:
-
+                    elif methodName:
                         # FIXME TODO
-
                         for cfield in field.fields:
                             pass
 
                 self.unIndent()
-                file.write(self.getIndent() + '''}
+                javaFile.write(self.getIndent() + '''}
 
 ''')
 
-                file.write(self.getIndent() + '@Override\n')
-                file.write(self.getIndent()
+                javaFile.write(self.getIndent() + '@Override\n')
+                javaFile.write(self.getIndent()
                            + 'public String toString() {\n')
                 self.indent()
-                file.write(self.getIndent() + 'return (super.toString()'
+                javaFile.write(self.getIndent() + 'return (super.toString()'
                            )
                 for field in msg.fields:
-                    file.write(' + ", ' + field.name + ': " + '
+                    javaFile.write(' + ", ' + field.name + ': " + '
                                + field.name)
-                file.write(');\n')
+                javaFile.write(');\n')
                 self.unIndent()
-                file.write(self.getIndent() + '''}
+                javaFile.write(self.getIndent() + '''}
 
 ''')
 
@@ -373,16 +366,16 @@
 
                     if not isinstance(field,
                             GenMsgAST.MessageType.CombinedField):
-                        file.write(self.getIndent() + 'public '
+                        javaFile.write(self.getIndent() + 'public '
                                    + self.getTargetTypeName(field.typeid.name)
                                    + ' get'
                                    + field.name[0].capitalize()
                                    + field.name[1:] + '() {\n')
                         self.indent()
-                        file.write(self.getIndent() + 'return '
+                        javaFile.write(self.getIndent() + 'return '
                                    + field.name + ';\n')
                         self.unIndent()
-                        file.write(self.getIndent() + '''}
+                        javaFile.write(self.getIndent() + '''}
 
 ''')
 
@@ -394,7 +387,7 @@
 
                     if not isinstance(field,
                             GenMsgAST.MessageType.CombinedField):
-                        file.write(self.getIndent() + 'public void set'
+                        javaFile.write(self.getIndent() + 'public void set'
                                    + field.name[0].capitalize()
                                    + field.name[1:] + '('
                                    + self.getTargetTypeName(field.typeid.name)
@@ -402,16 +395,16 @@
                                    + field.name[0].capitalize()
                                    + field.name[1:] + ') {\n')
                         self.indent()
-                        file.write(self.getIndent() + 'this.'
+                        javaFile.write(self.getIndent() + 'this.'
                                    + field.name + ' = new'
                                    + field.name[0].capitalize()
                                    + field.name[1:] + ';\n')
                         self.unIndent()
-                        file.write(self.getIndent() + '''}
+                        javaFile.write(self.getIndent() + '''}
 
 ''')
 
-            file.write('''}
+            javaFile.write('''}
 
 ''')
             self.unIndent()

Index: GenMsgCXX.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgCXX.py,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- GenMsgCXX.py        13 Jul 2011 15:43:17 -0000      1.21
+++ GenMsgCXX.py        15 Jul 2011 12:22:03 -0000      1.22
@@ -20,7 +20,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgCXX.py,v 1.21 2011/07/13 15:43:17 erk Exp $
+## $Id: GenMsgCXX.py,v 1.22 2011/07/15 12:22:03 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -117,30 +117,6 @@
         else:
             return name
 
-    def getRepresentationFor(self, name):
-        for native in self.AST.natives:
-            if name == native.name:
-                return native.getRepresentation()
-        return None
-
-    def getSerializeMethodName(self, name):
-        if name in self.serializeTypeMap.keys():
-            return self.serializeTypeMap[name]
-        else:
-            representation = self.getRepresentationFor(name)
-            if representation and not representation.hasQualifier():
-                return 
self.getSerializeMethodName(representation.representation)
-        return None
-
-    def getDeSerializeMethodName(self, name):
-        if name in self.deserializeTypeMap.keys():
-            return self.deserializeTypeMap[name]
-        else:
-            representation = self.getRepresentationFor(name)
-            if representation and not representation.hasQualifier():
-                return 
self.getDeSerializeMethodName(representation.representation)
-        return None
-
     def openNamespaces(self, stream):
         if self.AST.hasPackage():
             self.writeComment(stream, self.AST.package)
@@ -346,9 +322,8 @@
                      % enum.name)
 
     def generateHeader(self, stream, factoryOnly=False):
-
+        self.addGeneratedByLine(stream)
         # write the usual header protecting MACRO
-
         supposedHeaderName = stream.name
         if supposedHeaderName != '<stdout>':
             supposedHeaderName = os.path.basename(supposedHeaderName)
@@ -979,12 +954,10 @@
         """
         Generate the body.
         """
-
+        self.addGeneratedByLine(stream)
         # add necessary standard includes
-
         stream.write('#include <vector>\n')
         stream.write('#include <string>\n')
-
         # [Try to] add corresponding header include
 
         supposedHeaderName = stream.name

Index: GenerateMessages.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenerateMessages.py,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -b -r1.43 -r1.44
--- GenerateMessages.py 13 Jul 2011 15:43:17 -0000      1.43
+++ GenerateMessages.py 15 Jul 2011 12:22:04 -0000      1.44
@@ -20,7 +20,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenerateMessages.py,v 1.43 2011/07/13 15:43:17 erk Exp $
+## $Id: GenerateMessages.py,v 1.44 2011/07/15 12:22:04 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -111,7 +111,7 @@
     GenMsgC.CCERTIGenerator
 
 def usage():
-    print 'Usage:\n%s --input=<message> [--language=<lang>] 
[--type=header|body] [--factory-only] [--output=<filename>] [--verbose] 
[--help]' \
+    print 'Usage:\n%s --input=<message> [--language=<lang>] 
[--type=header|body] [--factory-only] [--output=<filename>|<output directory>] 
[--verbose] [--help]' \
         % os.path.basename(sys.argv[0])
     print '   Supported target languages are:'
     for gene in generatorBackends.values():
@@ -144,6 +144,7 @@
 gentype = 'header'
 language = GenMsgBase.MsgSpecGenerator.generatorName()
 output = sys.stdout
+oname  = 'stdout'
 inputFile = None
 
 # Parse command line options
@@ -158,7 +159,16 @@
     if o in ('-f', '--factory-only'):
         factoryOnly = True
     if o in ('-o', '--output'):
+        try:
         output = open(a, mode='w')
+            oname  = a
+        except IOError, err:
+            if (os.path.isdir(a)):
+                mainlogger.warn('output argument <%s> is a directory, passing 
it as-is to the generator'%a)
+                output = a
+                oname  = a
+            else:
+                mainlogger.error('unable to create output file <%s> [err=%s]' 
% (a,err))
     if o in ('-v', '--verbose'):
         verbose = True
         mainlogger.setLevel(logging.INFO)
@@ -167,7 +177,7 @@
         sys.exit(0)
 
 mainlogger.info('Reading message specifications from: <%s>' % inputFile)
-mainlogger.info('output send to: <%s>' % repr(output.name))
+mainlogger.info('output send to: <%s>' % oname)
 mainlogger.info('Generating for language: <%s>' % language)
 
 # Lexer+Parser specification begins here
@@ -713,6 +723,9 @@
       usage()
 
   if generator != None:
+      generator.logger.addHandler(stdoutHandler)
+      if verbose:
+          generator.logger.setLevel(logging.INFO)
       generator.generate(output, gentype, factoryOnly)
   mainlogger.info('Generate %s from AST, Done.' % language)
   msgFile.close()

Index: GenMsgAST.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgAST.py,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- GenMsgAST.py        13 Jul 2011 15:43:17 -0000      1.19
+++ GenMsgAST.py        15 Jul 2011 12:22:04 -0000      1.20
@@ -20,7 +20,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgAST.py,v 1.19 2011/07/13 15:43:17 erk Exp $
+## $Id: GenMsgAST.py,v 1.20 2011/07/15 12:22:04 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -1081,6 +1081,8 @@
                     if not self.checkMessageFields(f, AST):
                         return False
                 else:
+                        f.typeid = AST.getType(f.typeid)
+                else:
                     self.logger.fatal('Unknown MessageField type %s'
                             % f.str())
                     return False
@@ -1128,9 +1130,7 @@
                 parent = AST.getType(msg.merge)
                 parent.nbHeir += 1
                 if None != lastMerge:
-
                       # recurse to find root merge
-
                     rootMerge = AST.getRootMergeType(msg.merge)
                     if lastMerge != rootMerge:
                         blah = AST.getRootMergeType(msg.merge, 1)
@@ -1165,7 +1165,6 @@
 
         # check if merger are either native or message
         # @todo should check that merger is not an enum
-
         for msg in AST.messages:
             if msg.hasMerge():
                 if not AST.isDefined(msg.merge):
@@ -1193,7 +1192,6 @@
                     self.logger.fatal(' --> Check lines (%d,%d)'
                                       % AST.factory.linespan + ' of <%s>'
                                       % AST.name)
-    
                     return
     
             if AST.factory.hasFactoryReceiver():



reply via email to

[Prev in Thread] Current Thread [Next in Thread]