I have a simple question. I want to access python dictionary data type from
C extension module.
---- spam.c ----
#include <Python.h>
PyObject *wrap_clear(PyObject *self, PyObject *args) {
int count;
PyObject *dict;
PyObject *newdict;
newdict = PyDict_New(); // newdict is created in C module
if (!PyArg_Parse(args, "O", &PyDict_Type, &dict)) {
return NULL;
}
if (PyDict_Check(newdict)) { // newdict is a dictionary
printf("newdict is ok\n");
} else {
printf("newdict is not ok\n");
}
if (PyDict_Check(dict)) { // dict is from python
printf("dict is ok\n");
} else {
printf("dict is not ok\n");
}
return Py_BuildValue("i", 0);
}
static PyMethodDef spamMethods[] = {
{"clear", wrap_clear, 1 },
{ NULL, NULL }
};
void initspam() {
PyObject *m;
m = Py_InitModule("spam", spamMethods);
}
------------
$
gcc -fpic -c -I/usr/local/python/include/python2.3 -I/usr/local/python/lib/p
ython2.3/config spam.c
$ gcc -shared spam.o -o spam.so
$ python
Python 2.3.3 (#1, Mar 29 2004, 18:57:19)
[GCC 2.96 20000731 (Red Hat Linux 7.3 2.96-113)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import spam
d = {"count":1}
d {'count': 1} spam.clear(d) newdict is ok -------> newdict is a dictionary
dict is not ok --------> but dict is not a dictionary
0
How can i access to the dictionary from C module??
Thanks in advance..