diff options
author | Eddie Hung <eddie@fpgeh.com> | 2019-09-27 15:14:31 -0700 |
---|---|---|
committer | Eddie Hung <eddie@fpgeh.com> | 2019-09-27 15:14:31 -0700 |
commit | 8f5710c464b2b3b91f0c7f29a9420dcb798be4c5 (patch) | |
tree | 59bde082cba0f8f76e0e297ed57980592df7e73b /misc/py_wrap_generator.py | |
parent | f1a206ba03c5b6fba2672754d09cc649a60beeb8 (diff) | |
parent | fd0e3a2c43d96ba31beede9865d5000230029994 (diff) | |
download | yosys-8f5710c464b2b3b91f0c7f29a9420dcb798be4c5.tar.gz yosys-8f5710c464b2b3b91f0c7f29a9420dcb798be4c5.tar.bz2 yosys-8f5710c464b2b3b91f0c7f29a9420dcb798be4c5.zip |
Merge remote-tracking branch 'origin/master' into xaig_dff
Diffstat (limited to 'misc/py_wrap_generator.py')
-rw-r--r-- | misc/py_wrap_generator.py | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/misc/py_wrap_generator.py b/misc/py_wrap_generator.py index 66d661fa1..2bf364470 100644 --- a/misc/py_wrap_generator.py +++ b/misc/py_wrap_generator.py @@ -508,23 +508,17 @@ class TupleTranslator(PythonDictTranslator): #Generate c++ code to translate to a boost::python::tuple @classmethod def translate_cpp(c, varname, types, prefix, ref): - text = prefix + TupleTranslator.typename + " " + varname + "___tmp = boost::python::make_tuple(" + varname + ".first, " + varname + ".second);" - return text - tmp_name = "tmp_" + str(Translator.tmp_cntr) - Translator.tmp_cntr = Translator.tmp_cntr + 1 - if ref: - text += prefix + "for(auto " + tmp_name + " : *" + varname + ")" + # if the tuple is a pair of SigSpecs (aka SigSig), then we need + # to call get_py_obj() on each item in the tuple + if types[0].name in classnames: + first_var = types[0].name + "::get_py_obj(" + varname + ".first)" else: - text += prefix + "for(auto " + tmp_name + " : " + varname + ")" - text += prefix + "{" - if types[0].name.split(" ")[-1] in primitive_types or types[0].name in enum_names: - text += prefix + "\t" + varname + "___tmp.append(" + tmp_name + ");" - elif types[0].name in known_containers: - text += known_containers[types[0].name].translate_cpp(tmp_name, types[0].cont.args, prefix + "\t", types[1].attr_type == attr_types.star) - text += prefix + "\t" + varname + "___tmp.append(" + types[0].name + "::get_py_obj(" + tmp_name + "___tmp);" - elif types[0].name in classnames: - text += prefix + "\t" + varname + "___tmp.append(" + types[0].name + "::get_py_obj(" + tmp_name + "));" - text += prefix + "}" + first_var = varname + ".first" + if types[1].name in classnames: + second_var = types[1].name + "::get_py_obj(" + varname + ".second)" + else: + second_var = varname + ".second" + text = prefix + TupleTranslator.typename + " " + varname + "___tmp = boost::python::make_tuple(" + first_var + ", " + second_var + ");" return text #Associate the Translators with their c++ type |