Из Python Converter для встроенных типов

Где повысить регистр Python от преобразователей Python для встроенных типов, таких как из PyLong_Type в double?

Я хочу определить конвертер, который может взять numpy.float128 из питона и возвращает long double для функций в C ++. Я уже сделал это наоборот, конвертер to_python. Для этого я подправил builtin_converters.hpp но я не нашел, как Boost Python делает преобразование из Python.

2

Решение

Преобразование из python фактически выполняется в builtin_converters.cpp а не в заголовочной части библиотеки. Я скопировал этот файл и удалил все, кроме конвертера для long double, который я тогда смог изменить.

1

Другие решения

Я добавлю к этому ответу, хотя для немного другой проблемы:

Как вы можете конвертировать объекты типа Python (то есть PyTypeObject такие как PyLong_Type, PyBool_Type, PyUnicode_Typeи т. д.) boost::python::object ?

Кажется, это работает нормально:

namespace bp = boost::python;

bp::object float_Type = bp::borrowed(
bp::downcast<PyTypeObject>(&PyFloat_Type))));

В результате вы можете выставить фактические объекты типа в Python через Boost Python объекты.

0