@@ -38,19 +38,26 @@ def __init__(self, size, datatype = 'char', sizetype = 'int', sizeformat = None)
3838 self .sizeformat = sizeformat or type2format [sizetype ]
3939 self .label_needed = 0
4040
41- def getArgDeclarations (self , name , reference = False ):
41+ def getArgDeclarations (self , name , reference = False , constmode = False ):
4242 if reference :
4343 raise RuntimeError , "Cannot pass buffer types by reference"
44- return (self .getBufferDeclarations (name ) +
44+ return (self .getBufferDeclarations (name , constmode ) +
4545 self .getSizeDeclarations (name ))
4646
47- def getBufferDeclarations (self , name ):
48- return self .getInputBufferDeclarations (name ) + self .getOutputBufferDeclarations (name )
47+ def getBufferDeclarations (self , name , constmode = False ):
48+ return self .getInputBufferDeclarations (name , constmode ) + \
49+ self .getOutputBufferDeclarations (name , constmode )
4950
50- def getInputBufferDeclarations (self , name ):
51- return ["%s *%s__in__" % (self .datatype , name )]
51+ def getInputBufferDeclarations (self , name , constmode = False ):
52+ if constmode :
53+ const = "const "
54+ else :
55+ const = ""
56+ return ["%s%s *%s__in__" % (const , self .datatype , name )]
5257
53- def getOutputBufferDeclarations (self , name ):
58+ def getOutputBufferDeclarations (self , name , constmode = False ):
59+ if constmode :
60+ raise RuntimeError , "Cannot use const output buffer"
5461 return ["%s %s__out__[%s]" % (self .datatype , name , self .size )]
5562
5663 def getSizeDeclarations (self , name ):
@@ -105,13 +112,13 @@ def passOutput(self, name):
105112
106113class InputOnlyBufferMixIn (InputOnlyMixIn ):
107114
108- def getOutputBufferDeclarations (self , name ):
115+ def getOutputBufferDeclarations (self , name , constmode = False ):
109116 return []
110117
111118
112119class OutputOnlyBufferMixIn (OutputOnlyMixIn ):
113120
114- def getInputBufferDeclarations (self , name ):
121+ def getInputBufferDeclarations (self , name , constmode = False ):
115122 return []
116123
117124class OptionalInputBufferMixIn :
@@ -186,16 +193,22 @@ def __init__(self, type):
186193 FixedInputOutputBufferType .__init__ (self , "sizeof(%s)" % type )
187194 self .typeName = self .type = type
188195
189- def getInputBufferDeclarations (self , name ):
190- return ["%s *%s__in__" % (self .type , name )]
196+ def getInputBufferDeclarations (self , name , constmode = False ):
197+ if constmode :
198+ const = "const "
199+ else :
200+ const = ""
201+ return ["%s%s *%s__in__" % (const , self .type , name )]
191202
192203 def getSizeDeclarations (self , name ):
193204 return []
194205
195206 def getAuxDeclarations (self , name ):
196207 return ["int %s__in_len__" % (name )]
197208
198- def getOutputBufferDeclarations (self , name ):
209+ def getOutputBufferDeclarations (self , name , constmode = False ):
210+ if constmode :
211+ raise RuntimeError , "Cannot use const output buffer"
199212 return ["%s %s__out__" % (self .type , name )]
200213
201214 def getargsArgs (self , name ):
0 commit comments