lsst.daf.base  13.0-2-g167564e+10
citizen.cc
Go to the documentation of this file.
1 #include "pybind11/pybind11.h"
2 #include "pybind11/stl.h"
3 
5 
6 namespace py = pybind11;
7 
8 namespace lsst {
9 namespace daf {
10 namespace base {
11 
12 PYBIND11_PLUGIN(citizen) {
13  py::module mod("citizen");
14 
15  py::class_<Citizen, std::shared_ptr<Citizen>> cls(mod, "Citizen");
16 
17  cls.def("repr", &Citizen::repr);
18  cls.def("markPersistent", &Citizen::markPersistent);
19  cls.def_static("census", (int (*)(int, Citizen::memId)) & Citizen::census);
20  cls.def_static("census", (const std::vector<const Citizen *> *(*)()) & Citizen::census,
21  py::return_value_policy::reference);
22  /* It is strange to expose cout to Python, so instead make a new wrapper */
23  cls.def_static("census", [](Citizen::memId id) { Citizen::census(std::cout, id); });
24  // TODO: pybind11 can't handle an owning pointer to a container of non-owning pointers
25  // ::reference is a temporary workaround until we figure out a better way
26  cls.def_static("census", (std::vector<Citizen const *> const *(*)()) & Citizen::census,
27  py::return_value_policy::reference);
28  cls.def("getId", &Citizen::getId);
29  cls.def("markPersistent", &Citizen::markPersistent);
30  cls.def_static("getNextMemId", &Citizen::getNextMemId);
31  cls.def_static("setNewCallbackId", &Citizen::setNewCallbackId);
32  cls.def_static("setDeleteCallbackId", &Citizen::setDeleteCallbackId);
33 
34  return mod.ptr();
35 }
36 
37 } // base
38 } // daf
39 } // lsst
unsigned long memId
Type of the block&#39;s ID.
Definition: Citizen.h:56
void markPersistent(void)
Mark a Citizen as persistent and not destroyed until process end.
Definition: Citizen.cc:254
static memId setNewCallbackId(memId id)
Call the NewCallback when block is allocated.
Definition: Citizen.cc:376
Definition: Citizen.h:35
std::string repr() const
Return a string representation of a Citizen.
Definition: Citizen.cc:245
static memId setDeleteCallbackId(memId id)
Call the current DeleteCallback when block is deleted.
Definition: Citizen.cc:387
memId getId() const
Return the Citizen&#39;s ID.
Definition: Citizen.cc:224
static memId getNextMemId()
Return the memId of the next object to be allocated.
Definition: Citizen.cc:229
static const std::vector< const Citizen * > * census()
Return a (newly allocated) std::vector of active Citizens sorted by ID.
Definition: Citizen.cc:322
PYBIND11_PLUGIN(citizen)
Definition: citizen.cc:12