Classes | Macros | Typedefs | Functions
pybind11.h File Reference
#include "attr.h"
#include "options.h"
#include "detail/class.h"
#include "detail/init.h"
Include dependency graph for pybind11.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  class_< type_, options >
 
class  cpp_function
 Wraps an arbitrary C++ function/method/lambda function/.. into a callable Python object. More...
 
class  enum_< Type >
 Binds C++ enumerations and enumeration classes to Python. More...
 
struct  enum_base
 
class  exception< type >
 
class  generic_type
 Generic support for creating new Python heap types. More...
 
class  gil_scoped_acquire
 
class  gil_scoped_release
 
struct  has_operator_delete< T, SFINAE >
 
struct  has_operator_delete< T, void_t< decltype(static_cast< void(*)(void *)>(T::operator delete))>
 
struct  has_operator_delete_size< T, SFINAE >
 
struct  has_operator_delete_size< T, void_t< decltype(static_cast< void(*)(void *, size_t)>(T::operator delete))>
 
struct  class_< type_, options >::is_valid_class_option< T >
 
struct  iterator_state< Iterator, Sentinel, KeyIterator, Policy >
 
class  module_
 Wrapper for Python extension modules. More...
 

Macros

#define PYBIND11_ENUM_OP_CONV(op, expr)
 
#define PYBIND11_ENUM_OP_CONV_LHS(op, expr)
 
#define PYBIND11_ENUM_OP_STRICT(op, expr, strict_behavior)
 
#define PYBIND11_OVERLOAD(ret_type, cname, fn, ...)   PYBIND11_OVERRIDE(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), fn, __VA_ARGS__)
 
#define PYBIND11_OVERLOAD_INT(ret_type, cname, name, ...)   PYBIND11_OVERRIDE_IMPL(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), name, __VA_ARGS__)
 
#define PYBIND11_OVERLOAD_NAME(ret_type, cname, name, fn, ...)   PYBIND11_OVERRIDE_NAME(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), name, fn, __VA_ARGS__)
 
#define PYBIND11_OVERLOAD_PURE(ret_type, cname, fn, ...)   PYBIND11_OVERRIDE_PURE(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), fn, __VA_ARGS__);
 
#define PYBIND11_OVERLOAD_PURE_NAME(ret_type, cname, name, fn, ...)   PYBIND11_OVERRIDE_PURE_NAME(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), name, fn, __VA_ARGS__);
 
#define PYBIND11_OVERRIDE(ret_type, cname, fn, ...)   PYBIND11_OVERRIDE_NAME(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), #fn, fn, __VA_ARGS__)
 
#define PYBIND11_OVERRIDE_IMPL(ret_type, cname, name, ...)
 
#define PYBIND11_OVERRIDE_NAME(ret_type, cname, name, fn, ...)
 
#define PYBIND11_OVERRIDE_PURE(ret_type, cname, fn, ...)   PYBIND11_OVERRIDE_PURE_NAME(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), #fn, fn, __VA_ARGS__)
 
#define PYBIND11_OVERRIDE_PURE_NAME(ret_type, cname, name, fn, ...)
 
#define PYBIND11_THROW   throw type_error("Expected an enumeration of matching type!");
 

Typedefs

using module = module_
 

Functions

void add_class_method (object &cls, const char *name_, const cpp_function &cf)
 
std::pair< decltype(internals::registered_types_py)::iterator, bool > all_type_info_get_cache (PyTypeObject *type)
 
template<typename T , enable_if_t< has_operator_delete< T >::value, int > = 0>
void call_operator_delete (T *p, size_t, size_t)
 Call class-specific delete if it exists or global otherwise. Can also be an overload set. More...
 
void call_operator_delete (void *p, size_t s, size_t a)
 
template<typename CppException >
exception< CppException > & get_exception_object ()
 
template<class T >
function get_overload (const T *this_ptr, const char *name)
 
template<class T >
function get_override (const T *this_ptr, const char *name)
 
function get_type_overload (const void *this_ptr, const detail::type_info *this_type, const char *name)
 
function get_type_override (const void *this_ptr, const type_info *this_type, const char *name)
 
dict globals ()
 
template<typename InputType , typename OutputType >
void implicitly_convertible ()
 
