4 spaces per indentation level, no tabs, no trailing whitespace, and a single newline at end of each file.
44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
f = open('modules','r')
|
|
lines = f.readlines()
|
|
gen = {}
|
|
mods = []
|
|
for m in lines:
|
|
file, prefix = m.split()
|
|
fm = open(file,'r')
|
|
mlines = fm.readlines()
|
|
for line in mlines:
|
|
toks = line.split()
|
|
if len(toks) == 2:
|
|
if toks[0] == 'module':
|
|
mods.append(toks[1])
|
|
|
|
le = line.find('end')
|
|
lf = line.find('function')
|
|
ls = line.find('subroutine')
|
|
loc = line.find(prefix+'_')
|
|
if le < 0 and (lf > 0 or ls > 0):
|
|
if loc > 0:
|
|
sline = line[loc:]
|
|
n = len(prefix)
|
|
p = sline.find('(')
|
|
nm = sline[n+1:p]
|
|
if nm <> '':
|
|
if gen.has_key(nm):
|
|
gen[nm].append(prefix+'_'+nm)
|
|
else:
|
|
gen[nm] = [prefix+'_'+nm]
|
|
|
|
fout = open('canteramod.f90','w')
|
|
fout.write('MODULE CANTERA\n\n')
|
|
for m in mods:
|
|
fout.write(' USE '+m+'\n')
|
|
|
|
funcs = gen.keys()
|
|
funcs.sort()
|
|
for fn in funcs:
|
|
fout.write('\n INTERFACE '+fn+'\n')
|
|
for cf in gen[fn]:
|
|
fout.write(' MODULE PROCEDURE '+cf+'\n')
|
|
fout.write(' END INTERFACE '+fn+'\n')
|
|
|
|
fout.write('\nEND MODULE CANTERA\n\n')
|