File: same_int_size_t.f90

package info (click to toggle)
eccodes 2.43.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 420,752 kB
  • sloc: cpp: 153,709; sh: 20,505; ansic: 12,673; f90: 6,854; python: 3,011; perl: 2,744; javascript: 1,427; yacc: 854; fortran: 468; lex: 359; makefile: 141
file content (76 lines) | stat: -rw-r--r-- 1,679 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
! (C) Copyright 2005- ECMWF.
!
! This software is licensed under the terms of the Apache Licence Version 2.0
! which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
!
! In applying this licence, ECMWF does not waive the privileges and immunities granted to it by
! virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction.

integer function kind_of_size_t()
  integer(2), dimension(2) :: x2 = (/1, 2/)
  integer(4), dimension(2) :: x4 = (/1, 2/)
  integer(8), dimension(2) :: x8 = (/1, 2/)
  character(len=1) :: ret

  kind_of_size_t = -1

  call check_size_t(x2(1), x2(2), ret)
  if (ret == 't') then
    kind_of_size_t = 2
    return
  end if

  call check_size_t(x4(1), x4(2), ret)
  if (ret == 't') then
    kind_of_size_t = 4
    return
  end if

  call check_size_t(x8(1), x8(2), ret)
  if (ret == 't') then
    kind_of_size_t = 8
    return
  end if

end function kind_of_size_t

integer function kind_of_int()
  integer(2), dimension(2) :: x2 = (/1, 2/)
  integer(4), dimension(2) :: x4 = (/1, 2/)
  integer(8), dimension(2) :: x8 = (/1, 2/)
  character(len=1) :: ret

  kind_of_int = -1

  call check_int(x2(1), x2(2), ret)
  if (ret == 't') then
    kind_of_int = 2
    return
  end if

  call check_int(x4(1), x4(2), ret)
  if (ret == 't') then
    kind_of_int = 4
    return
  end if

  call check_int(x8(1), x8(2), ret)
  if (ret == 't') then
    kind_of_int = 8
    return
  end if

end function kind_of_int

program same_int_size_t
  integer ki, kl

  ki = kind_of_int()
  kl = kind_of_size_t()
  if (ki /= kl) then
    write (*, '(i1)') 0
  else
    write (*, '(i1)') 1
  end if
end program same_int_size_t