4
Build 'use others module data' mechanism for f2py2e.
8
Copyright 2000 Pearu Peterson all rights reserved,
9
Pearu Peterson <pearu@ioc.ee>
10
Permission to use, modify, and distribute this software is given under the
11
terms of the NumPy License.
13
NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
14
$Date: 2000/09/10 12:35:43 $
18
__version__ = "$Revision: 1.3 $"[10:-1]
20
f2py_version='See `f2py -v`'
23
import sys,string,time,types,copy
24
errmess=sys.stderr.write
25
outmess=sys.stdout.write
28
from auxfuncs import *
36
static char doc_#apiname#[] = \"\\\nVariable wrapper signature:\\n\\
37
\t #name# = get_#name#()\\n\\
40
extern F_MODFUNC(#usemodulename#,#USEMODULENAME#,#realname#,#REALNAME#);
41
static PyObject *#apiname#(PyObject *capi_self, PyObject *capi_args) {
43
\tif (!PyArg_ParseTuple(capi_args, \"\")) goto capi_fail;
44
printf(\"c: %d\\n\",F_MODFUNC(#usemodulename#,#USEMODULENAME#,#realname#,#REALNAME#));
45
\treturn Py_BuildValue(\"\");
50
'method':'\t{\"get_#name#\",#apiname#,METH_VARARGS|METH_KEYWORDS,doc_#apiname#},',
56
def buildusevars(m,r):
58
outmess('\t\tBuilding use variable hooks for module "%s" (feature only for F90/F95)...\n'%(m['name']))
62
for k in r['map'].keys():
63
if revmap.has_key(r['map'][k]):
64
outmess('\t\t\tVariable "%s<=%s" is already mapped by "%s". Skipping.\n'%(r['map'][k],k,revmap[r['map'][k]]))
67
if r.has_key('only') and r['only']:
68
for v in r['map'].keys():
69
if m['vars'].has_key(r['map'][v]):
71
if revmap[r['map'][v]]==v:
72
varsmap[v]=r['map'][v]
74
outmess('\t\t\tIgnoring map "%s=>%s". See above.\n'%(v,r['map'][v]))
76
outmess('\t\t\tNo definition for variable "%s=>%s". Skipping.\n'%(v,r['map'][v]))
78
for v in m['vars'].keys():
83
for v in varsmap.keys():
84
ret=dictappend(ret,buildusevar(v,varsmap[v],m['vars'],m['name']))
86
def buildusevar(name,realname,vars,usemodulename):
87
outmess('\t\t\tConstructing wrapper function for variable "%s=>%s"...\n'%(name,realname))
91
'REALNAME':string.upper(realname),
92
'usemodulename':usemodulename,
93
'USEMODULENAME':string.upper(usemodulename),
94
'texname':string.replace(name,'_','\\_'),
95
'begintitle':gentitle('%s=>%s'%(name,realname)),
96
'endtitle':gentitle('end of %s=>%s'%(name,realname)),
97
'apiname':'#modulename#_use_%s_from_%s'%(realname,usemodulename)
99
nummap={0:'Ro',1:'Ri',2:'Rii',3:'Riii',4:'Riv',5:'Rv',6:'Rvi',7:'Rvii',8:'Rviii',9:'Rix'}
100
vrd['texnamename']=name
101
for i in nummap.keys():
102
vrd['texnamename']=string.replace(vrd['texnamename'],`i`,nummap[i])
103
if hasnote(vars[realname]): vrd['note']=vars[realname]['note']
104
rd=dictappend({},vrd)
107
print name,realname,vars[realname]
108
ret=applyrules(usemodule_rules,rd)