]> granicus.if.org Git - python/commitdiff
Patches by Jack Jansen: new type OptionalInBuffer allows
authorGuido van Rossum <guido@python.org>
Thu, 30 Sep 1999 14:15:14 +0000 (14:15 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 30 Sep 1999 14:15:14 +0000 (14:15 +0000)
passing either a string/input buffer or None.

Tools/bgen/bgen/bgenBuffer.py
Tools/bgen/bgen/macsupport.py

index af9fb1976c73d7d4a811da81482ed81f12e2a180..9d28b80b863244b5a417946e3921eef9a383a9fc 100644 (file)
@@ -108,6 +108,14 @@ class OutputOnlyBufferMixIn(OutputOnlyMixIn):
        def declareInputBuffer(self, name):
                pass
 
+class OptionalInputBufferMixIn:
+       
+       """Add to input buffers if the buffer may be omitted: pass None in Python
+       and the C code will get a NULL pointer and zero size"""
+       
+       def getargsFormat(self):
+               return "z#"
+
 
 class FixedInputBufferType(InputOnlyBufferMixIn, FixedInputOutputBufferType):
 
@@ -119,6 +127,8 @@ class FixedInputBufferType(InputOnlyBufferMixIn, FixedInputOutputBufferType):
        def passInput(self, name):
                return "%s__in__" % name
 
+class OptionalFixedInputBufferType(OptionalInputBufferMixIn, FixedInputBufferType):
+       pass
 
 class FixedOutputBufferType(OutputOnlyBufferMixIn, FixedInputOutputBufferType):
 
@@ -147,7 +157,9 @@ class VarInputBufferType(FixedInputBufferType):
        def passInput(self, name):
                return "%s__in__, %s__len__" % (name, name)
 
-
+class OptionalVarInputBufferType(OptionalInputBufferMixIn, VarInputBufferType):
+       pass
+       
 # ----- PART 2: Structure buffers -----
 
 
index 38c9d9652e0796456819d3e717e427c4c460a902..ba2fd8fa1805cce8c74b3fd3984c2b43e184a70c 100644 (file)
@@ -84,6 +84,7 @@ OSStatus = OSErrType("OSStatus", 'l')
 # Various buffer types
 
 InBuffer = VarInputBufferType('char', 'long', 'l')             # (buf, len)
+OptionalInBuffer = OptionalVarInputBufferType('char', 'long', 'l')             # (buf, len)
 
 InOutBuffer = HeapInputOutputBufferType('char', 'long', 'l')   # (inbuf, outbuf, len)
 VarInOutBuffer = VarHeapInputOutputBufferType('char', 'long', 'l') # (inbuf, outbuf, &len)