certi-cvs
[Top][All Lists]
Advanced

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

[certi-cvs] certi/scripts GenerateMessages.py GenMsgJava.py...


From: certi-cvs
Subject: [certi-cvs] certi/scripts GenerateMessages.py GenMsgJava.py...
Date: Sat, 06 Mar 2010 12:55:10 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      10/03/06 12:55:10

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

Log message:
        More modular backend generator
        Add an example with the C++ Message/NetworkMessage Generators

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenerateMessages.py?cvsroot=certi&r1=1.32&r2=1.33
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgJava.py?cvsroot=certi&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgBase.py?cvsroot=certi&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgAST.py?cvsroot=certi&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgPython.py?cvsroot=certi&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgCXX.py?cvsroot=certi&r1=1.3&r2=1.4

Patches:
Index: GenerateMessages.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenerateMessages.py,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -b -r1.32 -r1.33
--- GenerateMessages.py 5 Mar 2010 13:57:08 -0000       1.32
+++ GenerateMessages.py 6 Mar 2010 12:55:10 -0000       1.33
@@ -19,7 +19,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenerateMessages.py,v 1.32 2010/03/05 13:57:08 erk Exp $
+## $Id: GenerateMessages.py,v 1.33 2010/03/06 12:55:10 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -81,7 +81,8 @@
 
 generatorBackends = dict()
 generatorBackends[GenMsgBase.MsgSpecGenerator.generatorName().lower()] = 
GenMsgBase.MsgSpecGenerator
-generatorBackends[GenMsgCXX.CXXGenerator.generatorName().lower()] = 
GenMsgCXX.CXXGenerator
+generatorBackends[GenMsgCXX.CXXCERTIMessageGenerator.generatorName().lower()] 
= GenMsgCXX.CXXCERTIMessageGenerator
+generatorBackends[GenMsgCXX.CXXCERTINetworkMessageGenerator.generatorName().lower()]
 = GenMsgCXX.CXXCERTINetworkMessageGenerator
 generatorBackends[GenMsgPython.PythonGenerator.generatorName().lower()] = 
GenMsgPython.PythonGenerator
 generatorBackends[GenMsgJava.JavaGenerator.generatorName().lower()] = 
GenMsgJava.JavaGenerator
 
@@ -102,12 +103,13 @@
     usage()
     sys.exit(2)
     
-# default value
-verbose=False
-factoryOnly=False
-gentype="header"
-language=GenMsgBase.MsgSpecGenerator.generatorName()
-output=sys.stdout
+# default values for command line options
+verbose     = False
+factoryOnly = False
+gentype     = "header"
+language    = GenMsgBase.MsgSpecGenerator.generatorName()
+output      = sys.stdout
+inputFile   = None
 
 # Parse command line options
 for o, a in opts:
@@ -506,13 +508,17 @@
 parser = ply.yacc.yacc(debug=True)
 parser.logger = parserlogger 
     
-mainlogger.info("Parsing message file specifications...")
-try:    
+if inputFile != None:    
+    mainlogger.info("Parsing message file specifications...")
+    try:    
     msgFile =  open(inputFile,'r')
-except IOError, e:        
+    except IOError, e:        
     mainlogger.error("IOError raised: <"+str(e)+">")
     mainlogger.error("May be input file <%s> is unreadable or mispelled?" % 
inputFile)
     sys.exit()
+else:
+    mainlogger.error("No input file given!!")
+    sys.exit()
     
 lexer.lineno = 1
 parser.AST = GenMsgAST.MessageAST(inputFile)

Index: GenMsgJava.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgJava.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- GenMsgJava.py       4 Mar 2010 09:28:30 -0000       1.1
+++ GenMsgJava.py       6 Mar 2010 12:55:10 -0000       1.2
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 ## ----------------------------------------------------------------------------
 ## CERTI - HLA RunTime Infrastructure
 ## Copyright (C) 2002-2005  ONERA
@@ -19,7 +17,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgJava.py,v 1.1 2010/03/04 09:28:30 erk Exp $
+## $Id: GenMsgJava.py,v 1.2 2010/03/06 12:55:10 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -41,9 +39,6 @@
     
     def __init__(self, MessageAST):
         super(JavaGenerator, self).__init__(MessageAST, "//")
