Mercurial > hg > vamp-build-and-test
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 |