help with extending python

S

siddharthram

Hello,

I'd appreciate some help figuring out what I might be doing wrong. I am
trying to extend Python to add some modules. However, when the code
appended below runs, the conversion always fails (returns -1), and I
get a TypeError

Thanks
Siddharth


So the usage is like this:
import PyTest_itsFsm
a = [(10,True)]
PyTest_itsFsm.pytestprimitive(a)

the int is -1
bool is -1
in primitive test op with arg1 -1and arg 2183
1


The PyMethodDef looks as below:
------------------------------
static PyMethodDef PyTest_itsFsmMethods[] = {
{"pytestprimitive", PyTest_itsFsm_pytestprimitive,
METH_VARARGS, "pytestprimitive"},
{NULL,NULL,0,NULL}
};

And the method I've added looks like this:
------------------------------------------
static PyObject * PyTest_itsFsm_pytestprimitive(PyObject * self,
PyObject *args) { int arg1;
if
(!PyArg_ParseTuple(args,"O&",convert_pytestprimitive_arg1,&arg1))
{
return NULL;
}
bool arg2;
if
(!PyArg_ParseTuple(args,"O&",convert_pytestprimitive_arg2,&arg2))
{
return NULL;
}


Finally, the convert functions:
---------------------------------

PyTest_itsFsm::pytestpint convert_pytestprimitive_arg1 (PyObject * ob,
void * addr )
{
// this routine should convert the PyObject * to int for argument
arg1 int * p = (int *) addr;
printf ("ready to parse in convert function\n");

*p = PyInt_AsLong (ob);
printf ("the int is %d\n",*p);
if (PyErr_Occurred())
return -1;

return 1;
}
int convert_pytestprimitive_arg2 (PyObject * ob, void * addr )
{
// this routine should convert the PyObject * to bool for argument
arg2 bool * b = (bool *) addr;

int x;
x = PyInt_AsLong (ob);
printf ("bool is %d\n", (int) x);
if (PyErr_Occurred() )
return -1;
*b = (bool )PyBool_FromLong (x);
return 1;
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,262
Messages
2,571,058
Members
48,769
Latest member
Clifft

Latest Threads

Top