aboutsummaryrefslogtreecommitdiffstats
path: root/common/pycontainers.h
diff options
context:
space:
mode:
authorDavid Shah <davey1576@gmail.com>2018-07-04 14:44:45 +0200
committerDavid Shah <davey1576@gmail.com>2018-07-04 14:55:24 +0200
commit46db5001234ff42cd5b94407c2122bbf0b2994df (patch)
tree51052f7886134407c8db44dd6ab596ff7e63b663 /common/pycontainers.h
parent79e91368f901343c7f0c88d5841ae231432a4c0b (diff)
downloadnextpnr-46db5001234ff42cd5b94407c2122bbf0b2994df.tar.gz
nextpnr-46db5001234ff42cd5b94407c2122bbf0b2994df.tar.bz2
nextpnr-46db5001234ff42cd5b94407c2122bbf0b2994df.zip
python: More design-related bindings, dump_design.py working again
Signed-off-by: David Shah <davey1576@gmail.com>
Diffstat (limited to 'common/pycontainers.h')
-rw-r--r--common/pycontainers.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/common/pycontainers.h b/common/pycontainers.h
index c8d2257b..260a9dd6 100644
--- a/common/pycontainers.h
+++ b/common/pycontainers.h
@@ -276,6 +276,11 @@ template <typename T, typename value_conv> struct map_wrapper
x.base[PythonConversion::string_converter<K>().from_str(x.ctx, i)] = v;
}
+ static size_t len(wrapped_map &x)
+ {
+ return x.base.size();
+ }
+
static void del(T const &x, std::string const &i)
{
K k = PythonConversion::string_converter<K>().from_str(x.ctx, i);
@@ -293,7 +298,7 @@ template <typename T, typename value_conv> struct map_wrapper
typename rw::iter_wrap().wrap(iter_name);
class_<wrapped_map>(map_name, no_init)
.def("__iter__", rw::iter)
- .def("__len__", &T::size)
+ .def("__len__", len)
.def("__getitem__", get)
.def("__setitem__", set, with_custodian_and_ward<1, 2>());
}
@@ -394,6 +399,11 @@ template <typename T> struct map_wrapper_uptr
x.base[PythonConversion::string_converter<K>().from_str(x.ctx, i)] = typename T::mapped_type(v);
}
+ static size_t len(wrapped_map &x)
+ {
+ return x.base.size();
+ }
+
static void del(T const &x, std::string const &i)
{
K k = PythonConversion::string_converter<K>().from_str(x.ctx, i);
@@ -411,7 +421,7 @@ template <typename T> struct map_wrapper_uptr
typename rw::iter_wrap().wrap(iter_name);
class_<wrapped_map>(map_name, no_init)
.def("__iter__", rw::iter)
- .def("__len__", &T::size)
+ .def("__len__", len)
.def("__getitem__", get)
.def("__setitem__", set, with_custodian_and_ward<1, 2>());
}