[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