[Matrix-SIG] SWIG with recent NumPy

Pavlos Christoforou pavlos@gaaros.msrc.sunysb.edu
Mon, 13 Dec 1999 15:38:49 -0500 (EST)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--830597660-686800328-945117529=:32332
Content-Type: TEXT/PLAIN; charset=US-ASCII

Rob -

I have these, originally from Michael Bell and  Michael Cherkassoff with
some modifications to make them work with Numerical recipes. But as Johann
mentioned, you will need to add the import_array() manually.

Pavlos

On Mon, 13 Dec 1999, Rob Managan wrote:

> >Hello,
> >
> >I'm trying to use SWIG to automatically wrap some C routines and
> >return the results as NumPy arrays (converting from my own pet vector
> >structure.)  I have typemaps that worked with old versions of NumPy,
> >but now I have had to insert a call to "import_array()" by hand in the
> >SWIG-generated C module in the module initialization section.
> >
> >This means (AFAIK) that I have to hand-patch the C every time I run
> >SWIG.  That's bad.  Is there any way to get SWIG to insert the needed
> >"import_array()" call automatically?  Also, are there standard NumPy
> >SWIG typemaps?
> >
> >Lots of questions, as ususal.  ;-)
> >
> 
> I was about to start looking into this myself. Could you send me a 
> copy of the typemaps so I can see if I can use them? I will be 
> getting to this after the holidays.
> 
>   I think that what you want for the "import _array()" is the %init %{ 
> ... %} option in SWIG. It claims that code you insert in this block 
> will be added to the initialization routine.
> 
> *-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-
> Rob Managan       <mailto://managan@llnl.gov>
> LLNL                      ph:  925-423-0903
> P.O. Box 808, L-095       FAX: 925-422-3389
> Livermore, CA  94551-0808
> 
> 
> _______________________________________________
> Matrix-SIG maillist  -  Matrix-SIG@python.org
> http://www.python.org/mailman/listinfo/matrix-sig
> 

--830597660-686800328-945117529=:32332
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="numrec.i"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.04.9912131538490.32332@gaaros.msrc.sunysb.edu>
Content-Description: 
Content-Disposition: attachment; filename="numrec.i"

