Преобразование функций Python в C ++ с использованием Boost.Python

У меня есть несколько классов и API, написанных на C ++ и открытых для Python с помощью Boost.Python

. В настоящее время я исследую возможности создания следующей архитектуры.
Python У меня есть несколько классов и API, написанных на C ++ и открытых для Python с помощью Boost.Python. В настоящее время я исследую возможности создания следующей архитектуры. В python: ...

У меня есть несколько классов и API, написанных на C ++ и открытых для Python с помощью Boost.Python

. В настоящее время я исследую возможности создания следующей архитектуры.
Python У меня есть несколько классов и API, написанных на C ++ и открытых для Python с помощью Boost.Python. В настоящее время я исследую возможности создания следующей архитектуры. В python: ...

У меня есть несколько классов и API, написанных на C ++ и открытых для Python с помощью Boost.Python

. В настоящее время я исследую возможности создания следующей архитектуры.
В python:

from boostPythonModule import *
AddFunction( boostPythonObject.Method1, args )
AddFunction( boostPythonObject.Method2, args )
AddFunction( boostPythonObject.Method2, args )
RunAll( ) # running is done by C++

В C ++:

void AddFunction( boost::object method,  boost::object args )
{
    /// 1. Here i need to extract a real pointer to a function
    /// 2. Make argument and type checking for a function under method
    /// 3. Unpack all arguments to native types
    /// 4. Store the pointer to a function somewhere in local storage
}

void RunAll( )
{
    /// 1. run all previously stored functions and arguments for them
}

В основном я пытаюсь перенести все функции на родную часть моей программы. Дело в том, что я не уверен, можно ли извлечь все необходимые данные из метаинфо Boost, чтобы сделать это обычным способом - во время компиляции я не должен знать, какие функции я собираюсь вызывать и какие аргументы они принимают.

Немного. вопросы:
1. Есть ли какие-либо общие информационные таблицы Python, к которым я могу получить доступ, чтобы проверить некоторые из этих материалов?
2. Boost.Python выполняет проверку аргументов типа. Можно ли повторно использовать его отдельно?

Сообщите мне свои мысли.

Спасибо

8
задан Alex 15 October 2010 в 20:54
поделиться