From 2190f8c47e6383449987b8fd9e87711499dc2a10 Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Tue, 20 Sep 2005 21:11:19 +0000 Subject: [PATCH] Added a class MallocHeapOutputBufferType for types that are passed as &buffer, &size and allocated by the called function. --- Tools/bgen/bgen/bgenHeapBuffer.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/Tools/bgen/bgen/bgenHeapBuffer.py b/Tools/bgen/bgen/bgenHeapBuffer.py index 002a2606f6e..d677f291848 100644 --- a/Tools/bgen/bgen/bgenHeapBuffer.py +++ b/Tools/bgen/bgen/bgenHeapBuffer.py @@ -111,3 +111,32 @@ class VarVarHeapOutputBufferType(VarHeapOutputBufferType): def passOutput(self, name): return "%s__out__, %s__len__, &%s__len__" % (name, name, name) + +class MallocHeapOutputBufferType(HeapOutputBufferType): + """Output buffer allocated by the called function -- passed as (&buffer, &size). + + Instantiate without parameters. + Call from Python without parameters. + """ + + def getargsCheck(self, name): + Output("%s__out__ = NULL;", name) + + def getAuxDeclarations(self, name): + return [] + + def passOutput(self, name): + return "&%s__out__, &%s__len__" % (name, name) + + def getargsFormat(self): + return "" + + def getargsArgs(self, name): + return None + + def mkvalueFormat(self): + return "z#" + + def cleanup(self, name): + Output("if( %s__out__ ) free(%s__out__);", name, name) +