Alternate string object type for PyStringObject(available Python 2.x) in python 3.x?
What is the replacement in python 3.x for PyStringObject which is available in python 2.x? -- http://mail.python.org/mailman/listinfo/python-list
Is there conversion method to convert pyunicodeobject to pybyteobject?
Hi All, A variable whose data type is PyUnicodeObject is to be assigned to varioable of PyBytesObject type example : PyUnicodeObject *p = ...whatever...; function( (PyByteObject*p)); compiled and got a Bus Error. Cheers, Mathan -- http://mail.python.org/mailman/listinfo/python-list
Getting System error with PyModule_AddIntConstant funtion
Following is a Python C api which runs properly without PyModule_AddIntConstant
function.
But when PyModule_AddIntConstant() function is used, getting the following
error when i call
c. path("test call");
" SystemError: NULL result without error in PyObject_Call "
Python C api- c.c
int test(int a){
return (2*a+a);
}
PyObject* dict = NULL;
static PyObject* path(PyObject* self, PyObject* args) {
char *cpath;
PyUnicodeObject *path;
PyUnicodeObject *test;
if (!PyArg_ParseTuple(args, "s", &path))
return NULL;
cpath = (char *)path;
test = (PyUnicodeObject*)(cpath);
PyObject *testDict = PyDict_New();
int testVal = PyDict_SetItem(testDict, (PyObject
*)PyUnicode_FromString(cpath), (PyObject *)PyUnicode_FromString(cpath));
return Py_BuildValue("s", test);
}
static PyObject* c(PyObject* self, PyObject* args) {
int a;
int result;
if(!PyArg_ParseTuple(args, "i", &a))
return NULL;
result = test(a);
return Py_BuildValue("i", result);
}
static PyMethodDef cmethods[] = {
{"c", c, METH_VARARGS, "watch"},
{"path", path, METH_VARARGS, "test"},
{NULL, NULL, 0, NULL},
};
static struct PyModuleDef c_Module = {
PyModuleDef_HEAD_INIT,
"c",
(
"Interface."
),
-1,
cmethods
};
PyMODINIT_FUNC PyInit_c(void) {
PyObject* obj = PyModule_Create(&c_Module);
long lon1 = 0;
PyModule_AddIntConstant(obj, "test", lon1);
}
int main(int argc, wchar_t *argv[])
{
PyImport_AppendInittab("c", PyInit_c);
Py_SetProgramName(argv[0]);
Py_Initialize();
PyImport_ImportModule("c");
return 0;
}
--
http://mail.python.org/mailman/listinfo/python-list
Re: Getting System error with PyModule_AddIntConstant funtion
I checked for Null also. But No change in the result. Still getting the system
error.
But when i m calling only c.c(5) function and not calling c.path("hi python c
api") function, i m getting proper output without any system error.
Any clue?
Subject: Re: Getting System error with PyModule_AddIntConstant funtion
From: Philip Semanchuk <[email protected]>
Date: Tue, 18 May 2010 11:50:46 -0400
To: "python-list (General)" <[email protected]>
- Contents -
On May 18, 2010, at 11:41 AM, MathanK wrote:
> Following is a Python C api which runs properly without
> PyModule_AddIntConstant function.
>
>
> But when PyModule_AddIntConstant() function is used, getting the
> following error when i call
> c. path("test call");
> " SystemError: NULL result without error in PyObject_Call "
Hi Mathan,
You're not checking the return code from PyModule_Create(). Is it
returning NULL?
Also, there's a list specific to Python's C API. You might get a
better response to your question there:
http://mail.python.org/mailman/listinfo/capi-sig
bye
Philip
>
>
> Python C api- c.c
>
>
> int test(int a){
> return (2*a+a);
> }
>
>
> PyObject* dict = NULL;
>
>
> static PyObject* path(PyObject* self, PyObject* args) {
> char *cpath;
> PyUnicodeObject *path;
> PyUnicodeObject *test;
>
>
> if (!PyArg_ParseTuple(args, "s", &path))
> return NULL;
> cpath = (char *)path;
> test = (PyUnicodeObject*)(cpath);
> PyObject *testDict = PyDict_New();
> int testVal = PyDict_SetItem(testDict, (PyObject
> *)PyUnicode_FromString(cpath), (PyObject
> *)PyUnicode_FromString(cpath));
>
> return Py_BuildValue("s", test);
> }
> static PyObject* c(PyObject* self, PyObject* args) {
>
> int a;
> int result;
> if(!PyArg_ParseTuple(args, "i", &a))
> return NULL;
> result = test(a);
> return Py_BuildValue("i", result);
>
> }
>
>
> static PyMethodDef cmethods[] = {
> {"c", c, METH_VARARGS, "watch"},
> {"path", path, METH_VARARGS, "test"},
> {NULL, NULL, 0, NULL},
> };
>
>
> static struct PyModuleDef c_Module = {
> PyModuleDef_HEAD_INIT,
> "c",
> (
> "Interface."
> ),
> -1,
> cmethods
> };
>
>
> PyMODINIT_FUNC PyInit_c(void) {
>
> PyObject* obj = PyModule_Create(&c_Module);
> long lon1 = 0;
> PyModule_AddIntConstant(obj, "test", lon1);
>
> }
>
>
> int main(int argc, wchar_t *argv[])
> {
> PyImport_AppendInittab("c", PyInit_c);
> Py_SetProgramName(argv[0]);
> Py_Initialize();
> PyImport_ImportModule("c");
> return 0;
> }
--
http://mail.python.org/mailman/listinfo/python-list
Re: Is there conversion method to convert pyunicodeobject to pybyteobject?
Got it worked with the following change. PyUnicodeObject *p = ...whatever...; char* tmp = (char *)p; PyObject* arg = PyBytes_FromString (tmp); function( (PyBytesObject*) arg); >From : MathanK<[email protected]> To : "python-list" <[email protected]> Date : Sat, 15 May 2010 02:50:22 -1200 Subject : Is there conversion method to convert pyunicodeobject to pybyteobject? Hi All, A variable whose data type is PyUnicodeObject is to be assigned to varioable of PyBytesObject type example : void function( (PyBytesObject* byte){} PyUnicodeObject *p = ...whatever...; function( (PyBytesObject*)p); compiled and got a Bus Error. Cheers, Mathan -- http://mail.python.org/mailman/listinfo/python-list
