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