diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DEPENDENCIES/mingw32/Python27/Lib/site-packages/numpy/f2py/use_rules.py	Wed Feb 25 14:05:22 2015 +0000
@@ -0,0 +1,109 @@
+#!/usr/bin/env python
+"""
+
+Build 'use others module data' mechanism for f2py2e.
+
+Unfinished.
+
+Copyright 2000 Pearu Peterson all rights reserved,
+Pearu Peterson <pearu@ioc.ee>
+Permission to use, modify, and distribute this software is given under the
+terms of the NumPy License.
+
+NO WARRANTY IS EXPRESSED OR IMPLIED.  USE AT YOUR OWN RISK.
+$Date: 2000/09/10 12:35:43 $
+Pearu Peterson
+
+"""
+from __future__ import division, absolute_import, print_function
+
+__version__ = "$Revision: 1.3 $"[10:-1]
+
+f2py_version='See `f2py -v`'
+
+import pprint
+import sys
+errmess=sys.stderr.write
+outmess=sys.stdout.write
+show=pprint.pprint
+
+from .auxfuncs import *
+##############
+
+usemodule_rules={
+    'body':"""
+#begintitle#
+static char doc_#apiname#[] = \"\\\nVariable wrapper signature:\\n\\
+\t #name# = get_#name#()\\n\\
+Arguments:\\n\\
+#docstr#\";
+extern F_MODFUNC(#usemodulename#,#USEMODULENAME#,#realname#,#REALNAME#);
+static PyObject *#apiname#(PyObject *capi_self, PyObject *capi_args) {
+/*#decl#*/
+\tif (!PyArg_ParseTuple(capi_args, \"\")) goto capi_fail;
+printf(\"c: %d\\n\",F_MODFUNC(#usemodulename#,#USEMODULENAME#,#realname#,#REALNAME#));
+\treturn Py_BuildValue(\"\");
+capi_fail:
+\treturn NULL;
+}
+""",
+    'method':'\t{\"get_#name#\",#apiname#,METH_VARARGS|METH_KEYWORDS,doc_#apiname#},',
+    'need':['F_MODFUNC']
+    }
+
+################
+
+def buildusevars(m, r):
+    ret={}
+    outmess('\t\tBuilding use variable hooks for module "%s" (feature only for F90/F95)...\n'%(m['name']))
+    varsmap={}
+    revmap={}
+    if 'map' in r:
+        for k in r['map'].keys():
+            if r['map'][k] in revmap:
+                outmess('\t\t\tVariable "%s<=%s" is already mapped by "%s". Skipping.\n'%(r['map'][k], k, revmap[r['map'][k]]))
+            else:
+                revmap[r['map'][k]]=k
+    if 'only' in r and r['only']:
+        for v in r['map'].keys():
+            if r['map'][v] in m['vars']:
+
+                if revmap[r['map'][v]]==v:
+                    varsmap[v]=r['map'][v]
+                else:
+                    outmess('\t\t\tIgnoring map "%s=>%s". See above.\n'%(v, r['map'][v]))
+            else:
+                outmess('\t\t\tNo definition for variable "%s=>%s". Skipping.\n'%(v, r['map'][v]))
+    else:
+        for v in m['vars'].keys():
+            if v in revmap:
+                varsmap[v]=revmap[v]
+            else:
+                varsmap[v]=v
+    for v in varsmap.keys():
+        ret=dictappend(ret, buildusevar(v, varsmap[v], m['vars'], m['name']))
+    return ret
+def buildusevar(name, realname, vars, usemodulename):
+    outmess('\t\t\tConstructing wrapper function for variable "%s=>%s"...\n'%(name, realname))
+    ret={}
+    vrd={'name':name,
+         'realname':realname,
+         'REALNAME':realname.upper(),
+         'usemodulename':usemodulename,
+         'USEMODULENAME':usemodulename.upper(),
+         'texname':name.replace('_', '\\_'),
+         'begintitle':gentitle('%s=>%s'%(name, realname)),
+         'endtitle':gentitle('end of %s=>%s'%(name, realname)),
+         'apiname':'#modulename#_use_%s_from_%s'%(realname, usemodulename)
+         }
+    nummap={0:'Ro',1:'Ri',2:'Rii',3:'Riii',4:'Riv',5:'Rv',6:'Rvi',7:'Rvii',8:'Rviii',9:'Rix'}
+    vrd['texnamename']=name
+    for i in nummap.keys():
+        vrd['texnamename']=vrd['texnamename'].replace(repr(i), nummap[i])
+    if hasnote(vars[realname]): vrd['note']=vars[realname]['note']
+    rd=dictappend({}, vrd)
+    var=vars[realname]
+
+    print(name, realname, vars[realname])
+    ret=applyrules(usemodule_rules, rd)
+    return ret