[f2py-users] COMMON block wrapping
Pearu Peterson
pearu@ioc.ee
Thu, 15 Jun 2000 15:01:17 +0300 (EETDST)
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.
--2007745665-1804928587-961069916=:12201
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.HPX.4.05.10006151455521.13907@egoist.ioc.ee>
On Thu, 15 Jun 2000, Thilo Ernst wrote:
> Sure, we aren't paying customers after all :-). For the meantime, could you
> perhaps share the very basics of your recently-gained F90 wrapping
> knowledge on this mailling list? I'll have to wrap one or two medium-sized
> F90 codes real soon now (i.e., with a deadline too), and even if there is no
> tool support yet, some hints about what can likely be made to work and
> what is hopeless would be very helpful. Perhaps I could even contribute
> to the f2py implementation based on my (hopefully) coming experience
> with doing-it-manually later on.
Thanks to Joaquim who pointed out the need to wrap F90 module data and
routines. Joaquim also made it possible for me to do some testing with SGI
compilers which were very good for getting an idea how system dependent
this matter would be. In fact there was no way to use or see F90 module
data and routines from C as their internal names contain a symbol `$'
which is not valid for C --- this is so for SGI MIPSPro compilers. There
is a great variation in between different compilers for mixing C/F90.
To get around this problem, I found that F90 module needs first to be
used by a F77-styled subroutine which sets pointers of the
F90 module objects to global C struct through a call-back to C function.
And that is enough for getting F90 module objects called from C. It may
sound tricky but it works and most importantly, it is quite compiler
independent.
I attached for an example relevant files. The example demonstrates
calling F90 routines/data from C and it is just showing how f2py
would wrap F90 modules in future.
> First question here: How compiler-dependent do you think this entire
> topic (wrapping F90 data/routines) is?
> (I'm using NAG f95 which can be used in Fortran-to-C-to-objectcode
> mode which seems a big advantage as I can inspect the C representation
> of everything I want to wrap. But I don't know whether what I see there
> generalizes well to other compilers.)
With my approach wrapping F90 modules is as compiler-dependent as
wrapping F77 routines!
Pearu
--2007745665-1804928587-961069916=:12201
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="mess.txt"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.HPX.4.05.10006151451560.12201@egoist.ioc.ee>
Content-Description:
Content-Disposition: ATTACHMENT; FILENAME="mess.txt"
DQpIaSENCg0KTHVja2lseSB0aGVyZSBpcyBhIHNpbXBsZSBhbmQgbW9zdCBp
bXBvcnRhbnRseSBhIHBvcnRhYmxlIHNvbHV0aW9uIHRvIHRoZQ0KcHJvYmxl
bSBvZiBhY2Nlc3NpbmcgRjkwIG1vZHVsZSBmcm9tIEMuIA0KDQpJbiBvcmRl
ciB0byBhY2Nlc3MgZGF0YSBhbmQgcm91dGluZXMgZnJvbSBhIGY5MCBtb2R1
bGUsIEkgbmVlZGVkDQp0byB3cml0ZSB0d28gd3JhcHBlciBmdW5jdGlvbnMs
IG9uZSBpbiBDIGFuZCBvbmUgaW4gRm9ydHJhbiBhbmQgdXNlIHRoZW0NCmFz
IGZvbGxvd3M6DQpGaXJzdCwgbWFpbiBmdW5jdGlvbiBpbiBDIG11c3QgY2Fs
bCB0aGUgRm9ydHJhbiB3cmFwcGVyIGZ1bmN0aW9uDQp3aXRoIHRoZSBDIHdy
YXBwZXIgZnVuY3Rpb24gaW4gdGhlIGFyZ3VtZW50LiBUaGUgRm9ydHJhbiBm
dW5jdGlvbiB0aGVuDQpjYWxscyB0aGUgQyBmdW5jdGlvbiB3aXRoIGFsbCB0
aGUgZGF0YS9yb3V0aW5lcyBpbiB0aGUgbW9kdWxlIGFzDQphcmd1bWVudHMu
IFRoZSBDIGZ1bmN0aW9uIHdpbGwgc2F2ZSB0aGUgcG9pbnRlcnMgb2YgdGhl
IGRhdGEvcm91dGluZXMgaW4gQw0KdmFyaWFibGVzIChJIHB1dCB0aGVtIGlu
IHN0cnVjdCkuIEFuZCB0aGF0cyBpdCEgWW91IGNhbiB1c2Uvc2V0L2NhbGwN
CkZvcnRyYW4gbW9kdWxlIGRhdGEvcm91dGluZXMgZnJvbSBDIGJ5IHVzaW5n
IHRoZSBzYXZlZCBwb2ludGVycy4NCg0KWW91IGNhbiBmaW5kIGFuIGV4YW1w
bGUgY29kZSBhdHRhY2hlZC4gVG8gY29tcGlsZSwgSSB1c2VkOg0KIGY5MCAt
YyAtbjMyIC1taXBzNCBzdWIuZjkwIHdyYXAuZjkwDQogY2MgbWFpbi5vIHN1
Yi5vIHdyYXAubyAtbGZvcnRyYW4NCmFuZCB0aGUgb3V0cHV0IG9mIGAuL2Eu
b3V0JyBpcw0KIGZvbzogbj0gMw0KIGFsbG9jYXRpbmcgZGF0YQ0KIGRhdGE9
IDEuLCAgNC4sICA5Lg0KIGRlYWxsb2NhdGluZyBkYXRhDQogZm9vOiBuPSA0
DQogZGF0YT0gMS4sICA0LiwgIDkuLCAgMTYuDQogZGF0YT0gMS4sICA3Liwg
IDkuLCAgMTYuDQoNClJlZ2FyZHMsDQoJUGVhcnUNCg0KUGVhcnUgUGV0ZXJz
b24gPHBlYXJ1QGlvYy5lZT4sIE1TYywgUmVzZWFyY2hlcg0KRGVwYXJ0bWVu
dCBvZiBNZWNoYW5pY3MgYW5kIEFwcGxpZWQgTWF0aGVtYXRpY3MgICAgICAg
ICAgaHR0cDovL2tvZXIuaW9jLmVlL35wZWFydS8NCkluc3RpdHV0ZSBvZiBD
eWJlcm5ldGljcyBhdCBUYWxsaW5uIFRlY2huaWNhbCBVbml2ZXJzaXR5IFBo
b25lOiAoKzM3MikgNjIwNDE2OA0KQWthZGVlbWlhIFJkLiAyMSwgMTI2MTgg
VGFsbGlubiBFU1RPTklBICAgICAgICAgICAgICAgICAgRmF4OiAgICgrMzcy
KSA2MjA0MTYxDQoqKiogdGhlIG5vbnZhbGlkaXR5IG9mIHJpZ29yb3VzIGNh
dXNhbGl0eSBpcyBuZWNlc3NhcnkgDQogICAgYW5kIG5vdCBqdXN0IGNvbnNp
c3RlbnRseSBwb3NzaWJsZSAoSGVpc2VuYmVyZywgMTkyNSkgKioqDQoNCg==
--2007745665-1804928587-961069916=:12201
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="main.c"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.HPX.4.05.10006151451561.12201@egoist.ioc.ee>
Content-Description:
Content-Disposition: ATTACHMENT; FILENAME="main.c"
DQojZGVmaW5lIFdSQVBfTU9EVUxFX01PRERBVEEgd3JhcF9tb2R1bGVfbW9k
ZGF0YV8NCg0KZXh0ZXJuIHZvaWQgV1JBUF9NT0RVTEVfTU9EREFUQSgpOw0K
DQpzdGF0aWMgc3RydWN0IHsNCiAgaW50ICpuOw0KICBmbG9hdCAqZGF0YTsN
CiAgdm9pZCAoKmZvbykoKTsNCiAgdm9pZCAoKmZvbzIpKCk7DQogIHZvaWQg
KCpiYXIpKCk7DQp9IG1vZGRhdGE7DQoNCnN0YXRpYyB2b2lkIHNldHVwX21v
ZHVsZV9tb2RkYXRhKGludCAqbixmbG9hdCAqZGF0YSx2b2lkICgqZm9vKSgp
LHZvaWQgKCpmb28yKSgpLHZvaWQgKCpiYXIpKCkpIHsNCiAgbW9kZGF0YS5u
ID0gbjsNCiAgbW9kZGF0YS5kYXRhID0gZGF0YTsNCiAgbW9kZGF0YS5mb28g
PSBmb287DQogIG1vZGRhdGEuZm9vMiA9IGZvbzI7DQogIG1vZGRhdGEuYmFy
ID0gYmFyOw0KfQ0KDQptYWluICgpIHsNCiAgV1JBUF9NT0RVTEVfTU9EREFU
QShzZXR1cF9tb2R1bGVfbW9kZGF0YSk7DQogIGlmICgxKSB7DQogICAgKiht
b2RkYXRhLm4pID0gMzsNCiAgICAoKihtb2RkYXRhLmZvbzIpKSgpOw0KICAg
ICgqKG1vZGRhdGEuYmFyKSkoKTsNCiAgfQ0KICBpZiAoMSkgew0KICAgIGlu
dCBuID0gNDsNCiAgICAoKihtb2RkYXRhLmZvbykpKCZuKTsNCiAgICBXUkFQ
X01PRFVMRV9NT0REQVRBKHNldHVwX21vZHVsZV9tb2RkYXRhKTsgLyogZm9v
IGFsbG9jYXRlZCBkYXRhLCBzbyBtb2RkYXRhLmRhdGEgbmVlZHMgdG8gYmUg
cmVzZXQgKi8NCiAgICAoKihtb2RkYXRhLmJhcikpKCk7DQogICAgbW9kZGF0
YS5kYXRhWzFdID0gNzsNCiAgICAoKihtb2RkYXRhLmJhcikpKCk7DQogIH0N
Cn0NCg0KDQoNCg0KDQoNCg==
--2007745665-1804928587-961069916=:12201
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="sub.f90"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.HPX.4.05.10006151451562.12201@egoist.ioc.ee>
Content-Description:
Content-Disposition: ATTACHMENT; FILENAME="sub.f90"
DQptb2R1bGUgbW9kZGF0YQ0KICBpbnRlZ2VyIG4NCiAgcmVhbCwgYWxsb2Nh
dGFibGUgOjogZGF0YSg6KQ0KICBjb250YWlucw0KICAgIHN1YnJvdXRpbmUg
Zm9vIChubikNCiAgICAgIGludGVnZXIgaSxubg0KICAgICAgaWYgKC5ub3Qu
IGFsbG9jYXRlZChkYXRhKSkgdGhlbg0KICAgICAgICAgcHJpbnQqLCAiYWxs
b2NhdGluZyBkYXRhIg0KICAgICAgICAgYWxsb2NhdGUgKGRhdGEobm4pKQ0K
ICAgICAgZWxzZWlmICgubm90LihuLmVxLm5uKSkgdGhlbg0KICAgICAgICAg
cHJpbnQqLCAiZGVhbGxvY2F0aW5nIGRhdGEiDQogICAgICAgICBkZWFsbG9j
YXRlKGRhdGEpDQogICAgICAgICBhbGxvY2F0ZSAoZGF0YShubikpDQogICAg
ICBlbmRpZg0KICAgICAgbiA9IG5uDQogICAgICBwcmludCosICJmb286IG49
IixuDQogICAgICBkbyBpPTEsbg0KICAgICAgICAgZGF0YShpKSA9IGkqaQ0K
ICAgICAgZW5kIGRvDQogICAgZW5kIHN1YnJvdXRpbmUgZm9vDQogICAgc3Vi
cm91dGluZSBmb28yICgpDQogICAgICBpbnRlZ2VyIGkNCiAgICAgIHByaW50
KiwgImZvbzogbj0iLG4NCiAgICAgIGlmICgubm90LiBhbGxvY2F0ZWQoZGF0
YSkpIHRoZW4NCiAgICAgICAgIHByaW50KiwgImFsbG9jYXRpbmcgZGF0YSIN
CiAgICAgICAgIGFsbG9jYXRlIChkYXRhKG4pKQ0KICAgICAgZW5kaWYNCiAg
ICAgIGRvIGk9MSxuDQogICAgICAgICBkYXRhKGkpID0gaSppDQogICAgICBl
bmQgZG8NCiAgICBlbmQgc3Vicm91dGluZSBmb28yDQogICAgc3Vicm91dGlu
ZSBiYXIgKCkNCiAgICAgIHByaW50KiwgImRhdGE9IixkYXRhDQogICAgZW5k
IHN1YnJvdXRpbmUgYmFyDQplbmQgbW9kdWxlIG1vZGRhdGENCg0KDQoNCg0K
--2007745665-1804928587-961069916=:12201
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="wrap.f90"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.HPX.4.05.10006151451563.12201@egoist.ioc.ee>
Content-Description:
Content-Disposition: ATTACHMENT; FILENAME="wrap.f90"
c3Vicm91dGluZSB3cmFwX21vZHVsZV9tb2RkYXRhKHNldHVwZnVuYykNCiAg
dXNlIG1vZGRhdGENCiAgY2FsbCBzZXR1cGZ1bmMobixkYXRhLGZvbyxmb28y
LGJhcikNCmVuZCBzdWJyb3V0aW5lIHdyYXBfbW9kdWxlX21vZGRhdGENCg0K
--2007745665-1804928587-961069916=:12201--