[Python-checkins] python/dist/src/Tools/bgen/bgen bgenBuffer.py, 1.9, 1.10 bgenHeapBuffer.py, 1.5, 1.6 bgenStackBuffer.py, 1.3, 1.4 bgenStringBuffer.py, 1.3, 1.4 bgenType.py, 1.14, 1.15 bgenVariable.py, 1.5, 1.6

jackjansen@users.sourceforge.net jackjansen at users.sourceforge.net
Wed Jun 22 22:35:26 CEST 2005


Update of /cvsroot/python/python/dist/src/Tools/bgen/bgen
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25145

Modified Files:
	bgenBuffer.py bgenHeapBuffer.py bgenStackBuffer.py 
	bgenStringBuffer.py bgenType.py bgenVariable.py 
Log Message:
Revamped type declaration so the basic routines return a list of strings.
This allows variables to be declared as formal arguments. The bgenType.declare
method now simply outputs all declarations on separate lines ending
in semicolons.


Index: bgenBuffer.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/bgenBuffer.py,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- bgenBuffer.py	18 Jul 2004 06:02:01 -0000	1.9
+++ bgenBuffer.py	22 Jun 2005 20:35:23 -0000	1.10
@@ -38,23 +38,25 @@
         self.sizeformat = sizeformat or type2format[sizetype]
         self.label_needed = 0
 
-    def declare(self, name):
-        self.declareBuffer(name)
-        self.declareSize(name)
+    def getDeclarations(self, name, reference=False):
+        if reference:
+            raise RuntimeError, "Cannot pass buffer types by reference"
+        return self.getBufferDeclarations(name) + self.getSizeDeclarations(name)
 
-    def declareBuffer(self, name):
-        self.declareInputBuffer(name)
-        self.declareOutputBuffer(name)
+    def getBufferDeclarations(self, name):
+        return self.getInputBufferDeclarations(name) + self.getOutputBufferDeclarations(name)
 
-    def declareInputBuffer(self, name):
-        Output("%s *%s__in__;", self.datatype, name)
+    def getInputBufferDeclarations(self, name):
+        return ["%s *%s__in__" % (self.datatype, name)]
 
-    def declareOutputBuffer(self, name):
-        Output("%s %s__out__[%s];", self.datatype, name, self.size)
+    def getOutputBufferDeclarations(self, name):
+        return ["%s %s__out__[%s]" % (self.datatype, name, self.size)]
 
-    def declareSize(self, name):
-        Output("%s %s__len__;", self.sizetype, name)
-        Output("int %s__in_len__;", name)
+    def getSizeDeclarations(self, name):
+        return [
+            "%s %s__len__" %(self.sizetype, name),
+            "int %s__in_len__" %(name)
+            ]
 
     def getargsFormat(self):
         return "s#"
@@ -102,14 +104,14 @@
 
 class InputOnlyBufferMixIn(InputOnlyMixIn):
 
-    def declareOutputBuffer(self, name):
-        pass
+    def getOutputBufferDeclarations(self, name):
+        return []
 
 
 class OutputOnlyBufferMixIn(OutputOnlyMixIn):
 
-    def declareInputBuffer(self, name):
-        pass
+    def getInputBufferDeclarations(self, name):
+        return []
 
 class OptionalInputBufferMixIn:
 
@@ -183,14 +185,14 @@
         FixedInputOutputBufferType.__init__(self, "sizeof(%s)" % type)
         self.typeName = self.type = type
 
-    def declareInputBuffer(self, name):
-        Output("%s *%s__in__;", self.type, name)
+    def getInputBufferDeclarations(self, name):
+        return ["%s *%s__in__" % (self.type, name)]
 
-    def declareSize(self, name):
-        Output("int %s__in_len__;", name)
+    def getSizeDeclarations(self, name):
+        return ["int %s__in_len__" % (name)]
 
-    def declareOutputBuffer(self, name):
-        Output("%s %s__out__;", self.type, name)
+    def getOutputBufferDeclarations(self, name):
+        return ["%s %s__out__" % (self.type, name)]
 
     def getargsArgs(self, name):
         return "(char **)&%s__in__, &%s__in_len__" % (name, name)
@@ -243,8 +245,8 @@
     Instantiate with the struct type as parameter.
     """
 
-    def declareSize(self, name):
-        pass
+    def getSizeDeclarations(self, name):
+        return []
 
     def passOutput(self, name):
         return "&%s__out__" % name
@@ -257,8 +259,8 @@
     Instantiate with the struct type as parameter.
     """
 
