Thanks Robert, that worked just great.
I was wandering whether anyone has experience with calling Fortran 90 functions that return derived types and cast them to C/Python objects. I have found excellent reference in a couple of websites, however all examples deal with returning at best 2D arrays of fundamental/basic types. When it comes to derived types/structures I have following dilemma: should I use Fortran subroutines, allocate memory in C and pass the structures as arguments or should I use functions, allocate memory in Fortran and return the data to C/Python. I should mention I have little experience in C/Fortran. All thoughts are welcome. Quoting Robert Kern <robert.k...@gmail.com>: > On Mon, Oct 4, 2010 at 00:41, Ioan Ferencik <ioan.feren...@tkk.fi> wrote: >> Hello list, >> >> I am trying to pass elements of a custom defined with C API. >> I have successfully wrapped a type around a C struct. >> I intent to create a list with these objects and process it using >> numpy C API. >> So i create an array: >> >> array = (PyArrayObject *)PyArray_ContiguousFromObject(input, >> PyArray_OBJECT, 0, 0); >> >> to my understanding each el. in this array is a pointer to my type so >> a cast to this type >> should work. >> >> >> this is my custom type >> >> typedef struct val{ >> PyObject_HEAD >> float q; >> float wl; >> int cssid; >> int br; >> }hm1dval; >> >> I am passing only one element for testing purposes. >> >> in python >> a = [hm1d1.hm1dval() for i in range(0,1)] >> for c in a: >> c.set_values(q=3.0, wl=2.5, cssid=6, br=7) >> >> >> So following code should be valid in C: >> >> hm1dval s* = PyArray_DATA(array); >> >> but the members are 0 after casting in spite they were set previously. > > The elements of a dtype=object array are PyObject* pointers. In C, an > array of pointers would look like this: > > hm1dval **s = PyArray_DATA(array); > > -- > Robert Kern > > "I have come to believe that the whole world is an enigma, a harmless > enigma that is made terrible by our own mad attempt to interpret it as > though it had an underlying truth." > -- Umberto Eco > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > Ioan Ferencik PhD student Aalto University School of Science and Technology Faculty Of Civil and Env. Engineering Lahti Center Tel: +358505122707 _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion