1+ /*
2+ * Copyright (c) 2019 - 2026 Geode-solutions
3+ *
4+ * Permission is hereby granted, free of charge, to any person obtaining a copy
5+ * of this software and associated documentation files (the "Software"), to deal
6+ * in the Software without restriction, including without limitation the rights
7+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8+ * copies of the Software, and to permit persons to whom the Software is
9+ * furnished to do so, subject to the following conditions:
10+ *
11+ * The above copyright notice and this permission notice shall be included in
12+ * all copies or substantial portions of the Software.
13+ *
14+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20+ * SOFTWARE.
21+ *
22+ */
23+ #pragma once
24+
25+ #include " ../../common.hpp"
26+
27+ #include < geode/stochastic/spatial/object_sets.hpp>
28+
29+ namespace geode
30+ {
31+ template < typename object_type >
32+ void define_object_sets_impl (
33+ pybind11::module_& module , const std::string& typestr )
34+ {
35+ using ObjectSets = geode::ObjectSets< object_type >;
36+ const auto pyclass_name = absl::StrCat ( typestr, " ObjectSets" );
37+
38+ pybind11::class_< ObjectSets >( module , pyclass_name.c_str () )
39+ .def ( pybind11::init<>() )
40+ .def ( " nb_sets" , &ObjectSets::nb_sets )
41+ .def ( " nb_objects" , &ObjectSets::nb_objects );
42+ }
43+
44+ void define_spatial_domain ( pybind11::module & module )
45+ {
46+ define_object_sets_impl< Point2D >( module , " Point2D" );
47+ define_object_sets_impl< Point3D >( module , " Point3D" );
48+ define_object_sets_impl< OwnerSegment2D >( module , " Segment2D" );
49+ }
50+ } // namespace geode
0 commit comments