summaryrefslogtreecommitdiff
path: root/python/generator.cpp
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2021-06-07 09:59:54 -0400
committerPeter LaFosse <peter@vector35.com>2021-09-05 10:08:09 -0400
commit61b4bb24e06aa955484293d35fa926c07887544b (patch)
tree29c6b7fecdac6270681260637439926ec07a259e /python/generator.cpp
parent75f2463a46cc666e87120f3a30332fa80020b62e (diff)
Add type hints to basicblock.py, lowlevelil.py, architecture.py
Diffstat (limited to 'python/generator.cpp')
-rw-r--r--python/generator.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/python/generator.cpp b/python/generator.cpp
index ed28e6f3..16fa5def 100644
--- a/python/generator.cpp
+++ b/python/generator.cpp
@@ -185,10 +185,10 @@ int main(int argc, char* argv[])
FILE* out = fopen(argv[2], "w");
FILE* enums = fopen(argv[3], "w");
- fprintf(out, "from __future__ import absolute_import\n");
fprintf(out, "import ctypes, os\n\n");
+ fprintf(out, "from typing import Optional");
fprintf(enums, "import enum");
-
+
fprintf(out, "# Load core module\n");
fprintf(out, "import platform\n");
fprintf(out, "core = None\n");
@@ -206,7 +206,16 @@ int main(int argc, char* argv[])
fprintf(out, "else:\n");
fprintf(out, "\traise Exception(\"OS not supported\")\n\n\n");
- fprintf(out, "from binaryninja import cstr, pyNativeStr\n\n\n");
+ 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, "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");
// Create type objects
fprintf(out, "# Type definitions\n");
@@ -513,23 +522,14 @@ int main(int argc, char* argv[])
fprintf(out, "\n");
}
+ fprintf(out, "\nmax_confidence = %d\n", BN_FULL_CONFIDENCE);
+
fprintf(out, "\n# Helper functions\n");
fprintf(out, "def handle_of_type(value, handle_type):\n");
fprintf(out, "\tif isinstance(value, ctypes.POINTER(handle_type)) or isinstance(value, ctypes.c_void_p):\n");
fprintf(out, "\t\treturn ctypes.cast(value, ctypes.POINTER(handle_type))\n");
fprintf(out, "\traise ValueError('expected pointer to %%s' %% str(handle_type))\n");
- // The following method is addapted from python/enum/__init__.py, lines 25-36
- fprintf(out, "\ntry:\n");
- fprintf(out, "\tbasestring\n");
- fprintf(out, "\tunicode\n");
- fprintf(out, "except NameError:\n");
- fprintf(out, "\t# In Python 2 basestring is the ancestor of both str and unicode\n");
- fprintf(out, "\t# in Python 3 it's just str, but was missing in 3.1\n");
- fprintf(out, "\t# In Python 3 unicode no longer exists (it's just str)\n");
- fprintf(out, "\tbasestring = str\n");
- fprintf(out, "\tunicode = str\n");
-
fprintf(out, "\n# Set path for core plugins\n");
fprintf(out, "BNSetBundledPluginDirectory(os.path.join(_base_path, \"plugins\"))\n");