(m)
| 40 | |
| 41 | |
| 42 | def 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: |
nothing calls this directly
no test coverage detected