diff options
author | David Shah <davey1576@gmail.com> | 2018-07-03 11:04:55 +0200 |
---|---|---|
committer | David Shah <davey1576@gmail.com> | 2018-07-04 14:55:24 +0200 |
commit | 3e8bdb5cbdc50a38ca12fa4509261da5080209a1 (patch) | |
tree | 6bcc5095b951c3e3cec3d2e4e2c7ee160ab8b7b6 /common | |
parent | a382d906efda9b096c4e841ebcff83be85fa3e5c (diff) | |
download | nextpnr-3e8bdb5cbdc50a38ca12fa4509261da5080209a1.tar.gz nextpnr-3e8bdb5cbdc50a38ca12fa4509261da5080209a1.tar.bz2 nextpnr-3e8bdb5cbdc50a38ca12fa4509261da5080209a1.zip |
python: New wrapper system working for unique_ptr maps
Signed-off-by: David Shah <davey1576@gmail.com>
Diffstat (limited to 'common')
-rw-r--r-- | common/pybindings.cc | 10 | ||||
-rw-r--r-- | common/pycontainers.h | 6 |
2 files changed, 11 insertions, 5 deletions
diff --git a/common/pybindings.cc b/common/pybindings.cc index b15a6c79..e776e33a 100644 --- a/common/pybindings.cc +++ b/common/pybindings.cc @@ -63,6 +63,8 @@ Context *load_design_shim(std::string filename, ArchArgs args) BOOST_PYTHON_MODULE(MODULE_NAME) { + using namespace PythonConversion; + class_<GraphicElement>("GraphicElement") .def_readwrite("type", &GraphicElement::type) .def_readwrite("x1", &GraphicElement::x1) @@ -95,14 +97,14 @@ BOOST_PYTHON_MODULE(MODULE_NAME) .def_readwrite("net", &PortInfo::net) .def_readwrite("type", &PortInfo::type); - class_<CellInfo, CellInfo *>("CellInfo") + /*class_<CellInfo, CellInfo *>("CellInfo") .def_readwrite("name", &CellInfo::name) .def_readwrite("type", &CellInfo::type) .def_readwrite("ports", &CellInfo::ports) .def_readwrite("attrs", &CellInfo::attrs) .def_readwrite("params", &CellInfo::params) .def_readwrite("bel", &CellInfo::bel) - .def_readwrite("pins", &CellInfo::pins); + .def_readwrite("pins", &CellInfo::pins);*/ // WRAP_MAP(decltype(CellInfo::ports), "IdPortMap"); // WRAP_MAP(decltype(CellInfo::pins), "IdIdMap"); @@ -114,6 +116,10 @@ BOOST_PYTHON_MODULE(MODULE_NAME) // WRAP_MAP_UPTR(decltype(Context::nets), "IdNetMap"); // WRAP_MAP_UPTR(decltype(Context::cells), "IdCellMap"); + auto ci_cls = class_<ContextualWrapper<CellInfo&>>("CellInfo", no_init); + readonly_wrapper<CellInfo&, typeof(&CellInfo::type), &CellInfo::type, conv_to_str<IdString>>::def_wrap(ci_cls, + "type"); + def("parse_json", parse_json_shim); def("load_design", load_design_shim, return_value_policy<manage_new_object>()); diff --git a/common/pycontainers.h b/common/pycontainers.h index 845c2847..0257e9e4 100644 --- a/common/pycontainers.h +++ b/common/pycontainers.h @@ -342,7 +342,7 @@ template <typename T1, typename T2> struct map_pair_wrapper_uptr static void wrap(const char *pair_name, const char *iter_name) { pair_iterator_wrapper::wrap(iter_name); - class_<wrapped_pair, boost::noncopyable>(pair_name, no_init) + class_<wrapped_pair>(pair_name, no_init) .def("__iter__", iter) .def("__len__", len) .def("__getitem__", get) @@ -390,9 +390,9 @@ template <typename T> struct map_wrapper_uptr static void wrap(const char *map_name, const char *kv_name, const char *kv_iter_name, const char *iter_name) { map_pair_wrapper_uptr<typename KV::first_type, typename KV::second_type>::wrap(kv_name, kv_iter_name); - typedef range_wrapper<T, return_value_policy<return_by_value>, PythonConversion::wrap_context<KV &>> rw; + typedef range_wrapper<T&, return_value_policy<return_by_value>, PythonConversion::wrap_context<KV &>> rw; typename rw::iter_wrap().wrap(iter_name); - class_<wrapped_map, boost::noncopyable>(map_name, no_init) + class_<wrapped_map>(map_name, no_init) .def("__iter__", rw::iter) .def("__len__", &T::size) .def("__getitem__", get) |