1#ifndef LSST_CPPUTILS_PYTHON_CACHE_H
2#define LSST_CPPUTILS_PYTHON_CACHE_H
26#include "pybind11/pybind11.h"
27#include "pybind11/stl.h"
28#include "pybind11/functional.h"
32namespace py = pybind11;
33using namespace pybind11::literals;
39template <
typename Key,
typename Value,
typename KeyHash=boost::hash<Key>,
40 typename KeyPred=std::equal_to<Key>>
43 py::class_<Class> cls(mod, name.
c_str());
45 cls.def(py::init<std::size_t>(),
"maxElements"_a=0);
48 py::gil_scoped_release release;
49 return self(
key, func);
50 },
"key"_a,
"func"_a);
51 cls.def(
"__getitem__", &Class::operator[]);
52 cls.def(
"get", &Class::get);
53 cls.def(
"add", &Class::add,
"key"_a,
"value"_a);
54 cls.def(
"size", &Class::size);
55 cls.def(
"__len__", &Class::size);
56 cls.def(
"keys", &Class::keys);
57 cls.def(
"contains", &Class::contains);
58 cls.def(
"__contains__", &Class::contains);
59 cls.def(
"capacity", &Class::capacity);
60 cls.def(
"reserve", &Class::reserve);
61 cls.def(
"flush", &Class::flush);
65namespace utils = cpputils;
Cache of most recently used values.
void declareCache(py::module &mod, std::string const &name)
Forward declarations for lsst::cpputils::Cache.