template<typename... Args>
detail::initimpl::constructor< Args... > init ()
 Binds an existing constructor taking arguments Args... More...
 
template<typename Func , typename Ret = detail::initimpl::factory<Func>>
Ret init (Func &&f)
 Binds a factory function as a constructor. More...
 
template<typename CFunc , typename AFunc , typename Ret = detail::initimpl::factory<CFunc, AFunc>>
Ret init (CFunc &&c, AFunc &&a)
 
template<typename... Args>
detail::initimpl::alias_constructor< Args... > init_alias ()
 
void keep_alive_impl (handle nurse, handle patient)
 
PYBIND11_NOINLINE void keep_alive_impl (size_t Nurse, size_t Patient, function_call &call, handle ret)
 
template<return_value_policy Policy = return_value_policy::reference_internal, typename Iterator , typename Sentinel , typename ValueType = decltype(*std::declval<Iterator>()), typename... Extra>
iterator make_iterator (Iterator first, Sentinel last, Extra &&...extra)
 Makes a python iterator from a first and past-the-end C++ InputIterator. More...
 
template<return_value_policy Policy = return_value_policy::reference_internal, typename Type , typename... Extra>
iterator make_iterator (Type &value, Extra &&...extra)
 
template<return_value_policy Policy = return_value_policy::reference_internal, typename Iterator , typename Sentinel , typename KeyType = decltype((*std::declval<Iterator>()).first), typename... Extra>
iterator make_key_iterator (Iterator first, Sentinel last, Extra &&...extra)
 
template<return_value_policy Policy = return_value_policy::reference_internal, typename Type , typename... Extra>
iterator make_key_iterator (Type &value, Extra &&...extra)
 
template<typename , typename F >
auto method_adaptor (F &&f) -> decltype(std::forward< F >(f))
 
template<typename Derived , typename Return , typename Class , typename... Args>
auto method_adaptor (Return(Class::*pmf)(Args...)) -> Return(Derived::*)(Args...)
 
template<typename GetState , typename SetState >
detail::initimpl::pickle_factory< GetState, SetState > pickle (GetState &&g, SetState &&s)
 
PYBIND11_NOINLINE void print (tuple args, dict kwargs)
 
template<return_value_policy policy = return_value_policy::automatic_reference, typename... Args>
void print (Args &&...args)
 
template<typename CppException >
exception< CppException > & register_exception (handle scope, const char *name, handle base=PyExc_Exception)
 
template<typename ExceptionTranslator >
void register_exception_translator (ExceptionTranslator &&translator)
 
template<typename T , typename = void_t<decltype(static_cast<void *(*)(size_t)>(T::operator new))>>
void set_operator_new (type_record *r)
 Set the pointer to operator new if it exists. The cast is needed because it can be overloaded. More...
 
template<typename >
void set_operator_new (...)
 

Macro Definition Documentation

#define PYBIND11_ENUM_OP_CONV (   op,
  expr 
)
Value:
m_base.attr(op) = cpp_function( \
[](object a_, object b_) { \
int_ a(a_), b(b_); \
return expr; \
}, \
name(op), is_method(m_base))
Scalar * b
Definition: benchVecAdd.cpp:17
if n return
Array33i a
Annotation for methods.
Definition: attr.h:21
Wraps an arbitrary C++ function/method/lambda function/.. into a callable Python object.
Definition: pybind11.h:56
#define PYBIND11_ENUM_OP_CONV_LHS (   op,
  expr 
)
Value:
m_base.attr(op) = cpp_function( \
[](object a_, object b) { \
int_ a(a_); \
return expr; \
}, \
name(op), is_method(m_base))
Scalar * b
Definition: benchVecAdd.cpp:17
if n return
Array33i a
Annotation for methods.
Definition: attr.h:21
Wraps an arbitrary C++ function/method/lambda function/.. into a callable Python object.
Definition: pybind11.h:56
#define PYBIND11_ENUM_OP_STRICT (   op,
  expr,
  strict_behavior 
)
Value:
m_base.attr(op) = cpp_function( \
[](object a, object b) { \
strict_behavior; \
return expr; \
}, \
name(op), is_method(m_base))
static handle handle_of()
Definition: cast.h:2209
Scalar * b
Definition: benchVecAdd.cpp:17
if((m *x).isApprox(y))
if n return
Array33i a
Annotation for methods.
Definition: attr.h:21
Wraps an arbitrary C++ function/method/lambda function/.. into a callable Python object.
Definition: pybind11.h:56
#define PYBIND11_OVERLOAD (   ret_type,
  cname,
  fn,
  ... 
)    PYBIND11_OVERRIDE(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), fn, __VA_ARGS__)

