C Extension - return an array of longs or pointer?
Brandon K
prince_amir86 at yahoo.com
Wed Oct 12 08:47:04 EDT 2005
All the veteran programmers out there can correct me, but the way I did
it in my extension was this:
static PyObject *wrap_doNumberStuff(PyObject* self, PyObject* args)
{
char* in = 0;
char* x = 0;
long* result = 0;
int i = 0;
PyObject* py = PyTuple_New()
int ok = PyArg_ParseTuple(args,"ss",&in, &x);
if(!ok) return NULL;
result = doNumberStuff(in,x):
len = sizeof(result)/sizeof(long)
for(i;i < len; i++)
PyTuple_SET_ITEM(py, i,Py_BuildValue("l",*result[i])
}
Simple enough idea...i'm not quite sure if I've done everything
correctly with the pointers, but I'm sure you can figure that out, the
algorithm is simple enough.
> Hi,
> I have been posting about writing a C extension for Python...so far,
> so good. At least for the "simple" functions that I need to wrap.
>
> Ok, my c function looks like...
>
> MY_NUM *doNumberStuff(const char *in, const char *x) { ... }
>
> MY_NUM is defined as, typedef unsigned long MY_NUM; (not sure if that
> matters, or can i just create a wrapper which handles longs?)
>
> anyhow..for my wrapper I have this..
>
> static PyObject *wrap_doNumberStuff(PyObject *self, PyObject args) {
> char *in = 0;
> char *x = 0;
> long *result = 0;
> int ok = PyArg_ParseTuple(args, "ss", &in, &x);
> if (!ok) return 0;
>
> result = doNumberStuff(in, x);
>
> return Py_BuildValue("l", result);
> }
>
> ...my question is...in the c code, result is a pointer to an array of
> longs, how can I get the returned result to be a list or something
> similar to an array in Python?
>
> ...I also have a function which returns a character array (denoted by a
> char *)...would it work the same as the previous question?
>
> Thanks!!
>
----== Posted via Newsgroups.com - Usenet Access to over 100,000 Newsgroups ==----
Get Anonymous, Uncensored, Access to West and East Coast Server Farms!
----== Highest Retention and Completion Rates! HTTP://WWW.NEWSGROUPS.COM ==----
More information about the Python-list
mailing list