(root)/
gettext-0.22.4/
gettext-tools/
gnulib-lib/
uniconv.in.h
       1  /* Conversions between Unicode and legacy encodings.
       2     Copyright (C) 2002, 2005, 2007, 2009-2023 Free Software Foundation, Inc.
       3  
       4     This file is free software: you can redistribute it and/or modify
       5     it under the terms of the GNU Lesser General Public License as
       6     published by the Free Software Foundation; either version 2.1 of the
       7     License, or (at your option) any later version.
       8  
       9     This file is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12     GNU Lesser General Public License for more details.
      13  
      14     You should have received a copy of the GNU Lesser General Public License
      15     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      16  
      17  #ifndef _UNICONV_H
      18  #define _UNICONV_H
      19  
      20  /* Get size_t.  */
      21  #include <stddef.h>
      22  
      23  #include "unitypes.h"
      24  
      25  /* Get enum iconv_ilseq_handler.  */
      26  #include "iconveh.h"
      27  
      28  /* Get uniconv_register_autodetect() declaration.  */
      29  #include "striconveha.h"
      30  
      31  /* Get locale_charset() declaration.  */
      32  #include "localcharset.h"
      33  
      34  
      35  #ifdef __cplusplus
      36  extern "C" {
      37  #endif
      38  
      39  
      40  /* Converts an entire string, possibly including NUL bytes, from one encoding
      41     to a Unicode encoding.
      42     Converts a memory region given in encoding FROMCODE.  FROMCODE is as for
      43     iconv_open(3).
      44     The input is in the memory region between SRC (inclusive) and SRC + SRCLEN
      45     (exclusive).
      46     If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
      47     array is filled with offsets into the result, i.e. the character starting
      48     at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
      49     and other offsets are set to (size_t)(-1).
      50     RESULTBUF and *LENGTHP should initially be a scratch buffer and its size,
      51     or *RESULTBUF can be NULL.
      52     May erase the contents of the memory at RESULTBUF.
      53     If successful: The resulting Unicode string (non-NULL) is returned and its
      54     length stored in *LENGTHP.  The resulting string is RESULTBUF if no dynamic
      55     memory allocation was necessary, or a freshly allocated memory block
      56     otherwise.
      57     In case of error: NULL is returned and errno is set.  Particular errno
      58     values: EINVAL, EILSEQ, ENOMEM.  */
      59  extern uint8_t *
      60         u8_conv_from_encoding (const char *fromcode,
      61                                enum iconv_ilseq_handler handler,
      62                                const char *src, size_t srclen,
      63                                size_t *offsets,
      64                                uint8_t *resultbuf, size_t *lengthp);
      65  extern uint16_t *
      66         u16_conv_from_encoding (const char *fromcode,
      67                                 enum iconv_ilseq_handler handler,
      68                                 const char *src, size_t srclen,
      69                                 size_t *offsets,
      70                                 uint16_t *resultbuf, size_t *lengthp);
      71  extern uint32_t *
      72         u32_conv_from_encoding (const char *fromcode,
      73                                 enum iconv_ilseq_handler handler,
      74                                 const char *src, size_t srclen,
      75                                 size_t *offsets,
      76                                 uint32_t *resultbuf, size_t *lengthp);
      77  
      78  /* Converts an entire Unicode string, possibly including NUL units, from a
      79     Unicode encoding to a given encoding.
      80     Converts a memory region to encoding TOCODE.  TOCODE is as for
      81     iconv_open(3).
      82     The input is in the memory region between SRC (inclusive) and SRC + SRCLEN
      83     (exclusive).
      84     If OFFSETS is not NULL, it should point to an array of SRCLEN integers; this
      85     array is filled with offsets into the result, i.e. the character starting
      86     at SRC[i] corresponds to the character starting at (*RESULTP)[OFFSETS[i]],
      87     and other offsets are set to (size_t)(-1).
      88     RESULTBUF and *LENGTHP should initially be a scratch buffer and its size,
      89     or RESULTBUF can be NULL.
      90     May erase the contents of the memory at RESULTBUF.
      91     If successful: The resulting string (non-NULL) is returned and its length
      92     stored in *LENGTHP.  The resulting string is RESULTBUF if no dynamic memory
      93     allocation was necessary, or a freshly allocated memory block otherwise.
      94     In case of error: NULL is returned and errno is set.  Particular errno
      95     values: EINVAL, EILSEQ, ENOMEM.  */
      96  extern char *
      97         u8_conv_to_encoding (const char *tocode,
      98                              enum iconv_ilseq_handler handler,
      99                              const uint8_t *src, size_t srclen,
     100                              size_t *offsets,
     101                              char *_UC_RESTRICT resultbuf, size_t *lengthp);
     102  extern char *
     103         u16_conv_to_encoding (const char *tocode,
     104                               enum iconv_ilseq_handler handler,
     105                               const uint16_t *src, size_t srclen,
     106                               size_t *offsets,
     107                               char *_UC_RESTRICT resultbuf, size_t *lengthp);
     108  extern char *
     109         u32_conv_to_encoding (const char *tocode,
     110                               enum iconv_ilseq_handler handler,
     111                               const uint32_t *src, size_t srclen,
     112                               size_t *offsets,
     113                               char *_UC_RESTRICT resultbuf, size_t *lengthp);
     114  
     115  /* Converts a NUL terminated string from a given encoding.
     116     The result is malloc allocated, or NULL (with errno set) in case of error.
     117     Particular errno values: EILSEQ, ENOMEM.  */
     118  extern uint8_t *
     119         u8_strconv_from_encoding (const char *string,
     120                                   const char *fromcode,
     121                                   enum iconv_ilseq_handler handler);
     122  extern uint16_t *
     123         u16_strconv_from_encoding (const char *string,
     124                                    const char *fromcode,
     125                                    enum iconv_ilseq_handler handler);
     126  extern uint32_t *
     127         u32_strconv_from_encoding (const char *string,
     128                                    const char *fromcode,
     129                                    enum iconv_ilseq_handler handler);
     130  
     131  /* Converts a NUL terminated string to a given encoding.
     132     The result is malloc allocated, or NULL (with errno set) in case of error.
     133     Particular errno values: EILSEQ, ENOMEM.  */
     134  extern char *
     135         u8_strconv_to_encoding (const uint8_t *string,
     136                                 const char *tocode,
     137                                 enum iconv_ilseq_handler handler);
     138  extern char *
     139         u16_strconv_to_encoding (const uint16_t *string,
     140                                  const char *tocode,
     141                                  enum iconv_ilseq_handler handler);
     142  extern char *
     143         u32_strconv_to_encoding (const uint32_t *string,
     144                                  const char *tocode,
     145                                  enum iconv_ilseq_handler handler);
     146  
     147  /* Converts a NUL terminated string from the locale encoding.
     148     The result is malloc allocated, or NULL (with errno set) in case of error.
     149     Particular errno values: ENOMEM.  */
     150  extern uint8_t *
     151         u8_strconv_from_locale (const char *string);
     152  extern uint16_t *
     153         u16_strconv_from_locale (const char *string);
     154  extern uint32_t *
     155         u32_strconv_from_locale (const char *string);
     156  
     157  /* Converts a NUL terminated string to the locale encoding.
     158     The result is malloc allocated, or NULL (with errno set) in case of error.
     159     Particular errno values: ENOMEM.  */
     160  extern char *
     161         u8_strconv_to_locale (const uint8_t *string);
     162  extern char *
     163         u16_strconv_to_locale (const uint16_t *string);
     164  extern char *
     165         u32_strconv_to_locale (const uint32_t *string);
     166  
     167  
     168  #ifdef __cplusplus
     169  }
     170  #endif
     171  
     172  #endif /* _UNICONV_H */