/Tools/bgen/bgen/bgenStackBuffer.py
http://unladen-swallow.googlecode.com/ · Python · 62 lines · 23 code · 20 blank · 19 comment · 0 complexity · 6867f16383d397d4ab85d08cf88b83b1 MD5 · raw file
- """Buffers allocated on the stack."""
- from bgenBuffer import FixedInputBufferType, FixedOutputBufferType
- class StackOutputBufferType(FixedOutputBufferType):
- """Fixed output buffer allocated on the stack -- passed as (buffer, size).
- Instantiate with the buffer size as parameter.
- """
- def passOutput(self, name):
- return "%s__out__, %s" % (name, self.size)
- class VarStackOutputBufferType(StackOutputBufferType):
- """Output buffer allocated on the stack -- passed as (buffer, &size).
- Instantiate with the buffer size as parameter.
- """
- def getSizeDeclarations(self, name):
- return []
- def getAuxDeclarations(self, name):
- return ["int %s__len__ = %s" % (name, self.size)]
- def passOutput(self, name):
- return "%s__out__, &%s__len__" % (name, name)
- def mkvalueArgs(self, name):
- return "%s__out__, (int)%s__len__" % (name, name)
- class VarVarStackOutputBufferType(VarStackOutputBufferType):
- """Output buffer allocated on the stack -- passed as (buffer, size, &size).
- Instantiate with the buffer size as parameter.
- """
- def passOutput(self, name):
- return "%s__out__, %s__len__, &%s__len__" % (name, name, name)
- class ReturnVarStackOutputBufferType(VarStackOutputBufferType):
- """Output buffer allocated on the stack -- passed as (buffer, size) -> size.
- Instantiate with the buffer size as parameter.
- The function's return value is the size.
- (XXX Should have a way to suppress returning it separately, too.)
- """
- def passOutput(self, name):
- return "%s__out__, %s__len__" % (name, name)
- def mkvalueArgs(self, name):
- return "%s__out__, (int)_rv" % name