1 1.1 mrg /* Runtime conversion of strings from one character kind to another. 2 1.1.1.3 mrg Copyright (C) 2008-2022 Free Software Foundation, Inc. 3 1.1 mrg 4 1.1 mrg This file is part of the GNU Fortran runtime library (libgfortran). 5 1.1 mrg 6 1.1 mrg Libgfortran is free software; you can redistribute it and/or 7 1.1 mrg modify it under the terms of the GNU General Public 8 1.1 mrg License as published by the Free Software Foundation; either 9 1.1 mrg version 3 of the License, or (at your option) any later version. 10 1.1 mrg 11 1.1 mrg Libgfortran is distributed in the hope that it will be useful, 12 1.1 mrg but WITHOUT ANY WARRANTY; without even the implied warranty of 13 1.1 mrg MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 1.1 mrg GNU General Public License for more details. 15 1.1 mrg 16 1.1 mrg Under Section 7 of GPL version 3, you are granted additional 17 1.1 mrg permissions described in the GCC Runtime Library Exception, version 18 1.1 mrg 3.1, as published by the Free Software Foundation. 19 1.1 mrg 20 1.1 mrg You should have received a copy of the GNU General Public License and 21 1.1 mrg a copy of the GCC Runtime Library Exception along with this program; 22 1.1 mrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23 1.1 mrg <http://www.gnu.org/licenses/>. */ 24 1.1 mrg 25 1.1 mrg #include "libgfortran.h" 26 1.1 mrg 27 1.1 mrg 28 1.1 mrg extern void convert_char1_to_char4 (gfc_char4_t **, gfc_charlen_type, 29 1.1 mrg const unsigned char *); 30 1.1 mrg export_proto(convert_char1_to_char4); 31 1.1 mrg 32 1.1 mrg extern void convert_char4_to_char1 (unsigned char **, gfc_charlen_type, 33 1.1 mrg const gfc_char4_t *); 34 1.1 mrg export_proto(convert_char4_to_char1); 35 1.1 mrg 36 1.1 mrg 37 1.1 mrg void 38 1.1 mrg convert_char1_to_char4 (gfc_char4_t **dst, gfc_charlen_type len, 39 1.1 mrg const unsigned char *src) 40 1.1 mrg { 41 1.1 mrg gfc_charlen_type i, l; 42 1.1 mrg 43 1.1 mrg l = len > 0 ? len : 0; 44 1.1 mrg *dst = xmallocarray ((l + 1), sizeof (gfc_char4_t)); 45 1.1 mrg 46 1.1 mrg for (i = 0; i < l; i++) 47 1.1 mrg (*dst)[i] = src[i]; 48 1.1 mrg 49 1.1 mrg (*dst)[l] = '\0'; 50 1.1 mrg } 51 1.1 mrg 52 1.1 mrg 53 1.1 mrg void 54 1.1 mrg convert_char4_to_char1 (unsigned char **dst, gfc_charlen_type len, 55 1.1 mrg const gfc_char4_t *src) 56 1.1 mrg { 57 1.1 mrg gfc_charlen_type i, l; 58 1.1 mrg 59 1.1 mrg l = len > 0 ? len : 0; 60 1.1 mrg *dst = xmalloc (l + 1); 61 1.1 mrg 62 1.1 mrg for (i = 0; i < l; i++) 63 1.1 mrg (*dst)[i] = src[i]; 64 1.1 mrg 65 1.1 mrg (*dst)[l] = '\0'; 66 1.1 mrg } 67