#include "common.h"
#include "../pytypes.h"
#include <exception>
#include <mutex>
#include <thread>
Go to the source code of this file.
◆ PYBIND11_BUILD_ABI
#define PYBIND11_BUILD_ABI "" |
On Linux/OSX, changes in GXX_ABI_VERSION indicate ABI incompatibility. On MSVC, changes in _MSC_VER may indicate ABI incompatibility (#2898).
Definition at line 301 of file internals.h.
◆ PYBIND11_BUILD_TYPE
#define PYBIND11_BUILD_TYPE "" |
On MSVC, debug and release builds are not ABI-compatible!
Definition at line 256 of file internals.h.
◆ PYBIND11_COMPILER_TYPE
#define PYBIND11_COMPILER_TYPE "_unknown" |
Let's assume that different compilers are ABI-incompatible. A user can manually set this string if they know their compiler is compatible.
Definition at line 278 of file internals.h.
◆ PYBIND11_INTERNALS_ID
#define PYBIND11_INTERNALS_ID |
◆ PYBIND11_INTERNALS_KIND
#define PYBIND11_INTERNALS_KIND "" |
◆ PYBIND11_INTERNALS_VERSION
#define PYBIND11_INTERNALS_VERSION 4 |
Tracks the internals
and type_info
ABI version independent of the main library version.
Some portions of the code use an ABI that is conditional depending on this version number. That allows ABI-breaking changes to be "pre-implemented". Once the default version number is incremented, the conditional logic that no longer applies can be removed. Additionally, users that need not maintain ABI compatibility can increase the version number in order to take advantage of any functionality/efficiency improvements that depend on the newer ABI.
WARNING: If you choose to manually increase the ABI version, note that pybind11 may not be tested as thoroughly with a non-default ABI version, and further ABI-incompatible changes may be made before the ABI is officially changed to the new version.
Definition at line 44 of file internals.h.
◆ PYBIND11_LOCK_INTERNALS
◆ PYBIND11_MODULE_LOCAL_ID
#define PYBIND11_MODULE_LOCAL_ID |
◆ PYBIND11_STDLIB
#define PYBIND11_STDLIB "" |
◆ PYBIND11_TLS_DELETE_VALUE
#define PYBIND11_TLS_DELETE_VALUE |
( |
|
key | ) |
PyThread_tss_set((key), nullptr) |
◆ PYBIND11_TLS_FREE
#define PYBIND11_TLS_FREE |
( |
|
key | ) |
PyThread_tss_free(key) |
◆ PYBIND11_TLS_GET_VALUE
#define PYBIND11_TLS_GET_VALUE |
( |
|
key | ) |
PyThread_tss_get((key)) |
◆ PYBIND11_TLS_KEY_CREATE
#define PYBIND11_TLS_KEY_CREATE |
( |
|
var | ) |
(((var) = PyThread_tss_alloc()) != nullptr && (PyThread_tss_create((var)) == 0)) |
◆ PYBIND11_TLS_KEY_INIT
#define PYBIND11_TLS_KEY_INIT |
( |
|
var | ) |
Py_tss_t *var = nullptr; |
◆ PYBIND11_TLS_KEY_REF
#define PYBIND11_TLS_KEY_REF Py_tss_t * |
◆ PYBIND11_TLS_REPLACE_VALUE
#define PYBIND11_TLS_REPLACE_VALUE |
( |
|
key, |
|
|
|
value |
|
) |
| PyThread_tss_set((key), (value)) |
◆ ExceptionTranslator
◆ instance_map
◆ type_map
template<typename value_type >
◆ c_str()
template<typename... Args>
const char* c_str |
( |
Args &&... |
args | ) |
|
Constructs a std::string with the given arguments, stores it in internals
, and returns its c_str()
. Such strings objects have a long storage duration – the internal strings are only cleared when the program exits or after interpreter shutdown (when embedding), and so are suitable for c-style strings needed by Python internals (such as PyTypeObject's tp_name).
Definition at line 684 of file internals.h.
◆ get_function_record_capsule_name()
const char* get_function_record_capsule_name |
( |
| ) |
|
|
inline |
◆ get_internals()
Return a reference to the current internals
data.
Definition at line 483 of file internals.h.
◆ get_internals_obj_from_state_dict()
object get_internals_obj_from_state_dict |
( |
handle |
state_dict | ) |
|
|
inline |
◆ get_internals_pp()
Each module locally stores a pointer to the internals
data. The data itself is shared among modules with the same PYBIND11_INTERNALS_ID
.
Definition at line 321 of file internals.h.
◆ get_internals_pp_from_capsule()
◆ get_local_internals()
Works like get_internals
, but for things which are locally registered.
Definition at line 606 of file internals.h.
◆ get_or_create_shared_data()
template<typename T >
T& get_or_create_shared_data |
( |
const std::string & |
name | ) |
|
Returns a typed reference to a shared data entry (by using get_shared_data()
) if such entry exists. Otherwise, a new object of default-constructible type T
is added to the shared data under the given name and a reference to it is returned.
Definition at line 737 of file internals.h.
◆ get_python_state_dict()
object get_python_state_dict |
( |
| ) |
|
|
inline |
◆ get_shared_data()
Returns a named pointer that is shared among all extension modules (using the same pybind11 version) running in the current interpreter. Names starting with underscores are reserved for internal usage. Returns nullptr
if no matching entry was found.
Definition at line 718 of file internals.h.
◆ handle_nested_exception()
template<class T , enable_if_t< std::is_same< std::nested_exception, remove_cvref_t< T >>::value, int > = 0>
bool handle_nested_exception |
( |
const T & |
exc, |
|
|
const std::exception_ptr & |
p |
|
) |
| |
◆ is_function_record_capsule()
bool is_function_record_capsule |
( |
const capsule & |
cap | ) |
|
|
inline |
◆ make_default_metaclass()
PyTypeObject* make_default_metaclass |
( |
| ) |
|
|
inline |
This metaclass is assigned by default to all pybind11 types and is required in order for static properties to function correctly. Users may override this using py::metaclass
. Return value: New reference.
Definition at line 249 of file class.h.
◆ make_object_base_type()
PyObject* make_object_base_type |
( |
PyTypeObject * |
metaclass | ) |
|
|
inline |
Create the type which can be used as a common base for all classes. This is needed in order to satisfy Python's requirements for multiple inheritance. Return value: New reference.
Definition at line 489 of file class.h.
◆ make_static_property_type()
PyTypeObject* make_static_property_type |
( |
| ) |
|
|
inline |
A static_property
is the same as a property
but the __get__()
and __set__()
methods are modified to always use the object type instead of a concrete instance. Return value: New reference.
Definition at line 64 of file class.h.
◆ mix64()
◆ num_registered_instances()
size_t num_registered_instances |
( |
| ) |
|
|
inline |
◆ raise_err()
bool raise_err |
( |
PyObject * |
exc_type, |
|
|
const char * |
msg |
|
) |
| |
|
inline |
◆ round_up_to_next_pow2()
◆ same_type()
bool same_type |
( |
const std::type_info & |
lhs, |
|
|
const std::type_info & |
rhs |
|
) |
| |
|
inline |
◆ set_shared_data()
◆ translate_exception()
void translate_exception |
( |
std::exception_ptr |
p | ) |
|
|
inline |
◆ translate_local_exception()
void translate_local_exception |
( |
std::exception_ptr |
p | ) |
|
|
inline |
◆ with_instance_map()
template<typename F >
auto with_instance_map |
( |
const void * |
ptr, |
|
|
const F & |
cb |
|
) |
| -> decltype(cb(std::declval<instance_map &>())) |
|
inline |
◆ with_internals()
template<typename F >
auto with_internals |
( |
const F & |
cb | ) |
-> decltype(cb(get_internals())) |
|
inline |
◆ internals_function_record_capsule_name
constexpr const char* internals_function_record_capsule_name = "pybind11_function_record_capsule" |
|
constexpr |