|
1 | | -#include <reticula/type_traits.hpp> |
2 | 1 | #include <reticula/network_concepts.hpp> |
3 | 2 |
|
4 | 3 | #include "bind_core.hpp" |
@@ -119,9 +118,28 @@ nb::class_<EdgeT> define_basic_edge_concept(nb::module_& m) { |
119 | 118 | m.def(fmt::format("is_undirected_{}", |
120 | 119 | python_type_str<EdgeT>()).c_str(), |
121 | 120 | []{ return reticula::is_undirected_v<EdgeT>; }); |
| 121 | + m.def(fmt::format("is_directed_{}", |
| 122 | + python_type_str<EdgeT>()).c_str(), |
| 123 | + []{ return reticula::is_directed_v<EdgeT>; }); |
122 | 124 | m.def(fmt::format("is_dyadic_{}", |
123 | 125 | python_type_str<EdgeT>()).c_str(), |
124 | 126 | []{ return reticula::is_dyadic_v<EdgeT>; }); |
125 | 127 |
|
| 128 | + |
| 129 | + m.def("is_network_edge", |
| 130 | + [](const EdgeT&){ return reticula::network_edge<EdgeT>; }); |
| 131 | + m.def("is_static_edge", |
| 132 | + [](const EdgeT&){ return reticula::static_network_edge<EdgeT>; }); |
| 133 | + m.def("is_temporal_edge", |
| 134 | + [](const EdgeT&){ return reticula::temporal_network_edge<EdgeT>; }); |
| 135 | + m.def("is_instantaneous", |
| 136 | + [](const EdgeT&){ return reticula::is_instantaneous_v<EdgeT>; }); |
| 137 | + m.def("is_undirected", |
| 138 | + [](const EdgeT&){ return reticula::is_undirected_v<EdgeT>; }); |
| 139 | + m.def("is_directed", |
| 140 | + [](const EdgeT&){ return reticula::is_directed_v<EdgeT>; }); |
| 141 | + m.def("is_dyadic", |
| 142 | + [](const EdgeT&){ return reticula::is_dyadic_v<EdgeT>; }); |
| 143 | + |
126 | 144 | return cls; |
127 | 145 | } |
0 commit comments