comparison DEPENDENCIES/mingw32/Python27/Lib/site-packages/numpy/f2py/use_rules.py @ 87:2a2c65a20a8b

Add Python libs and headers
author Chris Cannam
date Wed, 25 Feb 2015 14:05:22 +0000
parents
children
comparison
equal deleted inserted replaced
86:413a9d26189e 87:2a2c65a20a8b
1 #!/usr/bin/env python
2 """
3
4 Build 'use others module data' mechanism for f2py2e.
5
6 Unfinished.
7
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.
12
13 NO WARRANTY IS EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
14 $Date: 2000/09/10 12:35:43 $
15 Pearu Peterson
16
17 """
18 from __future__ import division, absolute_import, print_function
19
20 __version__ = "$Revision: 1.3 $"[10:-1]
21
22 f2py_version='See `f2py -v`'
23
24 import pprint
25 import sys
26 errmess=sys.stderr.write
27 outmess=sys.stdout.write
28 show=pprint.pprint
29
30 from .auxfuncs import *
31 ##############
32
33 usemodule_rules={
34 'body':"""
35 #begintitle#
36 static char doc_#apiname#[] = \"\\\nVariable wrapper signature:\\n\\
37 \t #name# = get_#name#()\\n\\
38 Arguments:\\n\\
39 #docstr#\";
40 extern F_MODFUNC(#usemodulename#,#USEMODULENAME#,#realname#,#REALNAME#);
41 static PyObject *#apiname#(PyObject *capi_self, PyObject *capi_args) {
42 /*#decl#*/
43 \tif (!PyArg_ParseTuple(capi_args, \"\")) goto capi_fail;
44 printf(\"c: %d\\n\",F_MODFUNC(#usemodulename#,#USEMODULENAME#,#realname#,#REALNAME#));
45 \treturn Py_BuildValue(\"\");
46 capi_fail:
47 \treturn NULL;
48 }
49 """,
50 'method':'\t{\"get_#name#\",#apiname#,METH_VARARGS|METH_KEYWORDS,doc_#apiname#},',
51 'need':['F_MODFUNC']
52 }
53
54 ################
55
56 def buildusevars(m, r):
57 ret={}
58 outmess('\t\tBuilding use variable hooks for module "%s" (feature only for F90/F95)...\n'%(m['name']))
59 varsmap={}
60 revmap={}
61 if 'map' in r:
62 for k in r['map'].keys():
63 if r['map'][k] in revmap:
64 outmess('\t\t\tVariable "%s<=%s" is already mapped by "%s". Skipping.\n'%(r['map'][k], k, revmap[r['map'][k]]))
65 else:
66 revmap[r['map'][k]]=k
67 if 'only' in r and r['only']:
68 for v in r['map'].keys():
69 if r['map'][v] in m['vars']:
70
71 if revmap[r['map'][v]]==v:
72 varsmap[v]=r['map'][v]
73 else:
74 outmess('\t\t\tIgnoring map "%s=>%s". See above.\n'%(v, r['map'][v]))
75 else:
76 outmess('\t\t\tNo definition for variable "%s=>%s". Skipping.\n'%(v, r['map'][v]))
77 else:
78 for v in m['vars'].keys():
79 if v in revmap:
80 varsmap[v]=revmap[v]
81 else:
82 varsmap[v]=v
83 for v in varsmap.keys():
84 ret=dictappend(ret, buildusevar(v, varsmap[v], m['vars'], m['name']))
85 return ret
86 def buildusevar(name, realname, vars, usemodulename):
87 outmess('\t\t\tConstructing wrapper function for variable "%s=>%s"...\n'%(name, realname))
88 ret={}
89 vrd={'name':name,
90 'realname':realname,
91 'REALNAME':realname.upper(),
92 'usemodulename':usemodulename,
93 'USEMODULENAME':usemodulename.upper(),
94 'texname':name.replace('_', '\\_'),
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)
98 }
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']=vrd['texnamename'].replace(repr(i), nummap[i])
103 if hasnote(vars[realname]): vrd['note']=vars[realname]['note']
104 rd=dictappend({}, vrd)
105 var=vars[realname]
106
107 print(name, realname, vars[realname])
108 ret=applyrules(usemodule_rules, rd)
109 return ret