MCPcopy Create free account
hub / github.com/numpy/numpy / buildhooks

Function buildhooks

numpy/f2py/common_rules.py:42–146  ·  view source on GitHub ↗
(m)

Source from the content-addressed store, hash-verified

40
41
42def buildhooks(m):
43 ret = {'commonhooks': [], 'initcommonhooks': [],
44 'docs': ['"COMMON blocks:\\n"']}
45 fwrap = ['']
46
47 def fadd(line, s=fwrap):
48 s[0] = '%s\n %s' % (s[0], line)
49 chooks = ['']
50
51 def cadd(line, s=chooks):
52 s[0] = '%s\n%s' % (s[0], line)
53 ihooks = ['']
54
55 def iadd(line, s=ihooks):
56 s[0] = '%s\n%s' % (s[0], line)
57 doc = ['']
58
59 def dadd(line, s=doc):
60 s[0] = '%s\n%s' % (s[0], line)
61 for (name, vnames, vars) in findcommonblocks(m):
62 lower_name = name.lower()
63 hnames, inames = [], []
64 for n in vnames:
65 if isintent_hide(vars[n]):
66 hnames.append(n)
67 else:
68 inames.append(n)
69 if hnames:
70 outmess('\t\tConstructing COMMON block support for "%s"...\n\t\t %s\n\t\t Hidden: %s\n' % (
71 name, ','.join(inames), ','.join(hnames)))
72 else:
73 outmess('\t\tConstructing COMMON block support for "%s"...\n\t\t %s\n' % (
74 name, ','.join(inames)))
75 fadd('subroutine f2pyinit%s(setupfunc)' % name)
76 for usename in getuseblocks(m):
77 fadd(f'use {usename}')
78 fadd('external setupfunc')
79 for n in vnames:
80 fadd(func2subr.var2fixfortran(vars, n))
81 if name == '_BLNK_':
82 fadd('common %s' % (','.join(vnames)))
83 else:
84 fadd('common /%s/ %s' % (name, ','.join(vnames)))
85 fadd('call setupfunc(%s)' % (','.join(inames)))
86 fadd('end\n')
87 cadd('static FortranDataDef f2py_%s_def[] = {' % (name))
88 idims = []
89 for n in inames:
90 ct = capi_maps.getctype(vars[n])
91 elsize = capi_maps.get_elsize(vars[n])
92 at = capi_maps.c2capi_map[ct]
93 dm = capi_maps.getarrdims(n, vars[n])
94 if dm['dims']:
95 idims.append('(%s)' % (dm['dims']))
96 else:
97 idims.append('')
98 dms = dm['dims'].strip()
99 if not dms:

Callers

nothing calls this directly

Calls 15

findcommonblocksFunction · 0.85
isintent_hideFunction · 0.85
getuseblocksFunction · 0.85
rmbadnameFunction · 0.85
hasnoteFunction · 0.85
lowerMethod · 0.80
stripMethod · 0.80
upperMethod · 0.80
replaceMethod · 0.80
outmessFunction · 0.70
faddFunction · 0.70
caddFunction · 0.70

Tested by

no test coverage detected