Definition at line 2287 of file pybind11.h.

#define PYBIND11_OVERLOAD_INT (   ret_type,
  cname,
  name,
  ... 
)    PYBIND11_OVERRIDE_IMPL(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), name, __VA_ARGS__)

Definition at line 2281 of file pybind11.h.

#define PYBIND11_OVERLOAD_NAME (   ret_type,
  cname,
  name,
  fn,
  ... 
)    PYBIND11_OVERRIDE_NAME(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), name, fn, __VA_ARGS__)

Definition at line 2283 of file pybind11.h.

#define PYBIND11_OVERLOAD_PURE (   ret_type,
  cname,
  fn,
  ... 
)    PYBIND11_OVERRIDE_PURE(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), fn, __VA_ARGS__);

Definition at line 2289 of file pybind11.h.

#define PYBIND11_OVERLOAD_PURE_NAME (   ret_type,
  cname,
  name,
  fn,
  ... 
)    PYBIND11_OVERRIDE_PURE_NAME(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), name, fn, __VA_ARGS__);

Definition at line 2285 of file pybind11.h.

#define PYBIND11_OVERRIDE (   ret_type,
  cname,
  fn,
  ... 
)    PYBIND11_OVERRIDE_NAME(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), #fn, fn, __VA_ARGS__)

Macro to populate the virtual method in the trampoline class. This macro tries to look up the method from the Python side, deals with the :ref:gil and necessary argument conversions to call this method and return the appropriate type. This macro should be used if the method name in C and in Python are identical. See :ref:overriding_virtuals for more information.

.. code-block:: cpp

class PyAnimal : public Animal { public: Inherit the constructors using Animal::Animal;

Trampoline (need one for each virtual function) std::string go(int n_times) override { PYBIND11_OVERRIDE_PURE( std::string, // Return type (ret_type) Animal, // Parent class (cname) go, // Name of function in C++ (must match Python name) (fn) n_times // Argument(s) (...) ); } };

Definition at line 2258 of file pybind11.h.

#define PYBIND11_OVERRIDE_IMPL (   ret_type,
  cname,
  name,
  ... 
)
Value:
do { \
pybind11::gil_scoped_acquire gil; \
pybind11::function override = pybind11::get_override(static_cast<const cname *>(this), name); \
if (override) { \
auto o = override(__VA_ARGS__); \
static pybind11::detail::override_caster_t<ret_type> caster; \
return pybind11::detail::cast_ref<ret_type>(std::move(o), caster); \
} \
else return pybind11::detail::cast_safe<ret_type>(std::move(o)); \
} \
} while (false)
if((m *x).isApprox(y))
if n return
function get_override(const T *this_ptr, const char *name)
Definition: pybind11.h:2182
Annotation for function names.
Definition: attr.h:36

Definition at line 2187 of file pybind11.h.

#define PYBIND11_OVERRIDE_NAME (   ret_type,
  cname,
  name,
  fn,
  ... 
)
Value:
do { \
PYBIND11_OVERRIDE_IMPL(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), name, __VA_ARGS__); \
return cname::fn(__VA_ARGS__); \
} while (false)
if n return
Annotation for function names.
Definition: attr.h:36
#define PYBIND11_OVERRIDE_IMPL(ret_type, cname, name,...)
Definition: pybind11.h:2187
#define PYBIND11_TYPE(...)
Definition: cast.h:2226

Macro to populate the virtual method in the trampoline class. This macro tries to look up a method named 'fn' from the Python side, deals with the :ref:gil and necessary argument conversions to call this method and return the appropriate type. See :ref:overriding_virtuals for more information. This macro should be used when the method name in C is not the same as the method name in Python. For example with __str__.

.. code-block:: cpp

