aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Shah <davey1576@gmail.com>2018-07-03 11:04:55 +0200
committerDavid Shah <davey1576@gmail.com>2018-07-04 14:55:24 +0200
commit3e8bdb5cbdc50a38ca12fa4509261da5080209a1 (patch)
tree6bcc5095b951c3e3cec3d2e4e2c7ee160ab8b7b6
parenta382d906efda9b096c4e841ebcff83be85fa3e5c (diff)
downloadnextpnr-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>
-rw-r--r--common/pybindings.cc10
-rw-r--r--common/pycontainers.h6
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)