-    def declareSize(self, name):
-        pass
+    def getSizeDeclarations(self, name):
+        return []
 
     def passOutput(self, name):
         return "%s__out__" % name

Index: bgenHeapBuffer.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/bgenHeapBuffer.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- bgenHeapBuffer.py	18 Jul 2004 06:02:01 -0000	1.5
+++ bgenHeapBuffer.py	22 Jun 2005 20:35:23 -0000	1.6
@@ -16,8 +16,8 @@
     def __init__(self, datatype = 'char', sizetype = 'int', sizeformat = None):
         FixedInputOutputBufferType.__init__(self, "0", datatype, sizetype, sizeformat)
 
-    def declareOutputBuffer(self, name):
-        Output("%s *%s__out__;", self.datatype, name)
+    def getOutputBufferDeclarations(self, name):
+        return ["%s *%s__out__" % (self.datatype, name)]
 
     def getargsCheck(self, name):
         Output("if ((%s__out__ = malloc(%s__in_len__)) == NULL)", name, name)
@@ -74,8 +74,8 @@
     Call from Python with buffer size.
     """
 
-    def declareInputBuffer(self, name):
-        pass
+    def getInputBufferDeclarations(self, name):
+        return []
 
     def getargsFormat(self):
         return "i"

Index: bgenStackBuffer.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/bgenStackBuffer.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- bgenStackBuffer.py	19 Jan 2003 21:53:57 -0000	1.3
+++ bgenStackBuffer.py	22 Jun 2005 20:35:23 -0000	1.4
@@ -22,8 +22,8 @@
     Instantiate with the buffer size as parameter.
     """
 
-    def declareSize(self, name):
-        Output("int %s__len__ = %s;", name, self.size)
+    def getSizeDeclarations(self, name):
+        return ["int %s__len__ = %s" % (name, self.size)]
 
     def passOutput(self, name):
         return "%s__out__, &%s__len__" % (name, name)

Index: bgenStringBuffer.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/bgenStringBuffer.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- bgenStringBuffer.py	18 Jul 2004 06:02:01 -0000	1.3
+++ bgenStringBuffer.py	22 Jun 2005 20:35:23 -0000	1.4
@@ -23,8 +23,8 @@
     less common.  I'll write the classes when there is demand.)
     """
 
-    def declareSize(self, name):
-        pass
+    def getSizeDeclarations(self, name):
+        return []
 
     def getargsFormat(self):
         return "s"

Index: bgenType.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/bgenType.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -d -r1.14 -r1.15
--- bgenType.py	16 Jun 2005 21:26:23 -0000	1.14
+++ bgenType.py	22 Jun 2005 20:35:23 -0000	1.15
@@ -24,15 +24,16 @@
 
         Example: int.declare('spam') prints "int spam;"
         """
-        Output("%s;", self.getDeclaration(name, reference))
+        for decl in self.getDeclarations(name, reference):
+            Output("%s;", decl)
 
-    def getDeclaration(self, name, reference=False):
+    def getDeclarations(self, name, reference=False):
         """Return a string declaring a variable or argument, without
         any syntactic adornment"""
         if reference:
-            return "%s& %s" % (self.typeName, name)
+            return ["%s& %s" % (self.typeName, name)]
         else:
-            return "%s %s" % (self.typeName, name)
+            return ["%s %s" % (self.typeName, name)]
             
     def getargs(self):
         return self.getargsFormat(), self.getargsArgs()
@@ -185,9 +186,9 @@
     def __init__(self, substitute):
         self.substitute = substitute
         self.typeName = None    # Don't show this argument in __doc__ string
-
-    def declare(self, name, reference=False):
-        pass
+        
+    def getDeclarations(self, name, reference=False):
+        return []
 
     def getargsFormat(self):
         return ""

Index: bgenVariable.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/bgen/bgen/bgenVariable.py,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- bgenVariable.py	21 Jun 2005 20:54:51 -0000	1.5
+++ bgenVariable.py	22 Jun 2005 20:35:23 -0000	1.6
@@ -45,11 +45,11 @@
         elif self.flags != SelfMode:
             self.type.declare(self.name)
             
-    def getDeclaration(self):
+    def getDeclarations(self):
         """Return the unadorned declaration of the variable,
         suitable for use in a formal parameter list."""
         refmode = (self.flags & RefMode)
-        return self.type.getDeclaration(self.name, reference=refmode)
+        return self.type.getDeclarations(self.name, reference=refmode)
 
     def getargsFormat(self):
         """Call the type's getargsFormatmethod."""



More information about the Python-checkins mailing list