Модели концепции CallPolicies используются для специализации поведения именируемых объектов Python, генерируемых Boost. Python для обернутых C++ объектов, таких как функции и указатели функций-членов, обеспечивая три поведения:
precall - управление аргументами Python до того, как завернутый объект будет использован
result_converter - C++ возвратная обработка
postcall - Python аргумент tuple и управление результатами после того, как завернутый объект используется
extract_return_type - метафункция для извлечения типа возврата из заданной последовательности типа подписи
Чтобы разрешить использование нескольких моделей CallPolicies в одном и том же называемом объекте, Boost. Шаблоны класса CallPolicies Python обеспечивают цепной интерфейс, который позволяет им быть рекурсивно составленными. Этот интерфейс принимает форму опционального параметра шаблона, Base, который по умолчанию default_call_policies. По соглашению, функция precallBase используется после функции precall, поставляемой шаблоном outer, и функции postcall функции Base используется перед postcall функции outer шаблон. Если result_converter поставляется шаблоном outer, он заменяет любой result_converter, поставляемый Base. Например, см. return_internal_reference.
возвратит false и PyErr_Occurred()!=0 по неудаче, True в противном случае.
P::результат_конвертер
Модель ResultConverterGenerator.
Использованный неарочный метафункционный класс MPL производит объект «предварительного» результата.
x.postcall(a,r)
кабриолет на PyObject*
0 и PyErr_Occurred()!=0 после отказа. Должен «консервировать ссылки» даже в случае исключения. Иными словами, если r не возвращается, его исходный счет должен быть сокращен; если другой существующий объект возвращается, его исходный счет должен быть увеличен.
P::extract_return_type
Модель Метафункции.
Неарочную Метафункцию MPL использовали для извлечения типа возврата из данной подписи. По умолчанию он происходит от mpl::front.
Статья Chapter 1. Concepts раздела Boost.Python Reference Manual Boost.Python Reference Manual может быть полезна для разработчиков на c++ и boost.