R
rch.astra
Hi everybody,
I'm doing some experiments with the python 3.0 C API, and I'm having
some problems for obtaining character strings. In python 2.X APIs, a
function called PyString_AsString was available. This function
provided a C string (char*) given a PyObject. But, in python 3.0 API
there is no such a function, and they mention that it has been
substituted by PyUnicode* functions. The issue is that I still don't
get how to use these functions to obtain char strings in C!
This is one of the things I try to do:
PyThreadState* state = PyThreadState_GET();
PyInterpreterState* interp = state->interp;
int numModules = PyDict_Size(interp->modules);
PyObject* moduleKeys = PyDict_Keys(interp->modules);
int idx=0;
for(idx=0; idx<numModules; idx++)
{
PyObject* key = PyList_GetItem(moduleKeys,idx);
PyObject* module = PyDict_GetItem( interp->modules, key );
char* theKeyName = <????>
PySys_WriteStdout("Module '%s'\n", theKeyName);
}
I was not able to obtain theKeyName, knowing that the "key" PyObject
is in fact a unicode string containing the character string I want...
Could anybody help me? How can I, in general, obtain char* strings
from a corresponding PyObject? What should I use for "<????>"?
Thank you very much in advance,
Cheers
RC
I'm doing some experiments with the python 3.0 C API, and I'm having
some problems for obtaining character strings. In python 2.X APIs, a
function called PyString_AsString was available. This function
provided a C string (char*) given a PyObject. But, in python 3.0 API
there is no such a function, and they mention that it has been
substituted by PyUnicode* functions. The issue is that I still don't
get how to use these functions to obtain char strings in C!
This is one of the things I try to do:
PyThreadState* state = PyThreadState_GET();
PyInterpreterState* interp = state->interp;
int numModules = PyDict_Size(interp->modules);
PyObject* moduleKeys = PyDict_Keys(interp->modules);
int idx=0;
for(idx=0; idx<numModules; idx++)
{
PyObject* key = PyList_GetItem(moduleKeys,idx);
PyObject* module = PyDict_GetItem( interp->modules, key );
char* theKeyName = <????>
PySys_WriteStdout("Module '%s'\n", theKeyName);
}
I was not able to obtain theKeyName, knowing that the "key" PyObject
is in fact a unicode string containing the character string I want...
Could anybody help me? How can I, in general, obtain char* strings
from a corresponding PyObject? What should I use for "<????>"?
Thank you very much in advance,
Cheers
RC