std::string toString() override { PYBIND11_OVERRIDE_NAME( std::string, // Return type (ret_type) Animal, // Parent class (cname) "__str__", // Name of method in Python (name) toString, // Name of function in C++ (fn) ); }

Definition at line 2218 of file pybind11.h.

#define PYBIND11_OVERRIDE_PURE (   ret_type,
  cname,
  fn,
  ... 
)    PYBIND11_OVERRIDE_PURE_NAME(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), #fn, fn, __VA_ARGS__)

Macro for pure virtual functions, this function is identical to :c:macro:PYBIND11_OVERRIDE, except that it throws if no override can be found.

Definition at line 2265 of file pybind11.h.

#define PYBIND11_OVERRIDE_PURE_NAME (   ret_type,
  cname,
  name,
  fn,
  ... 
)
Value:
do { \
PYBIND11_OVERRIDE_IMPL(PYBIND11_TYPE(ret_type), PYBIND11_TYPE(cname), name, __VA_ARGS__); \
pybind11::pybind11_fail("Tried to call pure virtual function \"" PYBIND11_STRINGIFY(cname) "::" name "\""); \
} while (false)
PyExc_RuntimeError[[noreturn]] PYBIND11_NOINLINE void pybind11_fail(const char *reason)
Used internally.
Annotation for function names.
Definition: attr.h:36
#define PYBIND11_OVERRIDE_IMPL(ret_type, cname, name,...)
Definition: pybind11.h:2187
#define PYBIND11_TYPE(...)
Definition: cast.h:2226

Macro for pure virtual functions, this function is identical to :c:macro:PYBIND11_OVERRIDE_NAME, except that it throws if no override can be found.

Definition at line 2228 of file pybind11.h.

#define PYBIND11_THROW   throw type_error("Expected an enumeration of matching type!");

Typedef Documentation

using module = module_

Definition at line 943 of file pybind11.h.

Function Documentation

void add_class_method ( object cls,
const char *  name_,
const cpp_function cf 
)
inline

Definition at line 1091 of file pybind11.h.

std::pair<decltype(internals::registered_types_py)::iterator, bool> all_type_info_get_cache ( PyTypeObject *  type)
inline

Definition at line 1730 of file pybind11.h.

template<typename T , enable_if_t< has_operator_delete< T >::value, int > = 0>
void call_operator_delete ( T p,
size_t  s,
size_t   
)

Call class-specific delete if it exists or global otherwise. Can also be an overload set.

Definition at line 1068 of file pybind11.h.

void call_operator_delete ( void *  p,
size_t  s,
size_t  a 
)
inline

Definition at line 1072 of file pybind11.h.

template<typename CppException >
exception<CppException>& get_exception_object ( )

Definition at line 1894 of file pybind11.h.

template<class T >
function get_overload ( const T this_ptr,
const char *  name 
)
inline

Definition at line 2277 of file pybind11.h.

template<class T >
function get_override ( const T this_ptr,
const char *  name 
)

Try to retrieve a python method by the provided name from the instance pointed to by the this_ptr.

:this_ptr: The pointer to the object the overriden method should be retrieved for. This should be the first non-trampoline class encountered in the inheritance chain. :name: The name of the overridden Python method to retrieve. :return: The Python method by this name from the object or an empty function wrapper.

Definition at line 2182 of file pybind11.h.

function get_type_overload ( const void *  this_ptr,
const detail::type_info *  this_type,
const char *  name 
)
inline

Definition at line 2272 of file pybind11.h.

function get_type_override ( const void *  this_ptr,
const type_info this_type,
const char *  name 
)
inline

Definition at line 2116 of file pybind11.h.

template<typename InputType , typename OutputType >
void implicitly_convertible ( )

Definition at line 1829 of file pybind11.h.

template<typename... Args>
detail::initimpl::constructor<Args...> init ( )

Binds an existing constructor taking arguments Args...

Definition at line 1460 of file pybind11.h.

template<typename Func , typename Ret = detail::initimpl::factory<Func>>
Ret init ( Func &&  f)

Binds a factory function as a constructor.

Definition at line 1467 of file pybind11.h.

template<typename CFunc , typename AFunc , typename Ret = detail::initimpl::factory<CFunc, AFunc>>
Ret init ( CFunc &&  c,
AFunc &&  a 
)

