LSSTApplications  18.1.0
LSSTDataManagementBasePackage
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_MODULE(citizen, mod) {
13  py::class_<Citizen, std::shared_ptr<Citizen>> cls(mod, "Citizen");
14 
15  cls.def("repr", &Citizen::repr);
16  cls.def("markPersistent", &Citizen::markPersistent);
17  cls.def_static("census", (int (*)(int, Citizen::memId)) & Citizen::census);
18  cls.def_static("census", (const std::vector<const Citizen *> *(*)()) & Citizen::census,
19  py::return_value_policy::reference);
20  /* It is strange to expose cout to Python, so instead make a new wrapper */
21  cls.def_static("census", [](Citizen::memId id) { Citizen::census(std::cout, id); });
22  // TODO: pybind11 can't handle an owning pointer to a container of non-owning pointers
23  // ::reference is a temporary workaround until we figure out a better way
24  cls.def_static("census", (std::vector<Citizen const *> const *(*)()) & Citizen::census,
25  py::return_value_policy::reference);
26  cls.def("getId", &Citizen::getId);
27  cls.def("markPersistent", &Citizen::markPersistent);
28  cls.def_static("getNextMemId", &Citizen::getNextMemId);
29  cls.def_static("setNewCallbackId", &Citizen::setNewCallbackId);
30  cls.def_static("setDeleteCallbackId", &Citizen::setDeleteCallbackId);
31 }
32 
33 } // base
34 } // daf
35 } // lsst
unsigned long memId
Type of the block&#39;s ID.
Definition: Citizen.h:58
PYBIND11_MODULE(citizen, mod)
Definition: citizen.cc:12
void markPersistent(void)
Mark a Citizen as persistent and not destroyed until process end.
Definition: Citizen.cc:225
static memId setNewCallbackId(memId id)
Call the NewCallback when block is allocated.
Definition: Citizen.cc:337
A base class for image defects.
std::string repr() const
Return a string representation of a Citizen.
Definition: Citizen.cc:219
static memId setDeleteCallbackId(memId id)
Call the current DeleteCallback when block is deleted.
Definition: Citizen.cc:347
memId getId() const
Return the Citizen&#39;s ID.
Definition: Citizen.cc:206
STL class.
static memId getNextMemId()
Return the memId of the next object to be allocated.
Definition: Citizen.cc:209
static const std::vector< const Citizen * > * census()
Return a (newly allocated) std::vector of active Citizens sorted by ID.
Definition: Citizen.cc:287