Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

boost/python/data_members.hpp

Boost , Boost.Python Reference Manual , Chapter 4. Function Invocation and Creation

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

<make_getter()>и<make_setter()>являются функциями, используемыми внутри<class_<>::def_readonly>и<class_<>::def_readwrite>для создания объектов, которые можно назвать Python, которые обертывают C++-члены данных.

template <class C, class D>
object make_getter(D C::*pm);
template <class C, class D, class Policies>
object make_getter(D C::*pm, Policies const& policies);

Requires

Политика — это модель<CallPolicies>.

Effects

Создает объект Python, который принимает один аргумент, который может быть преобразован из_python в C*, и возвращает соответствующий член D-член объекта C, преобразованный в_python. Если политика предоставляется, она будет применяться к функции, описанной здесь. В противном случае библиотека пытается определить, является ли D определяемым пользователем типом класса, и если да, то использует return_internal_reference<>для политик. Обратите внимание, что этот тест может ненадлежащим образом выбирать back_internal_reference<>в некоторых случаях, когда D является умным типом указателя. Это известный дефект.

Returns

Пример объекта, который содержит новый объект Python.

template <class D>
object make_getter(D const& d);
template <class D, class Policies>
object make_getter(D const& d, Policies const& policies);
template <class D>
object make_getter(D const* p);
template <class D, class Policies>
object make_getter(D const* p, Policies const& policies);

Requires

Политика является моделью политики CallPolicies.

Effects

Создает объект Python, который не принимает никаких аргументов и возвращает d или *p, преобразованный в Python по требованию. Если политика предоставляется, она будет применяться к функции, описанной здесь. В противном случае библиотека пытается определить, является ли D определяемым пользователем типом класса, и если да, то использует для политик reference_existing_object.

Returns

Пример объекта, который содержит новый объект Python.

template <class C, class D>
object make_setter(D C::*pm);
template <class C, class D, class Policies>
object make_setter(D C::*pm, Policies const& policies);

Requires

Политика является моделью политики CallPolicies.

Effects

Создает объект Python, который при вызове из Python ожидает двух аргументов, которые могут быть преобразованы из python в C* и D const& соответственно, и устанавливает соответствующий D-член объекта C. Если политика предоставляется, она будет применяться к функции, описанной здесь.

Returns

Пример объекта, который содержит новый объект Python.

template <class D>
object make_setter(D& d);
template <class D, class Policies>
object make_setter(D& d, Policies const& policies);
template <class D>
object make_setter(D* p);
template <class D, class Policies>
object make_setter(D* p, Policies const& policies);

Requires

Политика является моделью политики CallPolicies.

Effects

Создает объект Python, который принимает один аргумент, который преобразуется из Python в D const& и записывается в d или *p соответственно. Если политика предоставляется, она будет применяться к функции, описанной здесь.

Returns

Пример объекта, который содержит новый объект Python.

Нижеприведенный код использует make_getter и make_setter для раскрытия элемента данных в качестве функций:

#include <boost/python/data_members.hpp>
#include <boost/python/module.hpp>
#include <boost/python/class.hpp>
struct X
{
    X(int x) : y(x) {}
    int y;
};
using namespace boost::python;
BOOST_PYTHON_MODULE_INIT(data_members_example)
{
    class_<X>("X", init<int>())
       .def("get", make_getter(&X::y))
       .def("set", make_setter(&X::y))
       ;
}

Его можно использовать в Python:

>>> from data_members_example import *
>>> x = X(1)
>>> x.get()
1
>>> x.set(2)
>>> x.get()
2

PrevUpHomeNext

Статья boost/python/data_members.hpp раздела Boost.Python Reference Manual Chapter 4. Function Invocation and Creation может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 4. Function Invocation and Creation ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-19 23:09:53/0.0092020034790039/1