Como expor uma classe C ++ ao Python sem criar um módulo
Eu quero saber se existe alguma maneira de expor uma classe C ++ para Python, mas sem construir uma biblioteca compartilhada intermediária.
Aqui está o meu cenário desejável. Por exemplo, tenho a seguinte classe C ++:
class toto
{
public:
toto(int iValue1_, int iValue2_): iValue1(iValue1_), iValue2(iValue2_) {}
int Addition(void) const {if (!this) return 0; return iValue1 + iValue2;}
private:
int iValue1;
int iValue2;
};
Eu gostaria de converter de alguma forma esta classe (ou sua intance) para um PyObject *, a fim de enviá-lo como paremter (args) para, por exemplo, PyObject_CallObject:
PyObject* PyObject_CallObject(PyObject* wrapperFunction, PyObject* args)
Por outro lado, no meu lado python, eu terei um wrapperFunction que obtém o ponteiro na minha classe C ++ (ou sua instância) como parâmetro e chama seus métodos ou usa suas propriedades:
def wrapper_function(cPlusPlusClass):
instance = cPlusPlusClass(4, 5)
result = instance.Addition()
Como você pode ver, eu realmente não preciso / quero ter uma biblioteca compartilhada separada ou construir um módulo com python. Tudo o que preciso é encontrar uma maneira de converter um código C ++ em PyObject e enviá-lo para python. Eu não consigo encontrar uma maneira de fazer isso por bibliotecas python C, impulso ou SWIG.
Você tem alguma ideia? Obrigado pela ajuda.