Go to the source code of this file.
Macros | |
| #define | PYBIND11_BUILTIN_QUALNAME |
| #define | PYBIND11_SET_OLDPY_QUALNAME(obj, nameobj) |
Functions | |
| std::string | get_fully_qualified_tp_name (PyTypeObject *type) |
| PyTypeObject * | type_incref (PyTypeObject *type) |
| PyObject * | pybind11_static_get (PyObject *self, PyObject *, PyObject *cls) |
pybind11_static_property.__get__(): Always pass the class instead of the instance. More... | |
| int | pybind11_static_set (PyObject *self, PyObject *obj, PyObject *value) |
pybind11_static_property.__set__(): Just like the above __get__(). More... | |
| void | enable_dynamic_attributes (PyHeapTypeObject *heap_type) |
Give instances of this type a __dict__ and opt into garbage collection. More... | |
| PyTypeObject * | make_static_property_type () |
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. More... | |
| int | pybind11_meta_setattro (PyObject *obj, PyObject *name, PyObject *value) |
Types with static properties need to handle Type.static_prop = x in a specific way. More... | |
| PyObject * | pybind11_meta_getattro (PyObject *obj, PyObject *name) |
| Python 3's PyInstanceMethod_Type hides itself via its tp_descr_get, which prevents aliasing methods via cls.attr("m2") = cls.attr("m1"): instead the tp_descr_get returns a plain function, when called on a class, or a PyMethod, when called on an instance. More... | |
| PyObject * | pybind11_meta_call (PyObject *type, PyObject *args, PyObject *kwargs) |
metaclass __call__ function that is used to create all pybind11 objects. More... | |
| void | pybind11_meta_dealloc (PyObject *obj) |
| Cleanup the type-info for a pybind11-registered type. More... | |
| PyTypeObject * | make_default_metaclass () |
| This metaclass is assigned by default to all pybind11 types and is required in order for static properties to function correctly. More... | |
| void | traverse_offset_bases (void *valueptr, const detail::type_info *tinfo, instance *self, bool(*f)(void *, instance *)) |
| For multiple inheritance types we need to recursively register/deregister base pointers for any base classes with pointers that are difference from the instance value pointer so that we can correctly recognize an offset base class pointer. More... | |
| bool | register_instance_impl (void *ptr, instance *self) |
| bool | deregister_instance_impl (void *ptr, instance *self) |
| void | register_instance (instance *self, void *valptr, const type_info *tinfo) |
| bool | deregister_instance (instance *self, void *valptr, const type_info *tinfo) |
| PyObject * | make_new_instance (PyTypeObject *type) |
| Instance creation function for all pybind11 types. More... | |
| PyObject * | pybind11_object_new (PyTypeObject *type, PyObject *, PyObject *) |
| Instance creation function for all pybind11 types. More... | |
| int | pybind11_object_init (PyObject *self, PyObject *, PyObject *) |
An __init__ function constructs the C++ object. More... | |
| void | add_patient (PyObject *nurse, PyObject *patient) |
| void | clear_patients (PyObject *self) |
| void | clear_instance (PyObject *self) |
| Clears all internal data from the instance and removes it from registered instances in preparation for deallocation. More... | |
| void | pybind11_object_dealloc (PyObject *self) |
| Instance destructor function for all pybind11 types. More... | |
| std::string | error_string () |
| PyObject * | make_object_base_type (PyTypeObject *metaclass) |
| Create the type which can be used as a common base for all classes. More... | |
| int | pybind11_traverse (PyObject *self, visitproc visit, void *arg) |
dynamic_attr: Allow the garbage collector to traverse the internal instance __dict__. More... | |
| int | pybind11_clear (PyObject *self) |
| dynamic_attr: Allow the GC to clear the dictionary. More... | |
| int | pybind11_getbuffer (PyObject *obj, Py_buffer *view, int flags) |
| buffer_protocol: Fill in the view as specified by flags. More... | |
| void | pybind11_releasebuffer (PyObject *, Py_buffer *view) |
| buffer_protocol: Release the resources of the buffer. More... | |
| void | enable_buffer_protocol (PyHeapTypeObject *heap_type) |
| Give this type a buffer interface. More... | |
| PyObject * | make_new_python_type (const type_record &rec) |
Create a brand new Python type according to the type_record specification. More... | |
|
inline |
Definition at line 382 of file class.h.
References get_internals(), instance::has_patients, and internals::patients.
|
inline |
Clears all internal data from the instance and removes it from registered instances in preparation for deallocation.
Definition at line 408 of file class.h.
References clear_patients(), instance::deallocate_layout(), deregister_instance(), instance::has_patients, instance::owned, pybind11_fail(), self, and instance::weakrefs.
|
inline |
Definition at line 390 of file class.h.
References get_internals(), instance::has_patients, internals::patients, and self.
Definition at line 338 of file class.h.
References deregister_instance_impl(), self, type_info::simple_ancestors, and traverse_offset_bases().
|
inline |
Definition at line 319 of file class.h.
References get_internals(), internals::registered_instances, and self.
|
inline |
Give this type a buffer interface.
Definition at line 621 of file class.h.
References pybind11_getbuffer(), and pybind11_releasebuffer().
|
inline |
Give instances of this type a __dict__ and opt into garbage collection.
Definition at line 542 of file class.h.
References pybind11_clear(), and pybind11_traverse().
|
inline |
Definition at line 478 of file type_caster_base.h.
References handle::cast(), error_fetch_and_normalize::error_string(), and scope::value.
Referenced by make_new_python_type(), and make_object_base_type().
|
inline |
Definition at line 28 of file class.h.
References handle::cast(), and PYBIND11_BUILTINS_MODULE.
Referenced by instance::get_value_and_holder().
|
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 251 of file class.h.
References pybind11_fail(), PYBIND11_FROM_STRING, pybind11_meta_call(), pybind11_meta_dealloc(), pybind11_meta_getattro(), pybind11_meta_setattro(), PYBIND11_SET_OLDPY_QUALNAME, setattr(), and type_incref().
Referenced by get_internals().
|
inline |
Instance creation function for all pybind11 types.
It allocates the internal instance layout for holding C++ objects and holders. Allocation is done lazily (the first time the instance is cast to a reference or pointer), and initialization is done by an __init__ function.
Definition at line 349 of file class.h.
References instance::allocate_layout(), and self.
Referenced by type_caster_generic::cast().
|
inline |
Create a brand new Python type according to the type_record specification.
Return value: New reference.
Definition at line 630 of file class.h.
References type_record::bases, type_record::buffer_protocol, c_str(), type_record::custom_type_setup_callback, internals::default_metaclass, type_record::doc, type_record::dynamic_attr, enable_buffer_protocol(), enable_dynamic_attributes(), error_string(), get_internals(), hasattr(), internals::instance_base, type_record::is_final, type_record::metaclass, type_record::name, handle::ptr(), pybind11_fail(), PYBIND11_FROM_STRING, pybind11_object_init(), PYBIND11_SET_OLDPY_QUALNAME, object::release(), type_record::scope, setattr(), options::show_user_defined_docstrings(), and type_incref().
|
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 481 of file class.h.
References error_string(), pybind11_fail(), PYBIND11_FROM_STRING, pybind11_object_dealloc(), pybind11_object_init(), pybind11_object_new(), PYBIND11_SET_OLDPY_QUALNAME, setattr(), and type_incref().
Referenced by get_internals().
|
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.
References enable_dynamic_attributes(), pybind11_fail(), PYBIND11_FROM_STRING, PYBIND11_SET_OLDPY_QUALNAME, pybind11_static_get(), pybind11_static_set(), setattr(), and type_incref().
Referenced by get_internals().
|
inline |
dynamic_attr: Allow the GC to clear the dictionary.
Definition at line 535 of file class.h.
References self.
|
inline |
buffer_protocol: Fill in the view as specified by flags.
Definition at line 569 of file class.h.
References buffer_info::format, type_info::get_buffer, type_info::get_buffer_data, get_type_info(), buffer_info::itemsize, buffer_info::ndim, buffer_info::ptr, handle::ptr(), buffer_info::readonly, buffer_info::shape, and buffer_info::strides.
|
inline |
metaclass __call__ function that is used to create all pybind11 objects.
Definition at line 184 of file class.h.
References get_fully_qualified_tp_name(), and self.
|
inline |
Cleanup the type-info for a pybind11-registered type.
Definition at line 210 of file class.h.
References internals::direct_conversions, get_internals(), get_local_internals(), internals::inactive_override_cache, last(), internals::registered_types_cpp, local_internals::registered_types_cpp, and internals::registered_types_py.
|
inline |
Python 3's PyInstanceMethod_Type hides itself via its tp_descr_get, which prevents aliasing methods via cls.attr("m2") = cls.attr("m1"): instead the tp_descr_get returns a plain function, when called on a class, or a PyMethod, when called on an instance.
Override that behaviour here to do a special case bypass for PyInstanceMethod_Types.
Definition at line 174 of file class.h.
Referenced by make_default_metaclass().
|
inline |
Types with static properties need to handle Type.static_prop = x in a specific way.
By default, Python replaces the static_property itself, but for wrapped C++ types we need to call static_property.__set__() in order to propagate the new value to the underlying C++ data structure.
Definition at line 137 of file class.h.
References get_internals(), and internals::static_property_type.
|
inline |
Instance destructor function for all pybind11 types.
It calls type_info.dealloc to destroy the C++ object itself, while the rest is Python bookkeeping.
Definition at line 447 of file class.h.
References clear_instance(), get_internals(), internals::instance_base, and self.
|
inline |
An __init__ function constructs the C++ object.
Users should provide at least one of these using py::init or directly with .def(__init__, ...). Otherwise, the following default function will be used which simply throws an exception.
Definition at line 375 of file class.h.
References get_fully_qualified_tp_name(), and self.
|
inline |
Instance creation function for all pybind11 types.
It only allocates space for the C++ object, but doesn't call the constructor – an __init__ function must do that.
Definition at line 368 of file class.h.
References make_new_instance().
|
inline |
buffer_protocol: Release the resources of the buffer.
|
inline |
|
inline |
|
inline |
dynamic_attr: Allow the garbage collector to traverse the internal instance __dict__.
Definition at line 524 of file class.h.
References self.
Definition at line 331 of file class.h.
References register_instance_impl(), self, type_info::simple_ancestors, and traverse_offset_bases().
|
inline |
Definition at line 315 of file class.h.
References get_internals(), internals::registered_instances, and self.
|
inline |
For multiple inheritance types we need to recursively register/deregister base pointers for any base classes with pointers that are difference from the instance value pointer so that we can correctly recognize an offset base class pointer.
This calls a function with any offset base ptrs.
Definition at line 295 of file class.h.
References get_type_info(), self, and traverse_offset_bases().