summaryrefslogtreecommitdiff
path: root/python/generator.cpp
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2021-06-23 10:57:05 -0400
committerPeter LaFosse <peter@vector35.com>2021-09-05 10:08:09 -0400
commit3be2c0f9d4574f84869e5dcc61a91b4356391207 (patch)
tree5ae2e1bea06b9d47f7b07a89414ac79006d4643d /python/generator.cpp
parentc04f530ffe11ec62d3e23b0cbb445200ecbed026 (diff)
add a core.free_string helper
Diffstat (limited to 'python/generator.cpp')
-rw-r--r--python/generator.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/python/generator.cpp b/python/generator.cpp
index 16fa5def..8b7b202c 100644
--- a/python/generator.cpp
+++ b/python/generator.cpp
@@ -209,13 +209,16 @@ int main(int argc, char* argv[])
fprintf(out, "def cstr(var) -> Optional[str]:\n");
fprintf(out, " if var is None:\n");
fprintf(out, " return None\n");
- fprintf(out, " return var.encode(\"utf-8\")\n");
+ fprintf(out, " return var.encode(\"utf-8\")\n\n");
fprintf(out, "def pyNativeStr(arg):\n");
fprintf(out, " if isinstance(arg, str):\n");
fprintf(out, " return arg\n");
fprintf(out, " else:\n");
- fprintf(out, " return arg.decode('utf8')\n");
+ fprintf(out, " return arg.decode('utf8')\n\n");
+
+ fprintf(out, "def free_string(value:ctypes.c_char_p) -> None:\n");
+ fprintf(out, " BNFreeString(ctypes.cast(value, ctypes.POINTER(ctypes.c_byte)))\n\n");
// Create type objects
fprintf(out, "# Type definitions\n");
@@ -245,6 +248,8 @@ int main(int argc, char* argv[])
if (!stringField)
fprintf(out, "\tpass\n");
+
+ fprintf(out, "%sPointer = ctypes.POINTER(%s)\n", name.c_str(), name.c_str());
}
else if (i.second->GetClass() == EnumerationTypeClass)
{
@@ -305,7 +310,6 @@ int main(int argc, char* argv[])
if (requiresDependency)
continue;
-
fprintf(out, "%s._fields_ = [\n", name.c_str());
for (auto& j : type->GetStructure()->GetMembers())
{