(root)/
gettext-0.22.4/
gettext-tools/
libgettextpo/
iconv.in.h
       1  /* A GNU-like <iconv.h>.
       2  
       3     Copyright (C) 2007-2023 Free Software Foundation, Inc.
       4  
       5     This file is free software: you can redistribute it and/or modify
       6     it under the terms of the GNU Lesser General Public License as
       7     published by the Free Software Foundation; either version 2.1 of the
       8     License, or (at your option) any later version.
       9  
      10     This file is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      13     GNU Lesser General Public License for more details.
      14  
      15     You should have received a copy of the GNU Lesser General Public License
      16     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      17  
      18  #ifndef _@GUARD_PREFIX@_ICONV_H
      19  
      20  #if __GNUC__ >= 3
      21  @PRAGMA_SYSTEM_HEADER@
      22  #endif
      23  @PRAGMA_COLUMNS@
      24  
      25  /* The include_next requires a split double-inclusion guard.  */
      26  #@INCLUDE_NEXT@ @NEXT_ICONV_H@
      27  
      28  #ifndef _@GUARD_PREFIX@_ICONV_H
      29  #define _@GUARD_PREFIX@_ICONV_H
      30  
      31  /* This file uses GNULIB_POSIXCHECK, HAVE_RAW_DECL_*.  */
      32  #if !_GL_CONFIG_H_INCLUDED
      33   #error "Please include config.h first."
      34  #endif
      35  
      36  /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
      37  
      38  /* The definition of _GL_ARG_NONNULL is copied here.  */
      39  
      40  /* The definition of _GL_WARN_ON_USE is copied here.  */
      41  
      42  
      43  #if @GNULIB_ICONV@
      44  # if @REPLACE_ICONV_OPEN@
      45  /* An iconv_open wrapper that supports the IANA standardized encoding names
      46     ("ISO-8859-1" etc.) as far as possible.  */
      47  #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
      48  #   define iconv_open rpl_iconv_open
      49  #  endif
      50  _GL_FUNCDECL_RPL (iconv_open, iconv_t,
      51                    (const char *tocode, const char *fromcode)
      52                    _GL_ARG_NONNULL ((1, 2)));
      53  _GL_CXXALIAS_RPL (iconv_open, iconv_t,
      54                    (const char *tocode, const char *fromcode));
      55  # else
      56  _GL_CXXALIAS_SYS (iconv_open, iconv_t,
      57                    (const char *tocode, const char *fromcode));
      58  # endif
      59  _GL_CXXALIASWARN (iconv_open);
      60  #elif defined GNULIB_POSIXCHECK
      61  # undef iconv_open
      62  # if HAVE_RAW_DECL_ICONV_OPEN
      63  _GL_WARN_ON_USE (iconv_open, "iconv_open is not working correctly everywhere - "
      64                   "use gnulib module iconv for portability");
      65  # endif
      66  #endif
      67  
      68  #if @REPLACE_ICONV_UTF@
      69  /* Special constants for supporting UTF-{16,32}{BE,LE} encodings.
      70     Not public.  */
      71  # define _ICONV_UTF8_UTF16BE (iconv_t)(-161)
      72  # define _ICONV_UTF8_UTF16LE (iconv_t)(-162)
      73  # define _ICONV_UTF8_UTF32BE (iconv_t)(-163)
      74  # define _ICONV_UTF8_UTF32LE (iconv_t)(-164)
      75  # define _ICONV_UTF16BE_UTF8 (iconv_t)(-165)
      76  # define _ICONV_UTF16LE_UTF8 (iconv_t)(-166)
      77  # define _ICONV_UTF32BE_UTF8 (iconv_t)(-167)
      78  # define _ICONV_UTF32LE_UTF8 (iconv_t)(-168)
      79  #endif
      80  
      81  #if @GNULIB_ICONV@
      82  # if @REPLACE_ICONV@
      83  #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
      84  #   define iconv rpl_iconv
      85  #  endif
      86  _GL_FUNCDECL_RPL (iconv, size_t,
      87                    (iconv_t cd,
      88                     @ICONV_CONST@ char **restrict inbuf,
      89                     size_t *restrict inbytesleft,
      90                     char **restrict outbuf, size_t *restrict outbytesleft));
      91  _GL_CXXALIAS_RPL (iconv, size_t,
      92                    (iconv_t cd,
      93                     @ICONV_CONST@ char **restrict inbuf,
      94                     size_t *restrict inbytesleft,
      95                     char **restrict outbuf, size_t *restrict outbytesleft));
      96  # else
      97  /* Need to cast, because on some versions of Solaris, ICONV_CONST does
      98     not have the right value for C++.  */
      99  _GL_CXXALIAS_SYS_CAST (iconv, size_t,
     100                         (iconv_t cd,
     101                          @ICONV_CONST@ char **restrict inbuf,
     102                          size_t *restrict inbytesleft,
     103                          char **restrict outbuf, size_t *restrict outbytesleft));
     104  # endif
     105  _GL_CXXALIASWARN (iconv);
     106  # ifndef ICONV_CONST
     107  #  define ICONV_CONST @ICONV_CONST@
     108  # endif
     109  #elif defined GNULIB_POSIXCHECK
     110  # undef iconv
     111  # if HAVE_RAW_DECL_ICONV
     112  _GL_WARN_ON_USE (iconv, "iconv is not working correctly everywhere - "
     113                   "use gnulib module iconv for portability");
     114  # endif
     115  #endif
     116  
     117  #if @GNULIB_ICONV@
     118  # if @REPLACE_ICONV@
     119  #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
     120  #   define iconv_close rpl_iconv_close
     121  #  endif
     122  _GL_FUNCDECL_RPL (iconv_close, int, (iconv_t cd));
     123  _GL_CXXALIAS_RPL (iconv_close, int, (iconv_t cd));
     124  # else
     125  _GL_CXXALIAS_SYS (iconv_close, int, (iconv_t cd));
     126  # endif
     127  _GL_CXXALIASWARN (iconv_close);
     128  #endif
     129  
     130  
     131  #endif /* _@GUARD_PREFIX@_ICONV_H */
     132  #endif /* _@GUARD_PREFIX@_ICONV_H */