certi-cvs
[Top][All Lists]
Advanced

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

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


From: certi-cvs
Subject: [certi-cvs] certi/scripts GenMsgCXX.py GenerateMessages.py ...
Date: Thu, 10 Jun 2010 07:30:47 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      10/06/10 07:30:47

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

Log message:
        Merge from Lucas ALBA work
         - make receiver optional

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgCXX.py?cvsroot=certi&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenerateMessages.py?cvsroot=certi&r1=1.38&r2=1.39
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgAST.py?cvsroot=certi&r1=1.9&r2=1.10

Patches:
Index: GenMsgCXX.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgCXX.py,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- GenMsgCXX.py        9 Jun 2010 15:25:07 -0000       1.15
+++ GenMsgCXX.py        10 Jun 2010 07:30:47 -0000      1.16
@@ -17,7 +17,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgCXX.py,v 1.15 2010/06/09 15:25:07 erk Exp $
+## $Id: GenMsgCXX.py,v 1.16 2010/06/10 07:30:47 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -446,6 +446,7 @@
                stream.write(" ,%s" %(exception))
            stream.write("); \n")
            
+           if self.AST.factory.hasFactoryReceiver():
             stream.write(self.getIndent()+"static %s* %s(%s stream) throw ("% 
self.AST.factory.receiver)
            stream.write("%s" %(self.exception[0]))
            for exception in self.exception[1:]:
@@ -703,6 +704,8 @@
                     stream.write(self.getIndent()+"this->messageName = 
\""+msg.name+"\";\n")
                     if (None!=self.replacePrefix):                    
                         stream.write(self.getIndent()+"this->type = 
"+msg.name.upper().replace(self.replacePrefix[0],self.replacePrefix[1],1)+";\n")
+                   else:
+                       stream.write(self.getIndent()+"this->type = 
"+msg.name.upper()+";\n")
                         
                 # Write init value if any was provided
                 if len(msg.fields)>0:
@@ -767,6 +770,7 @@
             # begin creator                                                    
  
             self.writeFactoryCreator(stream)
             # begin receiver
+           if self.AST.factory.hasFactoryReceiver():
             self.writeFactoryReceiver(stream)                                  
                          
                         
         self.closeNamespaces(stream)

Index: GenerateMessages.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenerateMessages.py,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- GenerateMessages.py 9 Jun 2010 15:25:07 -0000       1.38
+++ GenerateMessages.py 10 Jun 2010 07:30:47 -0000      1.39
@@ -19,7 +19,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenerateMessages.py,v 1.38 2010/06/09 15:25:07 erk Exp $
+## $Id: GenerateMessages.py,v 1.39 2010/06/10 07:30:47 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -311,10 +311,20 @@
     p[0]=GenMsgAST.Version((p[2],p[4]))
 
 def p_factory(p):
-    '''factory : FACTORY ID LBRACE factory_creator factory_receiver RBRACE'''
+    '''factory : FACTORY ID LBRACE factory_creator factory_receiver RBRACE
+               | FACTORY ID LBRACE factory_creator RBRACE'''
+    
+    
+    if len(p)==7:
     p[0] = GenMsgAST.Factory(p[2],p[4],p[5])
     p[0].linespan = (p.linespan(1)[0],p.linespan(6)[1])
 
+    elif len(p)==6:
+       p[0] = GenMsgAST.Factory(p[2],p[4])
+        p[0].linespan = (p.linespan(1)[0],p.linespan(5)[1])
+       
+    
+
 def p_factory_creator(p):
     '''factory_creator : FACTORY_CREATOR ID ID LPAREN ID RPAREN'''
     p[0]=(p[2],p[3],p[5])

Index: GenMsgAST.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgAST.py,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- GenMsgAST.py        9 Jun 2010 15:27:34 -0000       1.9
+++ GenMsgAST.py        10 Jun 2010 07:30:47 -0000      1.10
@@ -17,7 +17,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgAST.py,v 1.9 2010/06/09 15:27:34 erk Exp $
+## $Id: GenMsgAST.py,v 1.10 2010/06/10 07:30:47 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -340,11 +340,17 @@
     A C{Factory} is anC{ASTElement} whose
     name is a C{string}.
     """
-    def __init__(self,name,creator,receiver):        
+    def __init__(self,name,creator,receiver=None):        
         super(Factory,self).__init__(name)
         self.creator  = creator
         self.receiver = receiver
           
+    def hasFactoryCreator(self):
+       return self.creator != None
+    
+    def hasFactoryReceiver(self):
+       return self.receiver != None
+          
     def __repr__(self):
         res="factory %s" % self.name
         res=res+ ", creator = %s %s(%s)" % creator
@@ -597,7 +603,7 @@
                     msg.merge = AST.getType(msg.merge)
                     
         # check the factory methods
-        if AST.hasFactory():                        
+        if AST.factory.hasFactoryCreator():                        
             if not AST.isDefined(AST.factory.creator[0]):
                 self.logger.fatal("The return type <%s> of the creator factory 
method is unknown (not a builtin, nor native, nor message)" % 
AST.factory.creator[0])
                 self.logger.fatal(" --> Check lines (%d,%d)" % 
(AST.factory.linespan) + " of <%s>" % AST.name )                
@@ -605,7 +611,10 @@
             if not AST.isDefined(AST.factory.creator[2]):
                 self.logger.fatal("The parameter type <%s> of the creator 
factory method is unknown (not a builtin, nor native, nor message)" % 
AST.factory.creator[2])
                 self.logger.fatal(" --> Check lines (%d,%d)" % 
(AST.factory.linespan) + " of <%s>" % AST.name )                
+               
                 return
+           
+       if AST.factory.hasFactoryReceiver():
             if not AST.isDefined(AST.factory.receiver[0]):
                 self.logger.fatal("The return type <%s> of the receiver 
factory method is unknown (not a builtin, nor native, nor message)" % 
AST.factory.receiver[0])
                 self.logger.fatal(" --> Check lines (%d,%d)" % 
(AST.factory.linespan) + " of <%s>" % AST.name )                



reply via email to

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