-        self.logger = logging.Logger("JavaGenerator")
-        self.logger.setLevel(logging.ERROR)
-        self.logger.addHandler(logging.StreamHandler(sys.stdout))
         # Message builtin type to Java type
         # Note that java integer type are ALL signed:
         # 
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html

Index: GenMsgBase.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgBase.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- GenMsgBase.py       5 Mar 2010 18:15:35 -0000       1.3
+++ GenMsgBase.py       6 Mar 2010 12:55:10 -0000       1.4
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 ## ----------------------------------------------------------------------------
 ## CERTI - HLA RunTime Infrastructure
 ## Copyright (C) 2002-2005  ONERA
@@ -19,7 +17,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgBase.py,v 1.3 2010/03/05 18:15:35 erk Exp $
+## $Id: GenMsgBase.py,v 1.4 2010/03/06 12:55:10 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -48,7 +46,7 @@
     def __init__(self,MessageAST,commentLineBeginWith):
         self.AST = MessageAST
         self.commentLineBeginWith = commentLineBeginWith
-        self.logger = logging.Logger("CodeGenerator")
+        self.logger = logging.Logger(self.generatorName()+"Generator")
         self.logger.setLevel(logging.ERROR)
         self.logger.addHandler(logging.StreamHandler(sys.stdout))
         self.__indentString = "   "

Index: GenMsgAST.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgAST.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- GenMsgAST.py        5 Mar 2010 18:15:35 -0000       1.2
+++ GenMsgAST.py        6 Mar 2010 12:55:10 -0000       1.3
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 ## ----------------------------------------------------------------------------
 ## CERTI - HLA RunTime Infrastructure
 ## Copyright (C) 2002-2005  ONERA
@@ -19,7 +17,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgAST.py,v 1.2 2010/03/05 18:15:35 erk Exp $
+## $Id: GenMsgAST.py,v 1.3 2010/03/06 12:55:10 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """

Index: GenMsgPython.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgPython.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- GenMsgPython.py     4 Mar 2010 09:28:30 -0000       1.1
+++ GenMsgPython.py     6 Mar 2010 12:55:10 -0000       1.2
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 ## ----------------------------------------------------------------------------
 ## CERTI - HLA RunTime Infrastructure
 ## Copyright (C) 2002-2005  ONERA
@@ -19,7 +17,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgPython.py,v 1.1 2010/03/04 09:28:30 erk Exp $
+## $Id: GenMsgPython.py,v 1.2 2010/03/06 12:55:10 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -41,8 +39,5 @@
     
     def __init__(self,MessageAST):
         super(PythonGenerator,self).__init__(MessageAST,"##")
-        self.logger = logging.Logger("PythonGenerator")
-        self.logger.setLevel(logging.ERROR)
-        self.logger.addHandler(logging.StreamHandler(sys.stdout))
         # Message builtin type to Python type
         
\ No newline at end of file

Index: GenMsgCXX.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgCXX.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- GenMsgCXX.py        5 Mar 2010 18:15:35 -0000       1.3
+++ GenMsgCXX.py        6 Mar 2010 12:55:10 -0000       1.4
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 ## ----------------------------------------------------------------------------
 ## CERTI - HLA RunTime Infrastructure
 ## Copyright (C) 2002-2005  ONERA
@@ -19,7 +17,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgCXX.py,v 1.3 2010/03/05 18:15:35 erk Exp $
+## $Id: GenMsgCXX.py,v 1.4 2010/03/06 12:55:10 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -32,7 +30,7 @@
 import sys
 import os   
             
