Cantera
Install
User Guide
Examples
Reference
Develop
Community
4.0.0a2
Toggle main menu visibility
Loading...
Searching...
No Matches
PythonHandle.h
Go to the documentation of this file.
1
//! @file PythonHandle.h
2
3
#ifndef CT_PYTHONHANDLE_H
4
#define CT_PYTHONHANDLE_H
5
6
// This file is part of Cantera. See License.txt in the top-level directory or
7
// at https://cantera.org/license.txt for license and copyright information.
8
9
#include "Python.h"
10
#include "
cantera/base/ExtensionManager.h
"
11
12
namespace
Cantera
13
{
14
15
//! Class that holds an owned or weak (borrowed) reference to a Python object
16
class
PythonHandle
:
public
ExternalHandle
17
{
18
public
:
19
//! Create a handle to hold a Python object
20
//! @param obj The Python object to be held
21
//! @param weak `true` if this is a weak reference to the Python object and this
22
//! handle is not responsible for deleting the Python object, or `false` if this
23
//! handle should own a reference to the Python object
24
PythonHandle
(PyObject* obj,
bool
weak) : m_obj(obj), m_weak(weak) {
25
if
(!weak) {
26
Py_XINCREF(obj);
27
}
28
}
29
PythonHandle
(
const
PythonHandle
&) =
delete
;
30
PythonHandle
& operator=(
const
PythonHandle
&) =
delete
;
31
32
~PythonHandle
() {
33
if
(!m_weak) {
34
Py_XDECREF(m_obj);
35
}
36
}
37
38
void
*
get
()
override
{
39
return
m_obj;
40
}
41
42
private
:
43
PyObject* m_obj;
44
bool
m_weak;
45
};
46
47
}
48
49
#endif
ExtensionManager.h
Cantera::PythonHandle
Class that holds an owned or weak (borrowed) reference to a Python object.
Definition
PythonHandle.h:17
Cantera::PythonHandle::PythonHandle
PythonHandle(PyObject *obj, bool weak)
Create a handle to hold a Python object.
Definition
PythonHandle.h:24
Cantera::PythonHandle::get
void * get() override
Get the underlying external object.
Definition
PythonHandle.h:38
Cantera
Namespace for the Cantera kernel.
Definition
AnyMap.cpp:595
include
cantera
extensions
PythonHandle.h
Generated by
1.17.0