xref: /netbsd-src/external/gpl3/gcc.old/dist/libgfortran/m4/iparm.m4 (revision 627f7eb200a4419d89b531d55fccd2ee3ffdcde0)
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