LSSTApplications  17.0+11,17.0+34,17.0+56,17.0+57,17.0+59,17.0+7,17.0-1-g377950a+33,17.0.1-1-g114240f+2,17.0.1-1-g4d4fbc4+28,17.0.1-1-g55520dc+49,17.0.1-1-g5f4ed7e+52,17.0.1-1-g6dd7d69+17,17.0.1-1-g8de6c91+11,17.0.1-1-gb9095d2+7,17.0.1-1-ge9fec5e+5,17.0.1-1-gf4e0155+55,17.0.1-1-gfc65f5f+50,17.0.1-1-gfc6fb1f+20,17.0.1-10-g87f9f3f+1,17.0.1-11-ge9de802+16,17.0.1-16-ga14f7d5c+4,17.0.1-17-gc79d625+1,17.0.1-17-gdae4c4a+8,17.0.1-2-g26618f5+29,17.0.1-2-g54f2ebc+9,17.0.1-2-gf403422+1,17.0.1-20-g2ca2f74+6,17.0.1-23-gf3eadeb7+1,17.0.1-3-g7e86b59+39,17.0.1-3-gb5ca14a,17.0.1-3-gd08d533+40,17.0.1-30-g596af8797,17.0.1-4-g59d126d+4,17.0.1-4-gc69c472+5,17.0.1-6-g5afd9b9+4,17.0.1-7-g35889ee+1,17.0.1-7-gc7c8782+18,17.0.1-9-gc4bbfb2+3,w.2019.22
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