| include(head.m4)dnl |
| dnl |
| dnl This file contains the specific functions that are not handled in the |
| dnl m4/specific.m4 file. |
| |
| #include "config.h" |
| #include "kinds.inc" |
| |
| dnl This is from GNU m4 examples file foreach.m4: |
| divert(-1) |
| # foreach(x, (item_1, item_2, ..., item_n), stmt) |
| define(`foreach', `pushdef(`$1', `')_foreach(`$1', `$2', |
| `$3')popdef(`$1')') |
| define(`_arg1', `$1') |
| define(`_foreach', |
| `ifelse(`$2', `()', , |
| `define(`$1', _arg1$2)$3`'_foreach(`$1', (shift$2), |
| `$3')')') |
| # traceon(`define', `foreach', `_foreach', `ifelse') |
| divert |
| |
| dnl NINT specifics |
| foreach(`ikind', `(4, 8, 16)', `foreach(`rkind', `(4, 8, 10, 16)', ` |
| `#if defined (HAVE_GFC_REAL_'rkind`) && defined (HAVE_GFC_INTEGER_'ikind`)' |
| elemental function _gfortran_specific__nint_`'ikind`_'rkind (parm) |
| real (kind=rkind) , intent (in) :: parm |
| integer (kind=ikind) :: _gfortran_specific__nint_`'ikind`_'rkind |
| _gfortran_specific__nint_`'ikind`_'rkind = nint (parm) |
| end function |
| #endif |
| ')') |
| |
| dnl CHAR specifics |
| foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', ` |
| `#if defined (HAVE_GFC_INTEGER_'ikind`)' |
| elemental function _gfortran_specific__char_`'ckind`_i'ikind (parm) |
| integer (kind=ikind) , intent (in) :: parm |
| character (kind=ckind,len=1) :: _gfortran_specific__char_`'ckind`_i'ikind |
| _gfortran_specific__char_`'ckind`_i'ikind` = char (parm, kind='ckind`)' |
| end function |
| #endif |
| ')') |
| |
| dnl LEN specifics |
| foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', ` |
| `#if defined (HAVE_GFC_INTEGER_'ikind`)' |
| elemental function _gfortran_specific__len_`'ckind`_i'ikind (parm) |
| character (kind=ckind,len=*) , intent (in) :: parm |
| integer (kind=ikind) :: _gfortran_specific__len_`'ckind`_i'ikind |
| _gfortran_specific__len_`'ckind`_i'ikind` = len (parm)' |
| end function |
| #endif |
| ')') |
| |
| dnl INDEX specifics |
| foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', ` |
| `#if defined (HAVE_GFC_INTEGER_'ikind`)' |
| elemental function _gfortran_specific__index_`'ckind`_i'ikind (parm1, parm2) |
| character (kind=ckind,len=*) , intent (in) :: parm1, parm2 |
| integer (kind=ikind) :: _gfortran_specific__index_`'ckind`_i'ikind |
| _gfortran_specific__index_`'ckind`_i'ikind` = index (parm1, parm2)' |
| end function |
| #endif |
| ')') |