-class CXXGenerator(GenMsgBase.CodeGenerator):    
+class CXXCERTIGenerator(GenMsgBase.CodeGenerator):    
     """
     This is a C++ generator for C{MessageAST}.
     
@@ -44,10 +42,7 @@
     
     
     def __init__(self,MessageAST):
-        super(CXXGenerator,self).__init__(MessageAST,"//")
-        self.logger = logging.Logger("CXXGenerator")
-        self.logger.setLevel(logging.ERROR)
-        self.logger.addHandler(logging.StreamHandler(sys.stdout))
+        super(CXXCERTIGenerator,self).__init__(MessageAST,"//")
         self.included = dict()
         self.typedefed = dict()
         self.builtinTypeMap = {'onoff'    : 'bool',
@@ -93,6 +88,7 @@
                                'float'    : 'read_float',
                                'double'   : 'read_double',}
         self.__languageName="C++"
+        self.replacePrefix = None
 
     def getRepresentationFor(self,name):
         for native in self.AST.natives:
@@ -259,8 +255,8 @@
         # add include coming from native type specification 
         stream.write(self.commentLineBeginWith+" ****-**** Includes coming 
from native types ****-****\n")
         for native in self.AST.natives:
-            if native.hasLanguage(self.generatorName()):
-                for line in native.getLanguageLines(self.generatorName()):
+            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()):
@@ -280,8 +276,8 @@
             stream.write(self.getIndent()+self.commentLineBeginWith)
             stream.write("     - with typedef (see below [if any])\n")
             for native in self.AST.natives:  
-                if native.hasLanguage(self.generatorName()):
-                   for line in native.getLanguageLines(self.generatorName()):
+                if native.hasLanguage("CXX"):
+                   for line in native.getLanguageLines("CXX"):
                        stmt = line.statement
                        # we are only interested in native statement
                        # which are not #include
@@ -552,8 +548,8 @@
         stream.write(self.getIndent() + "switch (type) {\n")
         self.indent()
         for e in self.AST.eMessageType.values:            
-            #stream.write(self.getIndent()+"case %s::%s:\n" % 
(creator[0],e.name))
-            stream.write(self.getIndent()+"case %s::%s:\n" % 
(creator[0],e.name.replace("M_","",1)))
+            if (None!=self.replacePrefix):                        
+                stream.write(self.getIndent()+"case %s::%s:\n" % 
(creator[0],e.name.replace(self.replacePrefix[0],"",1)))
             self.indent()
             if None==e.type:
                 stream.write(self.getIndent()+"throw RTIinternalError(\"%s 
message type should not be used!!\");\n"%e.name)
@@ -621,8 +617,8 @@
                 self.indent()
                 # Assign my name.
                 stream.write(self.getIndent()+"this->messageName = 
\""+msg.name+"\";\n")
-                #stream.write(self.getIndent()+"this->type = 
"+msg.name.upper().replace("NM_","NetworkMessage::")+";\n")
-                stream.write(self.getIndent()+"this->type = 
"+msg.name.upper().replace("M_","Message::",1)+";\n")
+                if (None!=self.replacePrefix):                    
+                    stream.write(self.getIndent()+"this->type = 
"+msg.name.upper().replace(self.replacePrefix[0],self.replacePrefix[1],1)+";\n")
                 # Write init value if any was provided
                 if len(msg.fields)>0:
                     self.applyToFields(stream, msg.fields, 
self.writeInitFieldStatement)                                         
@@ -690,4 +686,32 @@
                         
         self.closeNamespaces(stream)
         
+class CXXCERTIMessageGenerator(CXXCERTIGenerator):    
+    """
+    This is a C++ generator for C{MessageAST}.
+    
+    """               
+    def generatorName(cls):
+        return "CXXCERTIMessage"
+    generatorName = classmethod(generatorName)
+        
+    def __init__(self,MessageAST):
+        super(CXXCERTIMessageGenerator,self).__init__(MessageAST)   
+        self.replacePrefix = list()
+        self.replacePrefix.append("M_")
+        self.replacePrefix.append("Message::")     
                
+class CXXCERTINetworkMessageGenerator(CXXCERTIGenerator):    
+    """
+    This is a C++ generator for C{MessageAST}.
+    
+    """               
+    def generatorName(cls):
+        return "CXXCERTINetworkMessage"
+    generatorName = classmethod(generatorName)
+    
+    def __init__(self,MessageAST):
+        super(CXXCERTINetworkMessageGenerator,self).__init__(MessageAST)   
+        self.replacePrefix = list()
+        self.replacePrefix.append("NM_")
+        self.replacePrefix.append("NetworkMessage::")     




reply via email to

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