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