define(get_typename2, `GFC_$1_$2')define(get_typename, `get_typename2(ifelse($1,i,INTEGER,ifelse($1,r,REAL,ifelse($1,l,LOGICAL,ifelse($1,c,COMPLEX,unknown)))),`$2')')define(get_arraytype, `gfc_array_$1$2')define(define_type, `ifelse(regexp($2,`^[0-9]'),-1,`define($1_letter, substr($2, 0, 1))define($1_kind, substr($2, 1))',`define($1_letter,i)define($1_kind,$2)')define($1_code,$1_letter`'$1_kind)define($1,get_arraytype($1_letter,$1_kind))define($1_name, get_typename($1_letter, $1_kind))')define_type(atype, regexp(file, `_\(.?[0-9]*\)\.c$', `\1'))define(rtype_tmp, regexp(file, `_\(.?[0-9]*\)_[^_]*\.c$', `\1'))ifelse(rtype_tmp,,`define_type(rtype, atype_code)define(rtype_qual,`')',`define_type(rtype, rtype_tmp)define(rtype_qual,`_'rtype_kind)')define(atype_max, atype_name`_HUGE')define(atype_min,ifelse(regexp(file, `_\(.\)[0-9]*\.c$', `\1'),`i',`(-'atype_max`-1)',`-'atype_max))define(name, regexp(regexp(file, `[^/]*$', `\&'), `^\([^_]*\)_', `\1'))define(rtype_ccode,ifelse(rtype_letter,`i',rtype_kind,rtype_code))