Dual-argument factory function: the first function is called when no alias is needed, the second when an alias is needed (i.e. due to python-side inheritance). Arguments must be identical.

Definition at line 1472 of file pybind11.h.

template<typename... Args>
detail::initimpl::alias_constructor<Args...> init_alias ( )

Like init<Args...>(), but the instance is always constructed through the alias class (even when not inheriting on the Python side).

Definition at line 1463 of file pybind11.h.

void keep_alive_impl ( handle  nurse,
handle  patient 
)
inline

Definition at line 1689 of file pybind11.h.

PYBIND11_NOINLINE void keep_alive_impl ( size_t  Nurse,
size_t  Patient,
function_call call,
handle  ret 
)
inline

Definition at line 1716 of file pybind11.h.

template<return_value_policy Policy = return_value_policy::reference_internal, typename Iterator , typename Sentinel , typename ValueType = decltype(*std::declval<Iterator>()), typename... Extra>
iterator make_iterator ( Iterator  first,
Sentinel  last,
Extra &&...  extra 
)

Makes a python iterator from a first and past-the-end C++ InputIterator.

Definition at line 1764 of file pybind11.h.

template<return_value_policy Policy = return_value_policy::reference_internal, typename Type , typename... Extra>
iterator make_iterator ( Type &  value,
Extra &&...  extra 
)

Makes an iterator over values of an stl container or other container supporting std::begin()/std::end()

Definition at line 1818 of file pybind11.h.

template<return_value_policy Policy = return_value_policy::reference_internal, typename Iterator , typename Sentinel , typename KeyType = decltype((*std::declval<Iterator>()).first), typename... Extra>
iterator make_key_iterator ( Iterator  first,
Sentinel  last,
Extra &&...  extra 
)

Makes an python iterator over the keys (.first) of a iterator over pairs from a first and past-the-end InputIterator.

Definition at line 1793 of file pybind11.h.

template<return_value_policy Policy = return_value_policy::reference_internal, typename Type , typename... Extra>
iterator make_key_iterator ( Type &  value,
Extra &&...  extra 
)

Makes an iterator over the keys (.first) of a stl map-like container supporting std::begin()/std::end()

Definition at line 1825 of file pybind11.h.

template<typename , typename F >
auto method_adaptor ( F &&  f) -> decltype(std::forward<F>(f))

Given a pointer to a member function, cast it to its Derived version. Forward everything else unchanged.

Definition at line 1103 of file pybind11.h.

template<typename Derived , typename Return , typename Class , typename... Args>
auto method_adaptor ( Return(Class::*)(Args...)  pmf) -> Return (Derived::*)(Args...)

Definition at line 1106 of file pybind11.h.

template<typename GetState , typename SetState >
detail::initimpl::pickle_factory<GetState, SetState> pickle ( GetState &&  g,
SetState &&  s 
)

Binds pickling functions __getstate__ and __setstate__ and ensures that the type returned by __getstate__ is the same as the argument accepted by __setstate__.

Definition at line 1479 of file pybind11.h.

PYBIND11_NOINLINE void print ( tuple  args,
dict  kwargs 
)
inline

Definition at line 1922 of file pybind11.h.

template<return_value_policy policy = return_value_policy::automatic_reference, typename... Args>
void print ( Args &&...  args)

Definition at line 1955 of file pybind11.h.

template<typename CppException >
exception<CppException>& register_exception ( handle  scope,
const char *  name,
handle  base = PyExc_Exception 
)

Registers a Python exception in m of the given name and installs an exception translator to translate the C++ exception to the created Python exception using the exceptions what() method. This is intended for simple exception translations; for more complex translation, register the exception object and translator directly.

Definition at line 1904 of file pybind11.h.

template<typename ExceptionTranslator >
void register_exception_translator ( ExceptionTranslator &&  translator)

Definition at line 1857 of file pybind11.h.

template<typename T , typename = void_t<decltype(static_cast<void *(*)(size_t)>(T::operator new))>>
void set_operator_new ( type_record r)

Set the pointer to operator new if it exists. The cast is needed because it can be overloaded.

Definition at line 1056 of file pybind11.h.

template<typename >
void set_operator_new (   ...)

Definition at line 1058 of file pybind11.h.



gtsam
Author(s):
autogenerated on Sat May 8 2021 02:51:33