From f94f544b502c9de88807dec8205417628fe38202 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Povi=C5=A1er?= Date: Wed, 5 Apr 2023 12:36:56 +0200 Subject: [PATCH] Fix the python generator for a bunch of const cases Makes the below show up in the binding. .def("c_str", &IdString::c_str) .def("chunks", &SigSpec::chunks) .def("bits", &SigSpec::bits) .def("at", &SigSpec::at) .def("getPort", &Cell::getPort) .def("connections", &Cell::connections) .def("getParam", &Cell::getParam) .def("connections", &Module::connections) def("log_signal", YOSYS_PYTHON::log_signal); def("log_signal", YOSYS_PYTHON::log_signal); def("log_const", YOSYS_PYTHON::log_const); def("log_const", YOSYS_PYTHON::log_const); def("log_id", YOSYS_PYTHON::log_id); --- misc/py_wrap_generator.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/misc/py_wrap_generator.py b/misc/py_wrap_generator.py index 4d9a60113..ecf02e601 100644 --- a/misc/py_wrap_generator.py +++ b/misc/py_wrap_generator.py @@ -178,6 +178,8 @@ class WType: t.cont = None t.attr_type = attr_types.default if str_def.find("<") != -1:# and str_def.find("<") < str_def.find(" "): + str_def = str_def.replace("const ", "") + candidate = WContainer.from_string(str_def, containing_file, line_number) if candidate == None: return None @@ -203,8 +205,12 @@ class WType: prefix = "" + if str.startswith(str_def, "const "): + if "char_p" in str_def: + prefix = "const " + str_def = str_def[6:] if str.startswith(str_def, "unsigned "): - prefix = "unsigned " + prefix = "unsigned " + prefix str_def = str_def[9:] while str.startswith(str_def, "long "): prefix= "long " + prefix @@ -1285,7 +1291,7 @@ class WFunction: prefix = "" i = 0 for part in parts: - if part in ["unsigned", "long", "short"]: + if part in ["unsigned", "long", "short", "const"]: prefix += part + " " i += 1 else: