1dnl Support macro file for intrinsic functions. 2dnl Works out all the function types from the filename. 3dnl This file is part of the GNU Fortran 95 Runtime Library (libgfortran) 4dnl Distributed under the GNU GPL with exception. See COPYING for details. 5dnl M4 macro file to get type names from filenames 6define(get_typename2, `GFC_$1_$2')dnl 7define(get_typename, `get_typename2(ifelse($1,i,INTEGER,ifelse($1,r,REAL,ifelse($1,l,LOGICAL,ifelse($1,c,COMPLEX,ifelse($1,s,UINTEGER,unknown))))),`$2')')dnl 8define(get_arraytype, `gfc_array_$1$2')dnl 9define(define_type, `dnl 10ifelse(regexp($2,`^[0-9]'),-1,`dnl 11define($1_letter, substr($2, 0, 1))dnl 12define($1_kind, substr($2, 1))dnl 13',`dnl 14define($1_letter,i)dnl 15define($1_kind,$2)dnl 16')dnl 17define($1_code,$1_letter`'$1_kind)dnl 18define($1,get_arraytype($1_letter,$1_kind))dnl 19define($1_name, get_typename($1_letter, $1_kind))')dnl 20dnl 21define_type(atype, regexp(file, `_\(.?[0-9]*\)\.c$', `\1'))dnl 22define(rtype_tmp, regexp(file, `_\(.?[0-9]*\)_[^_]*\.c$', `\1'))dnl 23ifelse(rtype_tmp,,`dnl 24define_type(rtype, atype_code)dnl 25define(rtype_qual,`')dnl 26',`dnl 27define_type(rtype, rtype_tmp)dnl 28define(rtype_qual,`_'rtype_kind)dnl 29')dnl 30define(atype_max, atype_name`_HUGE')dnl 31define(atype_min,ifelse(regexp(file, `_\(.\)[0-9]*\.c$', `\1'),`i',`(-'atype_max`-1)',`-'atype_max))dnl 32define(atype_inf, atype_name`_INFINITY')dnl 33define(atype_nan, atype_name`_QUIET_NAN')dnl 34define(name, regexp(regexp(file, `[^/]*$', `\&'), `^\([^_]*\)_', `\1'))dnl 35define(`upcase', `translit(`$*', `a-z', `A-Z')')dnl 36define(`u_name',`regexp(upcase(name),`\([A-Z]*\)',`\1')')dnl 37define(rtype_ccode,ifelse(rtype_letter,`i',rtype_kind,rtype_code))dnl 38define(initval,ifelse(index(name,`maxval'),0,0,index(name,`minval'),0,255))dnl 39define(back_arg,ifelse(index(name,`maxloc'),0,``, GFC_LOGICAL_4 back'',dnl 40index(name,`minloc'),0,``, GFC_LOGICAL_4 back''))dnl 41