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

boost/python/make_function.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_ function() и make_constructor() являются функциями, используемыми внутри def() и class_<>::def() для создания объектов, называемых Python, которые обертывают функции C++ и функции-члены.

template <class F>
object make_function(F f)
template <class F, class Policies>
object make_function(F f, Policies const& policies)
template <class F, class Policies, class KeywordsOrSignature>
object make_function(F f, Policies const& policies, KeywordsOrSignature const& ks)
template <class F, class Policies, class Keywords, class Signature>
object make_function(F f, Policies const& policies, Keywords const& kw, Signature const& sig)

Requires

F - тип указателя функции или указателя функции члена. Если политика поставляется, она должна быть моделью CallPolicies. Если кеворды поставляются, это должно быть результатом выражения ключевых слов, указывающего не более аргументов, чем произвол f.

Effects

Создает значимый объект Python, который при вызове из Python преобразует свои аргументы в C++ и вызывает f. Если F является указателем-членом-функцией типа, целевой объект вызова функции (*это) будет взят из первого аргумента Python, а последующие аргументы Python будут использоваться в качестве аргументов f.

  • Если политика будет представлена, она будет применяться к функции, описанной здесь.
  • Если ключевые слова поставляются, ключевые слова будут применяться для заключительных аргументов итоговой функции.
  • Если Подпись поставлена, она должна быть экземпляром передней расширяемой последовательности MPL, представляющей тип возврата функции, за которым следуют ее типы аргументов. Пропустите Подпись при обертке типов объектов функции, подписи которых не могут быть выведены, или когда вы хотите перенаправить типы, которые будут переданы функции.
Returns

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

Caveats

Аргумент типа указателя может быть 0, если Ни один не передается от Python. Тип аргумента, который является постоянной ссылкой, может относиться к временному, который был создан из объекта Python в течение всего периода вызова к завернутой функции, например, std::vector, вызванный процессом преобразования из списка Python. Использовать неконстантный справочный аргумент, когда требуется постоянное значение.

template <class F>
object make_constructor(F f)
template <class F, class Policies>
object make_constructor(F f, Policies const& policies)
template <class F, class Policies, class KeywordsOrSignature>
object make_constructor(F f, Policies const& policies, KeywordsOrSignature const& ks)
template <class F, class Policies, class Keywords, class Signature>
object make_constructor(F f, Policies const& policies, Keywords const& kw, Signature const& sig)

Requires

F - тип указателя функции. Если политика поставляется, она должна быть моделью CallPolicies. Если кеворды поставляются, это должно быть результатом выражения ключевых слов, указывающего не более аргументов, чем произвол f.

Effects

Создает значимый объект Python, который при вызове из Python преобразует свои аргументы в C++ и вызывает f.

Returns

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

Функция C++, раскрытая ниже, возвращает коллируемый объект, закрывающий одну из двух функций.

#include <boost/python/make_function.hpp>
#include <boost/python/module.hpp>
char const* foo() { return "foo"; }
char const* bar() { return "bar"; }
using namespace boost::python;
object choose_function(bool selector)
{
    if (selector)
        return boost::python::make_function(foo);
    else
        return boost::python::make_function(bar);
}
BOOST_PYTHON_MODULE(make_function_test)
{
    def("choose_function", choose_function);
}

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

>>> from make_function_test import *
>>> f = choose_function(1)
>>> g = choose_function(0)
>>> f()
'foo'
>>> g()
'bar'

PrevUpHomeNext

Статья boost/python/make_function.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-20 05:08:52/0.0057079792022705/1