LSSTApplications
20.0.0
LSSTDataManagementBasePackage
stack
1a1d771
Linux64
base
20.0.0
python
lsst
base
cppimport.cc
Go to the documentation of this file.
1
/*
2
* LSST Data Management System
3
* Copyright 2008-2016 AURA/LSST.
4
*
5
* This product includes software developed by the
6
* LSST Project (http://www.lsst.org/).
7
*
8
* This program is free software: you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation, either version 3 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the LSST License Statement and
19
* the GNU General Public License along with this program. If not,
20
* see <https://www.lsstcorp.org/LegalNotices/>.
21
*/
22
23
#include "pybind11/pybind11.h"
24
25
#include "
lsst/base/ModuleImporter.h
"
26
27
namespace
py
=
pybind11
;
28
29
namespace
lsst
{
30
namespace
base
{
31
32
class
PythonModuleImporter
:
public
ModuleImporter
{
33
public
:
34
static
ModuleImporter
const
*
get
() {
35
static
PythonModuleImporter
const
instance;
36
return
&instance;
37
}
38
39
private
:
40
PythonModuleImporter
() {}
41
42
protected
:
43
virtual
bool
_import
(
std::string
const
&
name
)
const
;
44
};
45
46
bool
PythonModuleImporter::_import
(
std::string
const
&
name
)
const
{
47
PyObject* mod = PyImport_ImportModule(
name
.c_str());
48
if
(mod) {
49
Py_DECREF(mod);
50
return
true
;
51
}
else
{
52
// If the Python C API call returned a null pointer, it will
53
// also have set an exception. We don't want that, because
54
// this isn't necessarily an error (that's up to the caller).
55
PyErr_Clear();
56
}
57
return
false
;
58
}
59
60
void
installPythonModuleImporter
() { ModuleImporter::install(
PythonModuleImporter::get
()); }
61
62
PYBIND11_MODULE
(cppimport, mod) {
63
lsst::base::installPythonModuleImporter
();
64
}
65
66
}
67
}
// namespace lsst::base
lsst::base::PYBIND11_MODULE
PYBIND11_MODULE(cppimport, mod)
Definition:
cppimport.cc:62
ModuleImporter.h
std::string
STL class.
base
Definition:
__init__.py:1
lsst::afw::geom.transform.transformContinued.name
string name
Definition:
transformContinued.py:32
lsst::base::PythonModuleImporter::get
static ModuleImporter const * get()
Definition:
cppimport.cc:34
lsst::base::ModuleImporter
Base class that defines an interface for importing Python modules.
Definition:
ModuleImporter.h:46
lsst::base::installPythonModuleImporter
void installPythonModuleImporter()
Definition:
cppimport.cc:60
lsst
A base class for image defects.
Definition:
imageAlgorithm.dox:1
lsst::base::PythonModuleImporter
Definition:
cppimport.cc:32
lsst::base::PythonModuleImporter::_import
virtual bool _import(std::string const &name) const
Definition:
cppimport.cc:46
pybind11
Definition:
_GenericMap.cc:40
Generated on Wed Jun 24 2020 18:10:06 for LSSTApplications by
1.8.18