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