![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Models of ResultConverterBoost , Boost.Python Reference Manual , Chapter 4. Function Invocation and Creation
|
Параметр |
Требования |
Описание |
---|---|---|
Т |
Либо< |
< |
МакХолдер |
< |
Класс, статичность которого< |
Обоснования to_python_indirect являются моделями<ResultConverter
>.
namespace boost { namespace python { template <class T, class MakeHolder> struct to_python_indirect { static bool convertible(); PyObject* operator()(T ptr_or_reference) const; private: static PyTypeObject* type(); }; }}
PyObject* operator()(T x) const;
<x
>относится к объекту (если это тип указателя, то он ненулевой).<convertible()
==true
>.
Создает правильно подобранный буст. В экземпляре класса расширений Python используется MakeHolder для создания держателя экземпляров из x, устанавливается держатель экземпляров в новом экземпляре класса расширений и возвращается указатель на него.
bool convertible()
Возвращает истинное значение любой модуль, зарегистрированный тип Python, соответствующий U.
Этот пример повторяет функциональность<reference_existing_object
>, но без некоторой проверки ошибок времени компиляции.
struct make_reference_holder { typedef boost::python::objects::instance_holder* result_type; template <class T> static result_type execute(T* p) { return new boost::python::objects::pointer_holder<T*, T>(p); } }; struct reference_existing_object { // metafunction returning the ResultConverter template <class T> struct apply { typedef boost::python::to_python_indirect<T,make_reference_holder> type; }; };
<to_python_value
>— это модельResultConverter, которая копирует свой аргумент в новый объект Python.
namespace boost { namespace python { template <class T> struct to_python_value { typedef typename add_reference< typename add_const<T>::type >::type argument_type; static bool convertible(); PyObject* operator()(argument_type) const; }; }}
static bool convertible();
<true
>Был зарегистрирован преобразователь, который может преобразовывать<T
>в питон по стоимости.
PyObject* operator()(argument_type x) const;
<convertible()
==true
>
Преобразует<x
>в питон
Полученный объект Python iff для<T
>был зарегистрирован,<0
>в противном случае.
Статья Models of ResultConverter раздела Boost.Python Reference Manual Chapter 4. Function Invocation and Creation может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 4. Function Invocation and Creation ::
реклама |