[Numpy-discussion] help with typemapping a C function to use numpy arrays

Egor Zindy ezindy@gmail....
Wed Jan 7 19:13:15 CST 2009


Hello Rich,

This is very strange. I got to test my example again, as long as you don't
do a
%include "dftmagnitude.h"
somewhere in the dftmagnitude.i, it's perfectly possible to do a
%rename (sms_spectrumMag) my_spectrumMag;
(see dftmagnitude3.zip attached in my previous mail and this one).

So things for you to check:
  * does the simple dftmagnitude3.zip compile on your system?
  * what version of SWIG are you using? (I used 1.3.36 provided with cygwin)
  * do you have a %include statement somewhere in your own .i file?

Matthieu, if you read this, there's a complete example provided in
dftmagnitude3.zip.
  * Wrapped function sms_spectrumMag in dftmagnitude.c and .h
  * SWIG wrapper dftmagnitude.i uses %inline and %rename statements
  * Example uses a modified numpy.i (see the previous mails in the thread).
  * test example provided in test_dftmagnitude.py

Haven't tested it under Linux, but under winxp/cygwin/mingw32, the following
works for me (in cygwin):

$ python setup_dftmagnitude.py build -cmingw32 ; mv
build/lib.win32-2.5/_dftmagnitude.pyd .
$ python test_dftmagnitude.py

Regards,
Egor

--
My Python:
$ python -i
Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit (Intel)]
on win32

My SWIG:
$ swig -version

SWIG Version 1.3.36

Compiled with g++ [i686-pc-cygwin]
Please see http://www.swig.org for reporting bugs and further information




On Thu, Jan 8, 2009 at 1:43 AM, Rich E <reakinator@gmail.com> wrote:

> Here is my example, trying to wrap the function sms_spectrumMag that
> we have been dealing with:
>
> %apply (int DIM1, float* IN_ARRAY1) {(int sizeInArray, float* pInArray)};
> %apply (int DIM1, float* INPLACE_ARRAY1) {(int sizeOutArray, float*
> pOutArray)};
>
> %inline %{
>
>        void my_spectrumMag( int sizeInArray, float *pInArray, int
> sizeOutArray, float *pOutArray)
>        {
>                sms_spectrumMag(sizeOutArray, pInArray, pOutArray);
>        }
>
> %}
>
>
> at this point,  have the new function my_spectrumMag that wraps
> sms_spectrumMag() and provides arguments that can be typemapped using
> numpy.i  Now, I don't want to have to call the function
> my_spectrumMag() in python, I want to use the original name, I would
> like to call the function as:
>
> sms_spectrumMag(numpyArray1, numpyArray2)
>
> But, trying to %rename my_spectrumMag to sms_spectrumMag does not
> work, the original sms_spectrumMag gets called in python instead.
> Trying to %ignore the original function first as follows removes the
> sms_spectrumMag completely from the module and I am left with
> my_spectrumMag:
>
> %ignore sms_spectrumMag;
> %rename (sms_spectrumMag) my_spectrumMag;
>
>
> Do you see my problem?
>
>
> On Wed, Jan 7, 2009 at 8:58 AM, Matthieu Brucher
> <matthieu.brucher@gmail.com> wrote:
> > 2009/1/6 Rich E <reakinator@gmail.com>:
> >> This helped immensely.  I feel like I am getting close to being able
> >> to accomplish what I would like with SWIG: producing a python module
> >> that can be very 'python-like', while co-existing with the c library
> >> that is very 'c-like'.
> >>
> >> There is one question still remaining though, is it possible to make
> >> the wrapped function have the same name still?  Using either
> >> my_spectrumMag or spectrumMag means I have to create a number of
> >> inconsistencies between the python module and the c library.  It is
> >> ideal to ignore (%ignore?) the c sms_spectrumMag and instead use the
> >> wrapped one, with the same name.  But my attempts at doing this so far
> >> have not compiled because of name conflictions.
> >
> > Ok course you can. The function is renamed only if you say so. Perhaps
> > can you provide a small example of what doesn't work at the moment ?
> >
> >> Thanks for the help, I think you are doing great things with this
> >> numpy interface/typemaps system.
> >
> > Matthieu
> > --
> > Information System Engineer, Ph.D.
> > Website: http://matthieu-brucher.developpez.com/
> > Blogs: http://matt.eifelle.com and http://blog.developpez.com/?blog=92
> > LinkedIn: http://www.linkedin.com/in/matthieubrucher
> > _______________________________________________
> > Numpy-discussion mailing list
> > Numpy-discussion@scipy.org
> > http://projects.scipy.org/mailman/listinfo/numpy-discussion
> >
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion@scipy.org
> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20090108/61800800/attachment-0001.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dftmagnitude3.zip
Type: application/zip
Size: 10887 bytes
Desc: not available
Url : http://projects.scipy.org/pipermail/numpy-discussion/attachments/20090108/61800800/attachment-0001.zip 


More information about the Numpy-discussion mailing list