Jeff Abrahamson on 26 Jan 2006 22:35:31 -0000


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[PLUG] swig and arrays


I have a C function that I want to use from python.  I've generally
used swig for this in the past, which has been very easy.  This C
function, however, returns an array.

I'm beginning to think that the easiest way to do this is to let the
function return a blog (er, "swig object") and then write a couple
accessors (see below).

This email is a query if anyone sees an easier way.  I see a lot of
wrapper function writing in my future otherwise...

Thanks.

Below the example C code, then the example of using it python.


    /* Make an array of length num and fill it with the first num
       Fibonacci numbers.
    */
    int *array_of_int(int num)
    {
            int *a;
            int i;

            a = (int *)malloc(num * sizeof(int));
            for(i = 0; i < num; i++)
                    if(i == 0 || i == 1)
                            a[i] = 1;
                    else
                            a[i] = a[i-1] + a[i-2];
            return a;
    }

    int index_int_array(int *a, int i)
    {
            return a[i];
    }

And then use it like this:

    >>> import example
    >>> example.array_of_int(5)
    <Swig Object at _e88e1608_p_int>
    >>> fib = example.array_of_int(6)
    >>> for i in range(6):
    ...     print i, example.index_int_array(fib, i)
    ...
    0 1
    1 1
    2 2
    3 3
    4 5
    5 8
    >>>

-- 
 Jeff

 Jeff Abrahamson  <http://www.purple.com/jeff/>    +1 215/837-2287
 GPG fingerprint: 1A1A BA95 D082 A558 A276  63C6 16BF 8C4C 0D1D AE4B

Attachment: signature.asc
Description: Digital signature

___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug