Home | History | Annotate | Line # | Download | only in runtime
      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