wrapping C functions in python

Paul Anton Letnes paul.anton.letnes at gmail.com
Wed Apr 9 16:44:43 EDT 2008


Hi, and thanks.


However, being a newbie, I now have to ask: What is SWIG? I have heard  
the name before, but haven't understood what it is, why I need it, or  
similar. Could you please supply some hints?


-Paul


Den 9. april. 2008 kl. 22.22 skrev Brian Cole:

> We use the following SWIG (www.swig.org) typemap to perform such  
> operations:
>
> %typemap(in) (int argc, char **argv) {
> if (!PySequence_Check($input)) {
>  PyErr_SetString(PyExc_ValueError,"Expected a sequence");
>  return NULL;
> }
> $1 = PySequence_Length($input);
> $2 = (char**)alloca($1*sizeof(char*));
> for (Py_ssize_t i = 0; i < $1; ++i) {
>  PyObject *o = PySequence_GetItem($input, i);
>  $2[i] = PyString_AsString(o);
> }
> }
>
> That one works for mapping a python sequence (such as a list) into the
> argc, argv arguments commonly passed into main.
>
> -Brian
>
> On Wed, Apr 9, 2008 at 2:13 PM, Paul Anton Letnes
> <paul.anton.letnes at gmail.com> wrote:
>> Hello etc.
>>
>>
>> I am a "scientific" user of Python, and hence have to write some  
>> performance
>> critical algorithms. Right now, I am learning Python, so this is a  
>> "newbie"
>> question.
>>
>> I would like to wrap some heavy C functions inside Python,  
>> specifically a
>> wavelet transform. I am beginning to become aquainted with the  
>> functions
>> PyArg_ParseTuple() and Py_BuildValue(). However, I am unable to  
>> figure out
>> how to pass Python list -> C function or C array -> return value in  
>> Python.
>> I manage to build and run the C function, print to screen, pass  
>> string as
>> argument, return an int, etc. The thing which is missing is the magic
>> array/list...
>>
>>
>> Thanks in advance! I fart in your general direction.
>> Paul.
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>>
> -- 
> http://mail.python.org/mailman/listinfo/python-list




More information about the Python-list mailing list