annotate libgfortran/m4/misc_specifics.m4 @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 include(head.m4)dnl
kono
parents:
diff changeset
2 dnl
kono
parents:
diff changeset
3 dnl This file contains the specific functions that are not handled in the
kono
parents:
diff changeset
4 dnl m4/specific.m4 file.
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 #include "config.h"
kono
parents:
diff changeset
7 #include "kinds.inc"
kono
parents:
diff changeset
8
kono
parents:
diff changeset
9 dnl This is from GNU m4 examples file foreach.m4:
kono
parents:
diff changeset
10 divert(-1)
kono
parents:
diff changeset
11 # foreach(x, (item_1, item_2, ..., item_n), stmt)
kono
parents:
diff changeset
12 define(`foreach', `pushdef(`$1', `')_foreach(`$1', `$2',
kono
parents:
diff changeset
13 `$3')popdef(`$1')')
kono
parents:
diff changeset
14 define(`_arg1', `$1')
kono
parents:
diff changeset
15 define(`_foreach',
kono
parents:
diff changeset
16 `ifelse(`$2', `()', ,
kono
parents:
diff changeset
17 `define(`$1', _arg1$2)$3`'_foreach(`$1', (shift$2),
kono
parents:
diff changeset
18 `$3')')')
kono
parents:
diff changeset
19 # traceon(`define', `foreach', `_foreach', `ifelse')
kono
parents:
diff changeset
20 divert
kono
parents:
diff changeset
21
kono
parents:
diff changeset
22 dnl NINT specifics
kono
parents:
diff changeset
23 foreach(`ikind', `(4, 8, 16)', `foreach(`rkind', `(4, 8, 10, 16)', `
kono
parents:
diff changeset
24 `#if defined (HAVE_GFC_REAL_'rkind`) && defined (HAVE_GFC_INTEGER_'ikind`)'
kono
parents:
diff changeset
25 elemental function _gfortran_specific__nint_`'ikind`_'rkind (parm)
kono
parents:
diff changeset
26 real (kind=rkind) , intent (in) :: parm
kono
parents:
diff changeset
27 integer (kind=ikind) :: _gfortran_specific__nint_`'ikind`_'rkind
kono
parents:
diff changeset
28 _gfortran_specific__nint_`'ikind`_'rkind = nint (parm)
kono
parents:
diff changeset
29 end function
kono
parents:
diff changeset
30 #endif
kono
parents:
diff changeset
31 ')')
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 dnl CHAR specifics
kono
parents:
diff changeset
34 foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', `
kono
parents:
diff changeset
35 `#if defined (HAVE_GFC_INTEGER_'ikind`)'
kono
parents:
diff changeset
36 elemental function _gfortran_specific__char_`'ckind`_i'ikind (parm)
kono
parents:
diff changeset
37 integer (kind=ikind) , intent (in) :: parm
kono
parents:
diff changeset
38 character (kind=ckind,len=1) :: _gfortran_specific__char_`'ckind`_i'ikind
kono
parents:
diff changeset
39 _gfortran_specific__char_`'ckind`_i'ikind` = char (parm, kind='ckind`)'
kono
parents:
diff changeset
40 end function
kono
parents:
diff changeset
41 #endif
kono
parents:
diff changeset
42 ')')
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 dnl LEN specifics
kono
parents:
diff changeset
45 foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', `
kono
parents:
diff changeset
46 `#if defined (HAVE_GFC_INTEGER_'ikind`)'
kono
parents:
diff changeset
47 elemental function _gfortran_specific__len_`'ckind`_i'ikind (parm)
kono
parents:
diff changeset
48 character (kind=ckind,len=*) , intent (in) :: parm
kono
parents:
diff changeset
49 integer (kind=ikind) :: _gfortran_specific__len_`'ckind`_i'ikind
kono
parents:
diff changeset
50 _gfortran_specific__len_`'ckind`_i'ikind` = len (parm)'
kono
parents:
diff changeset
51 end function
kono
parents:
diff changeset
52 #endif
kono
parents:
diff changeset
53 ')')
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 dnl INDEX specifics
kono
parents:
diff changeset
56 foreach(`ckind', `(1)', `foreach(`ikind', `(4, 8, 16)', `
kono
parents:
diff changeset
57 `#if defined (HAVE_GFC_INTEGER_'ikind`)'
kono
parents:
diff changeset
58 elemental function _gfortran_specific__index_`'ckind`_i'ikind (parm1, parm2)
kono
parents:
diff changeset
59 character (kind=ckind,len=*) , intent (in) :: parm1, parm2
kono
parents:
diff changeset
60 integer (kind=ikind) :: _gfortran_specific__index_`'ckind`_i'ikind
kono
parents:
diff changeset
61 _gfortran_specific__index_`'ckind`_i'ikind` = index (parm1, parm2)'
kono
parents:
diff changeset
62 end function
kono
parents:
diff changeset
63 #endif
kono
parents:
diff changeset
64 ')')