LyogT3JpZ2luYWwgZHVlIHRvIE1pY2hhZWwgQmVsbCA8bWljaGFlbGJAZ29s
ZC5uZXQuYXU+DQogICBSZXZpc2VkIGJ5IE1pY2hhZWwgQ2hlcmthc3NvZmYg
PG1jaGVya0BnZW9nLnViYy5jYT4NCiAgICRSZXZpc2lvbjogMS4zICQgDQog
ICBSZXZpc2VkIGZvciB1c2Ugd2l0aCBOdW1SZWMuDQoqLw0KDQolbW9kdWxl
IG51bXJlYw0KJXsNCiNpbmNsdWRlICJhcnJheW9iamVjdC5oIg0KJX0NCg0K
JWluY2x1ZGUgdHlwZW1hcHMuaQ0KDQoldHlwZW1hcChweXRob24sIGluKSBk
b3VibGUqIERCXzJEIHsNCg0KICBQeUFycmF5T2JqZWN0ICphcnI7DQoNCiAg
LyogQ2hlY2sgdGhhdCBvYmogaXMgcmVhbGx5IGFuIDJEIGFycmF5IG9mIGJ5
dGVzICovDQogIGlmICghUHlBcnJheV9DaGVjaygkc291cmNlKSkgew0KICAg
IFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIkZpcnN0IGFyZ3Vt
ZW50IGlzIG5vdCBhbiBhcnJheSIpOw0KICAgIHJldHVybiBOVUxMOw0KICB9
DQogIC8qIGNoZWNrIHR5cGUgKGNvdWxkIGFsc28gdXNlIGFyci0+ZGVzY3It
PnR5cGVfbnVtKSAqLw0KICBpZiAoUHlBcnJheV9PYmplY3RUeXBlKCRzb3Vy
Y2UsMCkgIT0gUHlBcnJheV9ET1VCTEUpIHsNCiAgICBQeUVycl9TZXRTdHJp
bmcoUHlFeGNfVHlwZUVycm9yLCJJbmNvcnJlY3QgYXJyYXkgdHlwZTogd2Ug
bmVlZCBhbiBhcnJheSBvZiBGTE9BVDMyIik7DQogICAgcmV0dXJuIE5VTEw7
DQogIH0NCiBhcnI9KFB5QXJyYXlPYmplY3QgKilQeUFycmF5X0NvbnRpZ3Vv
dXNGcm9tT2JqZWN0KCRzb3VyY2UsUHlBcnJheV9ET1VCTEUsMCwwKTsNCi8q
ICBhcnIgPSAoUHlBcnJheU9iamVjdCAqKSRzb3VyY2U7ICovDQppZiAoIWFy
cikgew0KICAgIHJldHVybiBOVUxMOw0KICB9ICANCg0KICBpZiAoYXJyLT5u
ZCAhPSAyKSB7IC8qIHdlIGFyZSByZWFsbHkgc3RyaWN0ICEgKi8NCiAgICBQ
eUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCJJbmNvcnJlY3QgbnVt
YmVyIG9mIGRpbXM6IHdlIHdhbnQgYSAyZCBhcnJheSIpOw0KICAgIHJldHVy
biBOVUxMOw0KICB9DQoNCiAgJHRhcmdldCA9IChkb3VibGUgKilhcnItPmRh
dGE7IC8qIHBvaW50ZXIgb24gZmlyc3QgZWxlbSAqLw0KDQogICBQeV9ERUNS
RUYoYXJyKTsNCn0NCg0KDQoldHlwZW1hcChweXRob24sIGluKSBkb3VibGUq
IERCXzFEIHsNCg0KICBQeUFycmF5T2JqZWN0ICphcnI7DQoNCiAgLyogQ2hl
Y2sgdGhhdCBvYmogaXMgcmVhbGx5IGFuIDFEIGFycmF5IG9mIGJ5dGVzICov
DQogIGlmICghUHlBcnJheV9DaGVjaygkc291cmNlKSkgew0KICAgIFB5RXJy
X1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIkZpcnN0IGFyZ3VtZW50IGlz
IG5vdCBhbiBhcnJheSIpOw0KICAgIHJldHVybiBOVUxMOw0KICB9DQogYXJy
PShQeUFycmF5T2JqZWN0ICopUHlBcnJheV9Db250aWd1b3VzRnJvbU9iamVj
dCgkc291cmNlLFB5QXJyYXlfRE9VQkxFLDAsMCk7DQovKiAgYXJyID0gKFB5
QXJyYXlPYmplY3QgKikkc291cmNlOyAqLw0KaWYgKCFhcnIpIHsNCiAgICBy
ZXR1cm4gTlVMTDsNCiAgfSAgDQoNCiAgaWYgKGFyci0+bmQgIT0gMSkgeyAv
KiB3ZSBhcmUgcmVhbGx5IHN0cmljdCAhICovDQogICAgUHlFcnJfU2V0U3Ry
aW5nKFB5RXhjX1R5cGVFcnJvciwiSW5jb3JyZWN0IG51bWJlciBvZiBkaW1z
OiB3ZSB3YW50IGEgMmQgYXJyYXkiKTsNCiAgICByZXR1cm4gTlVMTDsNCiAg
fQ0KDQogICR0YXJnZXQgPSAoZG91YmxlICopYXJyLT5kYXRhOyAvKiBwb2lu
dGVyIG9uIGZpcnN0IGVsZW0gKi8NCiAgLS0kdGFyZ2V0Ow0KICAgUHlfREVD
UkVGKGFycik7DQp9DQoNCiV0eXBlbWFwKHB5dGhvbiwgaW4pIGRvdWJsZSog
RkJfMUQgew0KDQogIFB5QXJyYXlPYmplY3QgKmFycjsNCg0KICAvKiBDaGVj
ayB0aGF0IG9iaiBpcyByZWFsbHkgYW4gMUQgYXJyYXkgb2YgYnl0ZXMgKi8N
CiAgaWYgKCFQeUFycmF5X0NoZWNrKCRzb3VyY2UpKSB7DQogICAgUHlFcnJf
U2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwiRmlyc3QgYXJndW1lbnQgaXMg
bm90IGFuIGFycmF5Iik7DQogICAgcmV0dXJuIE5VTEw7DQogIH0NCiBhcnI9
KFB5QXJyYXlPYmplY3QgKilQeUFycmF5X0NvbnRpZ3VvdXNGcm9tT2JqZWN0
KCRzb3VyY2UsUHlBcnJheV9ET1VCTEUsMCwwKTsNCi8qICBhcnIgPSAoUHlB
cnJheU9iamVjdCAqKSRzb3VyY2U7ICovDQppZiAoIWFycikgew0KICAgIHJl
dHVybiBOVUxMOw0KICB9ICANCg0KICBpZiAoYXJyLT5uZCAhPSAxKSB7IC8q
IHdlIGFyZSByZWFsbHkgc3RyaWN0ICEgKi8NCiAgICBQeUVycl9TZXRTdHJp
bmcoUHlFeGNfVHlwZUVycm9yLCJJbmNvcnJlY3QgbnVtYmVyIG9mIGRpbXM6
IHdlIHdhbnQgYSAyZCBhcnJheSIpOw0KICAgIHJldHVybiBOVUxMOw0KICB9
DQoNCiAgJHRhcmdldCA9IChkb3VibGUgKilhcnItPmRhdGE7IC8qIHBvaW50
ZXIgb24gZmlyc3QgZWxlbSAqLw0KICAtLSR0YXJnZXQ7DQogICBQeV9ERUNS
RUYoYXJyKTsNCn0NCg0KI2V4dGVybiBkb3VibGUgdGVzdChkb3VibGUgKkRC
XzFELGRvdWJsZSAqREJfMUQsaW50IG4saW50IG0sZG91YmxlICpPVVRQVVQp
Ow0KZXh0ZXJuIHZvaWQgcGVyaW9kKGRvdWJsZSAqREJfMUQsIGRvdWJsZSAq
REJfMUQsIGludCBuLCBkb3VibGUgb2ZhYywgZG91YmxlIGhpZmFjLCBkb3Vi
bGUgKkRCXzFELGRvdWJsZSAqREJfMUQsIGludCBucCwgaW50ICpPVVRQVVQs
IGludCAqT1VUUFVULCBkb3VibGUgKk9VVFBVVCk7DQoNCg0KDQoNCg0KDQoN
Cg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K
--830597660-686800328-945117529=:32332--