/Tools/bgen/bgen/bgenStringBuffer.py
http://unladen-swallow.googlecode.com/ · Python · 67 lines · 51 code · 5 blank · 11 comment · 0 complexity · 9b39154130428381c912f69a5b7c80d3 MD5 · raw file
- """Buffers used to hold null-terminated strings."""
- from bgenBuffer import FixedOutputBufferType
- from bgenStackBuffer import StackOutputBufferType
- from bgenHeapBuffer import HeapOutputBufferType
- class StringBufferMixIn:
- """Mix-in class to create various string buffer types.
- Strings are character arrays terminated by a null byte.
- (For input, this is also covered by stringptr.)
- For output, there are again three variants:
- - Fixed: size is a constant given in the documentation; or
- - Stack: size is passed to the C function but we decide on a size at
- code generation time so we can still allocate on the heap); or
- - Heap: size is passed to the C function and we let the Python caller
- pass a size.
- (Note that this doesn't cover output parameters in which a string
- pointer is returned. These are actually easier (no allocation) but far
- less common. I'll write the classes when there is demand.)
- """
- def getSizeDeclarations(self, name):
- return []
- def getAuxDeclarations(self, name):
- return []
- def getargsFormat(self):
- return "s"
- def getargsArgs(self, name):
- return "&%s__in__" % name
- def mkvalueFormat(self):
- return "s"
- def mkvalueArgs(self, name):
- return "%s__out__" % name
- class FixedOutputStringType(StringBufferMixIn, FixedOutputBufferType):
- """Null-terminated output string -- passed without size.
- Instantiate with buffer size as parameter.
- """
- class StackOutputStringType(StringBufferMixIn, StackOutputBufferType):
- """Null-terminated output string -- passed as (buffer, size).
- Instantiate with buffer size as parameter.
- """
- class HeapOutputStringType(StringBufferMixIn, HeapOutputBufferType):
- """Null-terminated output string -- passed as (buffer, size).
- Instantiate without parameters.
- Call from Python with buffer size.
- """