1 #ifndef LSST_UTILS_PYTHON_CACHE_H 2 #define LSST_UTILS_PYTHON_CACHE_H 5 #include "pybind11/pybind11.h" 6 #include "pybind11/stl.h" 7 #include "pybind11/functional.h" 11 namespace py = pybind11;
18 template <
typename Key,
typename Value,
typename KeyHash=boost::hash<Key>,
19 typename KeyPred=std::equal_to<Key>>
22 py::class_<Class> cls(mod, name.
c_str());
24 cls.def(py::init<std::size_t>(),
"maxElements"_a=0);
26 [](Class &
self, Key
const&
key,
std::function<Value(Key
const& key)> func) {
27 py::gil_scoped_release release;
28 return self(key, func);
29 },
"key"_a,
"func"_a);
30 cls.def(
"__getitem__", &Class::operator[]);
31 cls.def(
"add", &Class::add,
"key"_a,
"value"_a);
32 cls.def(
"size", &Class::size);
33 cls.def(
"__len__", &Class::size);
34 cls.def(
"keys", &Class::keys);
35 cls.def(
"contains", &Class::contains);
36 cls.def(
"__contains__", &Class::contains);
37 cls.def(
"capacity", &Class::capacity);
38 cls.def(
"reserve", &Class::reserve);
39 cls.def(
"flush", &Class::flush);
44 #endif // ifndef LSST_UTILS_PYTHON_CACHE_H
void declareCache(py::module &mod, std::string const &name)
Forward declarations for lsst::utils::Cache.
Cache of most recently used values.