Patches by Jack Jansen: new type OptionalInBuffer allows
passing either a string/input buffer or None.
diff --git a/Tools/bgen/bgen/bgenBuffer.py b/Tools/bgen/bgen/bgenBuffer.py
index af9fb19..9d28b80 100644
--- a/Tools/bgen/bgen/bgenBuffer.py
+++ b/Tools/bgen/bgen/bgenBuffer.py
@@ -108,6 +108,14 @@
 	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 @@
 	def passInput(self, name):
 		return "%s__in__" % name
 
+class OptionalFixedInputBufferType(OptionalInputBufferMixIn, FixedInputBufferType):
+	pass
 
 class FixedOutputBufferType(OutputOnlyBufferMixIn, FixedInputOutputBufferType):
 
@@ -147,7 +157,9 @@
 	def passInput(self, name):
 		return "%s__in__, %s__len__" % (name, name)
 
-
+class OptionalVarInputBufferType(OptionalInputBufferMixIn, VarInputBufferType):
+	pass
+	
 # ----- PART 2: Structure buffers -----
 
 
diff --git a/Tools/bgen/bgen/macsupport.py b/Tools/bgen/bgen/macsupport.py
index 38c9d96..ba2fd8f 100644
--- a/Tools/bgen/bgen/macsupport.py
+++ b/Tools/bgen/bgen/macsupport.py
@@ -84,6 +84,7 @@
 # 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)