1/* Copyright (C) 2005-2020 Free Software Foundation, Inc.
2   Contributed by Janne Blomqvist
3
4This file is part of the GNU Fortran runtime library (libgfortran).
5
6Libgfortran is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 3, or (at your option)
9any later version.
10
11Libgfortran is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14GNU General Public License for more details.
15
16Under Section 7 of GPL version 3, you are granted additional
17permissions described in the GCC Runtime Library Exception, version
183.1, as published by the Free Software Foundation.
19
20You should have received a copy of the GNU General Public License and
21a copy of the GCC Runtime Library Exception along with this program;
22see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23<http://www.gnu.org/licenses/>.  */
24
25
26/* This file contains utility functions for determining the size of a
27   variable given its kind. */
28
29#include "io.h"
30
31size_t
32size_from_real_kind (int kind)
33{
34  switch (kind)
35    {
36#ifdef HAVE_GFC_REAL_4
37    case 4:
38      return sizeof (GFC_REAL_4);
39#endif
40#ifdef HAVE_GFC_REAL_8
41    case 8:
42      return sizeof (GFC_REAL_8);
43#endif
44#ifdef HAVE_GFC_REAL_10
45    case 10:
46      return sizeof (GFC_REAL_10);
47#endif
48#ifdef HAVE_GFC_REAL_16
49    case 16:
50      return sizeof (GFC_REAL_16);
51#endif
52    default:
53      return kind;
54    }
55}
56
57
58size_t
59size_from_complex_kind (int kind)
60{
61  switch (kind)
62    {
63#ifdef HAVE_GFC_COMPLEX_4
64    case 4:
65      return sizeof (GFC_COMPLEX_4);
66#endif
67#ifdef HAVE_GFC_COMPLEX_8
68    case 8:
69      return sizeof (GFC_COMPLEX_8);
70#endif
71#ifdef HAVE_GFC_COMPLEX_10
72    case 10:
73      return sizeof (GFC_COMPLEX_10);
74#endif
75#ifdef HAVE_GFC_COMPLEX_16
76    case 16:
77      return sizeof (GFC_COMPLEX_16);
78#endif
79    default:
80      return 2 * kind;
81    }
82}
83
84