BoB robotics
The Brains on Board robotics library
pybind11::cpp_function Class Reference

Wraps an arbitrary C++ function/method/lambda function/.. into a callable Python object. More...

#include <pybind11.h>

Inheritance diagram for pybind11::cpp_function:
pybind11::function pybind11::object pybind11::handle pybind11::detail::object_api< handle > pybind11::detail::pyobject_tag

Classes

struct  InitializingFunctionRecordDeleter
 
class  strdup_guard
 

Public Member Functions

 cpp_function (std::nullptr_t)
 
template<typename Return , typename... Args, typename... Extra>
 cpp_function (Return(*f)(Args...), const Extra &... extra)
 Construct a cpp_function from a vanilla function pointer.
 
template<typename Func , typename... Extra, typename = detail::enable_if_t<detail::is_lambda<Func>::value>>
 cpp_function (Func &&f, const Extra &... extra)
 Construct a cpp_function from a lambda function (possibly with internal state)
 
template<typename Return , typename Class , typename... Arg, typename... Extra>
 cpp_function (Return(Class::*f)(Arg...), const Extra &... extra)
 Construct a cpp_function from a class method (non-const, no ref-qualifier)
 
template<typename Return , typename Class , typename... Arg, typename... Extra>
 cpp_function (Return(Class::*f)(Arg...)&, const Extra &... extra)
 
template<typename Return , typename Class , typename... Arg, typename... Extra>
 cpp_function (Return(Class::*f)(Arg...) const, const Extra &... extra)
 Construct a cpp_function from a class method (const, no ref-qualifier)
 
template<typename Return , typename Class , typename... Arg, typename... Extra>
 cpp_function (Return(Class::*f)(Arg...) const &, const Extra &... extra)
 
object name () const
 Return the function name.
 
