lsst.cpputils
g87389fa792+0bb42a27e1
Toggle main menu visibility
Loading...
Searching...
No Matches
include
lsst
cpputils
python
Cache.h
Go to the documentation of this file.
1
#ifndef LSST_CPPUTILS_PYTHON_CACHE_H
2
#define LSST_CPPUTILS_PYTHON_CACHE_H
3
/*
4
* LSST Data Management System
5
* See COPYRIGHT file at the top of the source tree.
6
*
7
* This product includes software developed by the
8
* LSST Project (http://www.lsst.org/).
9
*
10
* This program is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the LSST License Statement and
21
* the GNU General Public License along with this program. If not,
22
* see <http://www.lsstcorp.org/LegalNotices/>.
23
*/
24
25
#include <functional>
// for std::function
26
#include "pybind11/pybind11.h"
27
#include "pybind11/stl.h"
28
#include "pybind11/functional.h"
// for binding std::function
29
30
#include "
lsst/cpputils/Cache.h
"
31
32
namespace
py = pybind11;
33
using namespace
pybind11::literals;
34
35
namespace
lsst
{
36
namespace
cpputils
{
37
namespace
python
{
38
39
template
<
typename
Key,
typename
Value,
typename
KeyHash=boost::hash<Key>,
40
typename
KeyPred=std::equal_to<Key>>
41
void
declareCache
(py::module & mod,
std::string
const
& name) {
42
typedef
lsst::cpputils::Cache<Key, Value, KeyHash, KeyPred>
Class;
43
py::class_<Class> cls(mod, name.
c_str
());
44
45
cls.def(py::init<std::size_t>(),
"maxElements"
_a=0);
46
cls.def(
"__call__"
,
47
[](Class & self, Key
const
&
key
,
std::function
<Value(Key
const
&
key
)> func) {
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);
62
}
63
64
}}
65
}
// namespace lsst::cpputils::python
66
67
#endif
// ifndef LSST_CPPUTILS_PYTHON_CACHE_H
Cache.h
std::string
std::string::c_str
T c_str(T... args)
lsst::cpputils::Cache
Cache of most recently used values.
Definition
Cache.h:75
std::function
lsst::cpputils::python
Definition
python.h:44
lsst::cpputils::python::declareCache
void declareCache(py::module &mod, std::string const &name)
Definition
Cache.h:41
lsst::cpputils
Definition
main.dox:1
lsst
lsst::cpputils::key
Definition
Demangle.cc:63
Generated on
for lsst.cpputils by
1.17.0