certi-cvs
[Top][All Lists]
Advanced

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

[certi-cvs] certi/scripts GenMsgJava.py


From: certi-cvs
Subject: [certi-cvs] certi/scripts GenMsgJava.py
Date: Thu, 11 Mar 2010 12:13:28 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      10/03/11 12:13:28

Modified files:
        scripts        : GenMsgJava.py 

Log message:
        Small update of Java generator for showing how to detect "combined" 
field
        The current generator is not working yet...
        There is some missing representation and/or combine for some types in 
Java

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/scripts/GenMsgJava.py?cvsroot=certi&r1=1.2&r2=1.3

Patches:
Index: GenMsgJava.py
===================================================================
RCS file: /sources/certi/certi/scripts/GenMsgJava.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- GenMsgJava.py       6 Mar 2010 12:55:10 -0000       1.2
+++ GenMsgJava.py       11 Mar 2010 12:13:27 -0000      1.3
@@ -17,7 +17,7 @@
 ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 ## USA
 ##
-## $Id: GenMsgJava.py,v 1.2 2010/03/06 12:55:10 erk Exp $
+## $Id: GenMsgJava.py,v 1.3 2010/03/11 12:13:27 erk Exp $
 ## ----------------------------------------------------------------------------
 
 """
@@ -26,6 +26,7 @@
 """
 import logging
 import GenMsgBase
+import GenMsgAST
 import sys
 
 class JavaGenerator(GenMsgBase.CodeGenerator):
@@ -133,9 +134,11 @@
 
     def generateHeader(self, stream, factoryOnly=False):
         for native in self.AST.natives:
-            line = native.getLanguage("Java").statement
-            # we are only interested in native "include" statement
-            stream.write("Hohohoo maaary christmass" + line + "\n")
+            if native.hasLanguage("Java"):                               
+                # This an example may be it would be worth to check whether if 
the
+                # refered native types are valids?  
+                for line in native.getLanguageLines("Java"):
+                    stream.write("Found native **" + line.statement + "**\n")
 
     def prepareName(self, name):
         upperAfterScore = lambda x:__import__('re').sub(r'_(.)', lambda 
y:y.group(0).upper(), x)
@@ -148,6 +151,7 @@
             representation = self.getRepresentationFor(name)
             if representation:
                 return self.getSerializeMethodName(representation)
+        print "No serialize method name for <%s> " % name            
         return None
 
     def getDeSerializeMethodName(self, name):
@@ -205,7 +209,16 @@
             if len(msg.fields) > 0:
                 for field in msg.fields:
                     file.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)
+                    else:
+                        # combined field may be written in a specific way
+                        # or the field contained in the combined field may
+                        # be written as usual and Getter/Setter for the 
combined may be 
+                        # generated
+                        for cfield in field.fields:
+                            self.writeFieldStatement(file, cfield)
 
             file.write("\n")
             #constructor
@@ -238,7 +251,13 @@
                 file.write(self.getIndent() + 
"super.writeMessage(messageBuffer); //Header\n\n");
 
                 for field in msg.fields:
+                    # 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) % field.name + "\n")
+                    else:
+                        # FIXME TODO
+                        for cfield in field.fields:
+                            pass                    
 
                 self.unIndent()
                 file.write(self.getIndent() + "}\n\n");
@@ -249,7 +268,13 @@
                 file.write(self.getIndent() + 
"super.readMessage(messageBuffer); //Header \n\n");
 
                 for field in msg.fields:
+                    # 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) % field.name + "\n")
+                    else:
+                        # FIXME TODO
+                        for cfield in field.fields:
+                            pass                
 
                 self.unIndent()
                 file.write(self.getIndent() + "}\n\n");
@@ -266,6 +291,8 @@
 
                 #GETTERS
                 for field in msg.fields:
+                    # Combined field and "plain" field must not be treated the 
same way
+                    if not 
isinstance(field,GenMsgAST.MessageType.CombinedField):
                     file.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 " + field.name + 
";\n")
@@ -274,6 +301,8 @@
 
                 #SETTERS
                 for field in msg.fields:
+                    # Combined field and "plain" field must not be treated the 
same way
+                    if not 
isinstance(field,GenMsgAST.MessageType.CombinedField):
                     file.write(self.getIndent() + "public void set" + 
field.name[0].capitalize() + field.name[1:] + "(" + 
self.getTargetTypeName(field.typeid.name) + " new" + field.name[0].capitalize() 
+ field.name[1:] + ") {\n");
                     self.indent()
                     file.write(self.getIndent() + "this." + field.name + " = 
new" + field.name[0].capitalize() + field.name[1:] + ";\n")




reply via email to

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