- Public Member Functions inherited from pybind11::function
 __attribute__ ((deprecated("Use reinterpret_borrow<""function"">() or reinterpret_steal<""function"">()"))) function(handle h
 
- Public Member Functions inherited from pybind11::object
 __attribute__ ((deprecated("Use reinterpret_borrow<object>() or reinterpret_steal<object>()"))) object(handle h
 
 object (const object &o)
 Copy constructor; always increases the reference count.
 
 object (object &&other) noexcept
 Move constructor; steals the object from other and preserves its reference count.
 
 ~object ()
 Destructor; automatically calls handle::dec_ref()
 
handle release ()
 
objectoperator= (const object &other)
 
objectoperator= (object &&other) noexcept
 
template<typename T >
cast () const &
 
template<typename T >
cast () &&
 
 object (handle h, borrowed_t)
 
 object (handle h, stolen_t)
 
template<typename T >
cast () const &
 
template<typename T >
cast () &&
 
template<>
void cast () const &
 
template<>
void cast () &&
 
- Public Member Functions inherited from pybind11::handle
 handle ()=default
 The default constructor creates a handle with a nullptr-valued pointer.
 
 handle (PyObject *ptr)
 Creates a handle from the given raw Python object pointer.
 
PyObject * ptr () const
 Return the underlying PyObject * pointer.
 
PyObject *& ptr ()
 
const handleinc_ref () const &
 
const handledec_ref () const &
 
template<typename T >
cast () const
 
 operator bool () const
 Return true when the handle wraps a valid Python object.
 
 __attribute__ ((deprecated("Use obj1.is(obj2) instead"))) bool operator
 
template<>
void cast () const
 
- Public Member Functions inherited from pybind11::detail::object_api< handle >
iterator begin () const
 
iterator end () const
 Return a sentinel which ends iteration.
 
item_accessor operator[] (handle key) const
 
item_accessor operator[] (const char *key) const
 See above (the only difference is that they key is provided as a string literal)
 
obj_attr_accessor attr (handle key) const
 
str_attr_accessor attr (const char *key) const
 See above (the only difference is that they key is provided as a string literal)
 
args_proxy operator* () const
 
object operator* (object_api const &other) const
 
bool contains (T &&item) const
 Check if the given item is contained within this object, i.e. item in obj.
 
object operator() (Args &&...args) const
 
 __attribute__ ((deprecated("call(...) was deprecated in favor of operator()(...)"))) object call(Args &&... args) const
 
bool is (object_api const &other) const
 Equivalent to obj is other in Python.
 
bool is_none () const
 Equivalent to obj is None in Python.
 
bool equal (object_api const &other) const
 Equivalent to obj == other in Python.
 
bool not_equal (object_api const &other) const
 
bool operator< (object_api const &other) const
 
bool operator<= (object_api const &other) const
 
bool operator> (object_api const &other) const
 
bool operator>= (object_api const &other) const
 
object operator- () const
 
object operator- (object_api const &other) const
 
object operator~ () const
 
object operator+ (object_api const &other) const
 
object operator+= (object_api const &other) const
 
object operator-= (object_api const &other) const
 
object operator*= (object_api const &other) const
 
object operator/ (object_api const &other) const
 
object operator/= (object_api const &other) const
 
object operator| (object_api const &other) const
 
object operator|= (object_api const &other) const
 
object operator& (object_api const &other) const
 
object operator&= (object_api const &other) const
 
object operator^ (object_api const &other) const
 
object operator^= (object_api const &other) const
 
object operator<< (object_api const &other) const
 
object operator<<= (object_api const &other) const
 
object operator>> (object_api const &other) const
 
object operator>>= (object_api const &other) const
 
__attribute__((deprecated("Use py::str(obj) instead"))) pybind11 str_attr_accessor doc () const
 Get or set the object's docstring, i.e. obj.__doc__.
 
int ref_count () const
 Return the object's current reference count.
 
handle get_type () const
 

Protected Types

using unique_function_record = std::unique_ptr< detail::function_record, InitializingFunctionRecordDeleter >
 

Protected Member Functions

 __attribute__ ((noinline)) inline unique_function_record make_function_record()
 Space optimization: don't inline this frequently instantiated fragment.
 
template<typename Func , typename Return , typename... Args, typename... Extra>
void initialize (Func &&f, Return(*)(Args...), const Extra &... extra)
 Special internal constructor for functors, lambda functions, etc.
 
void initialize_generic (unique_function_record &&unique_rec, const char *text, const std::type_info *const *types, size_t args)
 Register a function call with Python (generic non-templated code goes here)
 

Static Protected Member Functions

static void destruct (detail::function_record *rec, bool free_strings=true)
 When a cpp_function is GCed, release any memory allocated by pybind11.
 
static PyObject * dispatcher (PyObject *self, PyObject *args_in, PyObject *kwargs_in)
 Main dispatch logic for calls to functions bound using pybind11.
 

Additional Inherited Members

- Public Attributes inherited from pybind11::function
bool is_borrowed: object (is_borrowed ? object (h
 
- Public Attributes inherited from pybind11::object
bool is_borrowed: handle(h) { if (is_borrowed) inc_ref()
 

Detailed Description

Wraps an arbitrary C++ function/method/lambda function/.. into a callable Python object.

Constructor & Destructor Documentation

◆ cpp_function() [1/2]

template<typename Return , typename Class , typename... Arg, typename... Extra>
pybind11::cpp_function::cpp_function ( Return(Class::*)(Arg...) f &  ,
const Extra &...  extra 
)
inline

Construct a cpp_function from a class method (non-const, lvalue ref-qualifier) A copy of the overload for non-const functions without explicit ref-qualifier but with an added &.

◆ cpp_function() [2/2]

template<typename Return , typename Class , typename... Arg, typename... Extra>
pybind11::cpp_function::cpp_function ( Return(Class::*)(Arg...) const f &  ,
const Extra &...  extra 
)
inline

Construct a cpp_function from a class method (const, lvalue ref-qualifier) A copy of the overload for const functions without explicit ref-qualifier but with an added &.


The documentation for this class was generated from the following file: