Определяет средства для генерации семейств перегруженных функций Python и методов классов расширений из функций C++ и функций-членов с аргументами по умолчанию или из аналогичных семейств перегрузок C++
Выражение перегрузки-диспетчеризации используется для описания семейства перегруженных методов, генерируемых для класса расширения. Обладает следующими свойствами:
docstring
ntbs, значение которых будет привязано к методам.<__doc__>атрибут
keywords
Выражениеключевого слова, которое будет использоваться для обозначения (следующей последовательности) аргументов к сгенерированным методам.
call policies
Пример некоторых типов, которые моделируют CallPolicies.
minimum arity
Минимальное количество аргументов, принимаемых сгенерированным методом перегрузки.
maximum arity
Максимальное количество аргументов, принимаемых сгенерированным методом перегрузки.
Перегрузочный диспетчер X - это класс, который имеет минимальную и максимальную активность, и для которого следующие ниже действительные выражения перегрузки-диспетчера с той же минимальной и максимальной активностью, что и перегрузка-диспетчер.
* Если политика предоставляется, она должна быть примером типа, модели которогоПолитика вызоваи будет использоваться в качестве политики вызова результата. В противном случае политика вызова результата будет примером<default_call_policies>. Если докстринг подается, он должен бытьntbsи будет использоваться в качестве докстринга результата. В противном случае результат имеет пустую докстринг. Если ключевые слова поставляются, это должно быть результатом выраженияключевых слов, длина которого не превышает максимальную частоту X и будет использоваться в качестве ключевых слов результата. В противном случае ключевые слова будут пустыми.
Расширяет определение перегрузочного диспетчера, называемого именем в текущем объеме, который может быть использован для создания следующего вызова функции:
Расширяет определение перегрузочного диспетчера, называемого именем в текущем объеме, который может быть использован для создания следующего вызова функции:
x.member_name(a1,a2,...ai);
Для всех min_args<= i<= max_args, где x является ссылкой на объект класса типа.
#include<boost/python/module.hpp>#include<boost/python/def.hpp>#include<boost/python/args.hpp>#include<boost/python/tuple.hpp>#include<boost/python/class.hpp>#include<boost/python/overloads.hpp>#include<boost/python/return_internal_reference.hpp>usingnamespaceboost::python;tuplef(intx=1,doubley=4.25,charconst*z="wow"){returnmake_tuple(x,y,z);}BOOST_PYTHON_FUNCTION_OVERLOADS(f_overloads,f,0,3)structY{};structX{Y&f(intx,doubley=4.25,charconst*z="wow"){returninner;}Yinner;};BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(f_member_overloads,f,1,3)BOOST_PYTHON_MODULE(args_ext){def("f",f,f_overloads(args("x","y","z"),"This is f's docstring"));class_<Y>("Y");class_<X>("X","This is X's docstring").def("f1",&X::f,f_member_overloads(args("x","y","z"),"f's docstring")[return_internal_reference<>()]);}
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.