aboutsummaryrefslogtreecommitdiffstats
path: root/common/pycontainers.h
diff options
context:
space:
mode:
authorDavid Shah <davey1576@gmail.com>2019-03-25 16:24:02 +0000
committerGitHub <noreply@github.com>2019-03-25 16:24:02 +0000
commitc67b8259bb8b31ba3f6aa30c431fef222e5f2f65 (patch)
tree6f427acacd9545150ad82465dda0e6c3d130c1e2 /common/pycontainers.h
parent0d064c05f91b548638530e6e159ca9f8aa0fa352 (diff)
parent25e3350675c091c2fb54e51c9fcb7e79bbe6e279 (diff)
downloadnextpnr-c67b8259bb8b31ba3f6aa30c431fef222e5f2f65.tar.gz
nextpnr-c67b8259bb8b31ba3f6aa30c431fef222e5f2f65.tar.bz2
nextpnr-c67b8259bb8b31ba3f6aa30c431fef222e5f2f65.zip
Merge pull request #219 from daveshah1/placer_heap
HeAP-based analytical placer
Diffstat (limited to 'common/pycontainers.h')
-rw-r--r--common/pycontainers.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/common/pycontainers.h b/common/pycontainers.h
index 70f69c51..5de2f6d2 100644
--- a/common/pycontainers.h
+++ b/common/pycontainers.h
@@ -345,6 +345,12 @@ template <typename T, typename value_conv> struct map_wrapper
std::terminate();
}
+ static bool contains(wrapped_map &x, std::string const &i)
+ {
+ K k = PythonConversion::string_converter<K>().from_str(x.ctx, i);
+ return x.base.count(k);
+ }
+
static void wrap(const char *map_name, const char *kv_name, const char *kv_iter_name, const char *iter_name)
{
map_pair_wrapper<typename KV::first_type, typename KV::second_type, value_conv>::wrap(kv_name, kv_iter_name);
@@ -353,6 +359,7 @@ template <typename T, typename value_conv> struct map_wrapper
class_<wrapped_map>(map_name, no_init)
.def("__iter__", rw::iter)
.def("__len__", len)
+ .def("__contains__", contains)
.def("__getitem__", get)
.def("__setitem__", set, with_custodian_and_ward<1, 2>());
}
@@ -465,6 +472,12 @@ template <typename T> struct map_wrapper_uptr
std::terminate();
}
+ static bool contains(wrapped_map &x, std::string const &i)
+ {
+ K k = PythonConversion::string_converter<K>().from_str(x.ctx, i);
+ return x.base.count(k);
+ }
+
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);
@@ -473,6 +486,7 @@ template <typename T> struct map_wrapper_uptr
class_<wrapped_map>(map_name, no_init)
.def("__iter__", rw::iter)
.def("__len__", len)
+ .def("__contains__", contains)
.def("__getitem__", get)
.def("__setitem__", set, with_custodian_and_ward<1, 2>());
}