[Numpy-discussion] Compile extension modules with Visual Studio 2005

David Cournapeau david@ar.media.kyoto-u.ac...
Wed Jul 25 21:32:18 CDT 2007


Gael Varoquaux wrote:
> On Wed, Jul 25, 2007 at 04:44:08PM +0200, Stefan van der Walt wrote:
>> On Wed, Jul 25, 2007 at 03:41:37PM +0200, Gael Varoquaux wrote:
>>> On Wed, Jul 25, 2007 at 06:38:55AM -0700, Ray Schumacher wrote:
>>>> The codeGenerator is magic, if you ask me:
>>>> http://starship.python.net/crew/theller/ctypes/old/codegen.html
>
>>> Can it wrap code passing around arrays ? If so it really does magic that
>>> I don't understand.
>
>> If your array is contiguous, it really is only a matter of passing
>> along a pointer and dimensions.
>
>> By writing your C-functions in the form
>
>> void func(double* data, int rows, int cols, double* out) { }
>
>> wrapping becomes trivial.
>
> Yes, I have done this many times. It is trivial and very convenient. I
> was just wondering if the code generator could detect this pattern.
I don't see either how to magically generate those functions, since C 
has no concept of arrays (I mean outside a serie of contiguous bytes): 
if you see the declaration int f(double* in, int rows, int cols), the 
compiler does not know that it means a double array of size rows * cols, 
and that the in(i, j) is given by in[i*rows+j]. Actually, you don't know 
either without reading the source code or code conventions :).

Now, if you have always the same convention, I think it is conceptually 
possible to automatically generate the wrappers, a bit like swig does 
with typemaps for example (maybe f2py can do it for Fortran code ? I 
have never used f2py, but I think Fortran has a concept of arrays and 
matrices ?).

David


More information about the Numpy-discussion mailing list