У меня есть несколько классов и 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 выполняет проверку аргументов типа. Можно ли повторно использовать его отдельно?
Сообщите мне свои мысли.
Спасибо