[Numpy-discussion] Numeric and swig (or, how to wrap functions).

Roy Dragseth Roy.Dragseth at cc.uit.no
Fri Jan 5 07:53:49 CST 2001


Hello all.

I'm trying to figure out a (simple) way to wrap extension functions
using Numeric and swig.  I want to use swig because I find the method
described i ch. 12 of the user manual a bit too elaborate.

The problem I'm facing with swig is that I cannot figure out a way to
pass arrays to the functions expecting double pointers as input.  Say,
for example, that I want to wrap daxpy:

1. I put the function call interface into a swig file:

 void daxpy(int* n,double* a, double* x,int* incx, double* y, int* incy)

2. I want the function call visible to python to be something like:

   x = Numeric.arange(0.0,10.0)
   y = a[:]
   a = 1.0
   daxpy(a,x,y)

3. To achieve 2. I make a python function that does the
   real call to daxpy:

   def daxpy(a,x,y):
       <Do consistency checking between x and y>
       
       n = len(x)
       d_x = GetDataPointer(x)
       inc_x = <x's incrment>
       .
       .
       .
       daxpy_c(n,a,d_x,inc_x,d_y,inc_y) 

(daxpy_c is the real daxpy)

The problem I'm facing is that I cannot grab the internal data pointer
from Numeric arrays and pass it to a function.  Is there a
simple way to do that without having to write a wrapper function in c
for every function I want to use?

How should I write the function GetDataPointer()?


Any hints is greatly appreciated.

Best regards,
Roy.


  The Computer Center, University of Tromsø, N-9037 TROMSØ, Norway.
	      phone:+47 77 64 41 07, fax:+47 77 64 41 00
     Roy Dragseth, High Perfomance Computing System Administrator
	 Direct call: +47 77 64 62 56. email: royd at cc.uit.no





More information about the Numpy-discussion mailing list