netcdf-c/f90/NOTES
2010-06-03 13:24:43 +00:00

38 lines
1.2 KiB
Plaintext

Implemented with 4 files:
f90aux.m4 auxiliary m4 macro definitions used by nves.m4 and nvea.m4
nves.m4 to generate netcdf_vars_expand_single variations
nvea.m4 to generate netcdf_vars_expand_arrays variations
gen.m4 defines top-level NVES and NVEA macros and invokes them to
generate all variations
To generate all the 6*2 nves functions and 7*6*2 nvea functions:
m4 gen.m4 > netcdf_expanded.f90
m4 uses common names for some built-in macros, e.g. "index", so
f90aux.m4 renames a few of these to avoid clashes with source
variables and functions.
All the invocations of the "dnl" macro (delete to new line) in
f90aux.m4 are just to avoid gratuitous blank lines in the output.
m4 may be used for generating parameterized documentation and
comments also.
Another approach to generating all the f90 functions other than the
definition and invocation of the top-level NVES and NVEA macros in
gen.m4 would be to just invoke m4 for each function generation,
something like:
m4 -D NUMDIMS=2 -D KINDVALUE=FourByteReal -D PUTORGET=put f90aux.m4 nvea.m4
for the array functions, or
m4 -D NUMDIMS=0 -D KINDVALUE=FourByteReal -D PUTORGET=put f90aux.m4 nves.m4
for the single value functions.