Blame gl/wchar.in.h

Packit a4aae4
/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
Packit a4aae4
Packit a4aae4
   Copyright (C) 2007-2017 Free Software Foundation, Inc.
Packit a4aae4
Packit a4aae4
   This program is free software; you can redistribute it and/or modify
Packit a4aae4
   it under the terms of the GNU Lesser General Public License as published by
Packit a4aae4
   the Free Software Foundation; either version 2, or (at your option)
Packit a4aae4
   any later version.
Packit a4aae4
Packit a4aae4
   This program is distributed in the hope that it will be useful,
Packit a4aae4
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit a4aae4
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit a4aae4
   GNU Lesser General Public License for more details.
Packit a4aae4
Packit a4aae4
   You should have received a copy of the GNU Lesser General Public License
Packit a4aae4
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
Packit a4aae4
Packit a4aae4
/* Written by Eric Blake.  */
Packit a4aae4
Packit a4aae4
/*
Packit a4aae4
 * ISO C 99 <wchar.h> for platforms that have issues.
Packit a4aae4
 * <http://www.opengroup.org/susv3xbd/wchar.h.html>
Packit a4aae4
 *
Packit a4aae4
 * For now, this just ensures proper prerequisite inclusion order and
Packit a4aae4
 * the declaration of wcwidth().
Packit a4aae4
 */
Packit a4aae4
Packit a4aae4
#if __GNUC__ >= 3
Packit a4aae4
@PRAGMA_SYSTEM_HEADER@
Packit a4aae4
#endif
Packit a4aae4
@PRAGMA_COLUMNS@
Packit a4aae4
Packit a4aae4
#if (((defined __need_mbstate_t || defined __need_wint_t)               \
Packit a4aae4
      && !defined __MINGW32__ && !defined __KLIBC__)                    \
Packit a4aae4
     || (defined __hpux                                                 \
Packit a4aae4
         && ((defined _INTTYPES_INCLUDED && !defined strtoimax)         \
Packit a4aae4
             || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H))               \
Packit a4aae4
     || (defined __MINGW32__ && defined __STRING_H_SOURCED__)           \
Packit a4aae4
     || defined _GL_ALREADY_INCLUDING_WCHAR_H)
Packit a4aae4
/* Special invocation convention:
Packit a4aae4
   - Inside glibc and uClibc header files, but not MinGW.
Packit a4aae4
   - On HP-UX 11.00 we have a sequence of nested includes
Packit a4aae4
     <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
Packit a4aae4
     once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
Packit a4aae4
     and once directly.  In both situations 'wint_t' is not yet defined,
Packit a4aae4
     therefore we cannot provide the function overrides; instead include only
Packit a4aae4
     the system's <wchar.h>.
Packit a4aae4
   - With MinGW 3.22, when <string.h> includes <wchar.h>, only some part of
Packit a4aae4
     <wchar.h> is actually processed, and that doesn't include 'mbstate_t'.
Packit a4aae4
   - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
Packit a4aae4
     the latter includes <wchar.h>.  But here, we have no way to detect whether
Packit a4aae4
     <wctype.h> is completely included or is still being included.  */
Packit a4aae4
Packit a4aae4
#@INCLUDE_NEXT@ @NEXT_WCHAR_H@
Packit a4aae4
Packit a4aae4
#else
Packit a4aae4
/* Normal invocation convention.  */
Packit a4aae4
Packit a4aae4
#ifndef _@GUARD_PREFIX@_WCHAR_H
Packit a4aae4
Packit a4aae4
#define _GL_ALREADY_INCLUDING_WCHAR_H
Packit a4aae4
Packit a4aae4
#if @HAVE_FEATURES_H@
Packit a4aae4
# include <features.h> /* for __GLIBC__ */
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
Packit a4aae4
   <wchar.h>.
Packit a4aae4
   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
Packit a4aae4
   included before <wchar.h>.
Packit a4aae4
   In some builds of uClibc, <wchar.h> is nonexistent and wchar_t is defined
Packit a4aae4
   by <stddef.h>.
Packit a4aae4
   But avoid namespace pollution on glibc systems.  */
Packit a4aae4
#if !(defined __GLIBC__ && !defined __UCLIBC__)
Packit a4aae4
# include <stddef.h>
Packit a4aae4
#endif
Packit a4aae4
#ifndef __GLIBC__
Packit a4aae4
# include <stdio.h>
Packit a4aae4
# include <time.h>
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* Include the original <wchar.h> if it exists.
Packit a4aae4
   Some builds of uClibc lack it.  */
Packit a4aae4
/* The include_next requires a split double-inclusion guard.  */
Packit a4aae4
#if @HAVE_WCHAR_H@
Packit a4aae4
# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
#undef _GL_ALREADY_INCLUDING_WCHAR_H
Packit a4aae4
Packit a4aae4
#ifndef _@GUARD_PREFIX@_WCHAR_H
Packit a4aae4
#define _@GUARD_PREFIX@_WCHAR_H
Packit a4aae4
Packit a4aae4
/* The __attribute__ feature is available in gcc versions 2.5 and later.
Packit a4aae4
   The attribute __pure__ was added in gcc 2.96.  */
Packit a4aae4
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
Packit a4aae4
# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
Packit a4aae4
#else
Packit a4aae4
# define _GL_ATTRIBUTE_PURE /* empty */
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
Packit a4aae4
Packit a4aae4
/* The definition of _GL_ARG_NONNULL is copied here.  */
Packit a4aae4
Packit a4aae4
/* The definition of _GL_WARN_ON_USE is copied here.  */
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Define wint_t and WEOF.  (Also done in wctype.in.h.)  */
Packit a4aae4
#if !@HAVE_WINT_T@ && !defined wint_t
Packit a4aae4
# define wint_t int
Packit a4aae4
# ifndef WEOF
Packit a4aae4
#  define WEOF -1
Packit a4aae4
# endif
Packit a4aae4
#else
Packit a4aae4
/* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
Packit a4aae4
   <stddef.h>.  This is too small: ISO C 99 section 7.24.1.(2) says that
Packit a4aae4
   wint_t must be "unchanged by default argument promotions".  Override it.  */
Packit a4aae4
# if @GNULIB_OVERRIDES_WINT_T@
Packit a4aae4
#  if !GNULIB_defined_wint_t
Packit a4aae4
#   if @HAVE_CRTDEFS_H@
Packit a4aae4
#    include <crtdefs.h>
Packit a4aae4
#   else
Packit a4aae4
#    include <stddef.h>
Packit a4aae4
#   endif
Packit a4aae4
typedef unsigned int rpl_wint_t;
Packit a4aae4
#   undef wint_t
Packit a4aae4
#   define wint_t rpl_wint_t
Packit a4aae4
#   define GNULIB_defined_wint_t 1
Packit a4aae4
#  endif
Packit a4aae4
# endif
Packit a4aae4
# ifndef WEOF
Packit a4aae4
#  define WEOF ((wint_t) -1)
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Override mbstate_t if it is too small.
Packit a4aae4
   On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
Packit a4aae4
   implementing mbrtowc for encodings like UTF-8.  */
Packit a4aae4
#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
Packit a4aae4
# if !GNULIB_defined_mbstate_t
Packit a4aae4
typedef int rpl_mbstate_t;
Packit a4aae4
#  undef mbstate_t
Packit a4aae4
#  define mbstate_t rpl_mbstate_t
Packit a4aae4
#  define GNULIB_defined_mbstate_t 1
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Convert a single-byte character to a wide character.  */
Packit a4aae4
#if @GNULIB_BTOWC@
Packit a4aae4
# if @REPLACE_BTOWC@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef btowc
Packit a4aae4
#   define btowc rpl_btowc
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
Packit a4aae4
_GL_CXXALIAS_RPL (btowc, wint_t, (int c));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_BTOWC@
Packit a4aae4
_GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (btowc, wint_t, (int c));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (btowc);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef btowc
Packit a4aae4
# if HAVE_RAW_DECL_BTOWC
Packit a4aae4
_GL_WARN_ON_USE (btowc, "btowc is unportable - "
Packit a4aae4
                 "use gnulib module btowc for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Convert a wide character to a single-byte character.  */
Packit a4aae4
#if @GNULIB_WCTOB@
Packit a4aae4
# if @REPLACE_WCTOB@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef wctob
Packit a4aae4
#   define wctob rpl_wctob
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
Packit a4aae4
_GL_CXXALIAS_RPL (wctob, int, (wint_t wc));
Packit a4aae4
# else
Packit a4aae4
#  if !defined wctob && !@HAVE_DECL_WCTOB@
Packit a4aae4
/* wctob is provided by gnulib, or wctob exists but is not declared.  */
Packit a4aae4
_GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (wctob, int, (wint_t wc));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (wctob);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wctob
Packit a4aae4
# if HAVE_RAW_DECL_WCTOB
Packit a4aae4
_GL_WARN_ON_USE (wctob, "wctob is unportable - "
Packit a4aae4
                 "use gnulib module wctob for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Test whether *PS is in the initial state.  */
Packit a4aae4
#if @GNULIB_MBSINIT@
Packit a4aae4
# if @REPLACE_MBSINIT@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef mbsinit
Packit a4aae4
#   define mbsinit rpl_mbsinit
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps));
Packit a4aae4
_GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_MBSINIT@
Packit a4aae4
_GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps));
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (mbsinit);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef mbsinit
Packit a4aae4
# if HAVE_RAW_DECL_MBSINIT
Packit a4aae4
_GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - "
Packit a4aae4
                 "use gnulib module mbsinit for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Convert a multibyte character to a wide character.  */
Packit a4aae4
#if @GNULIB_MBRTOWC@
Packit a4aae4
# if @REPLACE_MBRTOWC@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef mbrtowc
Packit a4aae4
#   define mbrtowc rpl_mbrtowc
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (mbrtowc, size_t,
Packit a4aae4
                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
Packit a4aae4
_GL_CXXALIAS_RPL (mbrtowc, size_t,
Packit a4aae4
                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_MBRTOWC@
Packit a4aae4
_GL_FUNCDECL_SYS (mbrtowc, size_t,
Packit a4aae4
                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (mbrtowc, size_t,
Packit a4aae4
                  (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (mbrtowc);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef mbrtowc
Packit a4aae4
# if HAVE_RAW_DECL_MBRTOWC
Packit a4aae4
_GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - "
Packit a4aae4
                 "use gnulib module mbrtowc for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Recognize a multibyte character.  */
Packit a4aae4
#if @GNULIB_MBRLEN@
Packit a4aae4
# if @REPLACE_MBRLEN@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef mbrlen
Packit a4aae4
#   define mbrlen rpl_mbrlen
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
Packit a4aae4
_GL_CXXALIAS_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_MBRLEN@
Packit a4aae4
_GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (mbrlen);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef mbrlen
Packit a4aae4
# if HAVE_RAW_DECL_MBRLEN
Packit a4aae4
_GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - "
Packit a4aae4
                 "use gnulib module mbrlen for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Convert a string to a wide string.  */
Packit a4aae4
#if @GNULIB_MBSRTOWCS@
Packit a4aae4
# if @REPLACE_MBSRTOWCS@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef mbsrtowcs
Packit a4aae4
#   define mbsrtowcs rpl_mbsrtowcs
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (mbsrtowcs, size_t,
Packit a4aae4
                  (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
Packit a4aae4
                  _GL_ARG_NONNULL ((2)));
Packit a4aae4
_GL_CXXALIAS_RPL (mbsrtowcs, size_t,
Packit a4aae4
                  (wchar_t *dest, const char **srcp, size_t len,
Packit a4aae4
                   mbstate_t *ps));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_MBSRTOWCS@
Packit a4aae4
_GL_FUNCDECL_SYS (mbsrtowcs, size_t,
Packit a4aae4
                  (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
Packit a4aae4
                  _GL_ARG_NONNULL ((2)));
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (mbsrtowcs, size_t,
Packit a4aae4
                  (wchar_t *dest, const char **srcp, size_t len,
Packit a4aae4
                   mbstate_t *ps));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (mbsrtowcs);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef mbsrtowcs
Packit a4aae4
# if HAVE_RAW_DECL_MBSRTOWCS
Packit a4aae4
_GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - "
Packit a4aae4
                 "use gnulib module mbsrtowcs for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Convert a string to a wide string.  */
Packit a4aae4
#if @GNULIB_MBSNRTOWCS@
Packit a4aae4
# if @REPLACE_MBSNRTOWCS@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef mbsnrtowcs
Packit a4aae4
#   define mbsnrtowcs rpl_mbsnrtowcs
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (mbsnrtowcs, size_t,
Packit a4aae4
                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
Packit a4aae4
                   mbstate_t *ps)
Packit a4aae4
                  _GL_ARG_NONNULL ((2)));
Packit a4aae4
_GL_CXXALIAS_RPL (mbsnrtowcs, size_t,
Packit a4aae4
                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
Packit a4aae4
                   mbstate_t *ps));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_MBSNRTOWCS@
Packit a4aae4
_GL_FUNCDECL_SYS (mbsnrtowcs, size_t,
Packit a4aae4
                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
Packit a4aae4
                   mbstate_t *ps)
Packit a4aae4
                  _GL_ARG_NONNULL ((2)));
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (mbsnrtowcs, size_t,
Packit a4aae4
                  (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
Packit a4aae4
                   mbstate_t *ps));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (mbsnrtowcs);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef mbsnrtowcs
Packit a4aae4
# if HAVE_RAW_DECL_MBSNRTOWCS
Packit a4aae4
_GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - "
Packit a4aae4
                 "use gnulib module mbsnrtowcs for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Convert a wide character to a multibyte character.  */
Packit a4aae4
#if @GNULIB_WCRTOMB@
Packit a4aae4
# if @REPLACE_WCRTOMB@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef wcrtomb
Packit a4aae4
#   define wcrtomb rpl_wcrtomb
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
Packit a4aae4
_GL_CXXALIAS_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_WCRTOMB@
Packit a4aae4
_GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (wcrtomb);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcrtomb
Packit a4aae4
# if HAVE_RAW_DECL_WCRTOMB
Packit a4aae4
_GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - "
Packit a4aae4
                 "use gnulib module wcrtomb for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Convert a wide string to a string.  */
Packit a4aae4
#if @GNULIB_WCSRTOMBS@
Packit a4aae4
# if @REPLACE_WCSRTOMBS@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef wcsrtombs
Packit a4aae4
#   define wcsrtombs rpl_wcsrtombs
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (wcsrtombs, size_t,
Packit a4aae4
                  (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
Packit a4aae4
                  _GL_ARG_NONNULL ((2)));
Packit a4aae4
_GL_CXXALIAS_RPL (wcsrtombs, size_t,
Packit a4aae4
                  (char *dest, const wchar_t **srcp, size_t len,
Packit a4aae4
                   mbstate_t *ps));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_WCSRTOMBS@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsrtombs, size_t,
Packit a4aae4
                  (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
Packit a4aae4
                  _GL_ARG_NONNULL ((2)));
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcsrtombs, size_t,
Packit a4aae4
                  (char *dest, const wchar_t **srcp, size_t len,
Packit a4aae4
                   mbstate_t *ps));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (wcsrtombs);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsrtombs
Packit a4aae4
# if HAVE_RAW_DECL_WCSRTOMBS
Packit a4aae4
_GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - "
Packit a4aae4
                 "use gnulib module wcsrtombs for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Convert a wide string to a string.  */
Packit a4aae4
#if @GNULIB_WCSNRTOMBS@
Packit a4aae4
# if @REPLACE_WCSNRTOMBS@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef wcsnrtombs
Packit a4aae4
#   define wcsnrtombs rpl_wcsnrtombs
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (wcsnrtombs, size_t,
Packit a4aae4
                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
Packit a4aae4
                   mbstate_t *ps)
Packit a4aae4
                  _GL_ARG_NONNULL ((2)));
Packit a4aae4
_GL_CXXALIAS_RPL (wcsnrtombs, size_t,
Packit a4aae4
                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
Packit a4aae4
                   mbstate_t *ps));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_WCSNRTOMBS@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsnrtombs, size_t,
Packit a4aae4
                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
Packit a4aae4
                   mbstate_t *ps)
Packit a4aae4
                  _GL_ARG_NONNULL ((2)));
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcsnrtombs, size_t,
Packit a4aae4
                  (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
Packit a4aae4
                   mbstate_t *ps));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (wcsnrtombs);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsnrtombs
Packit a4aae4
# if HAVE_RAW_DECL_WCSNRTOMBS
Packit a4aae4
_GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - "
Packit a4aae4
                 "use gnulib module wcsnrtombs for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Return the number of screen columns needed for WC.  */
Packit a4aae4
#if @GNULIB_WCWIDTH@
Packit a4aae4
# if @REPLACE_WCWIDTH@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef wcwidth
Packit a4aae4
#   define wcwidth rpl_wcwidth
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
Packit a4aae4
_GL_CXXALIAS_RPL (wcwidth, int, (wchar_t));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_DECL_WCWIDTH@
Packit a4aae4
/* wcwidth exists but is not declared.  */
Packit a4aae4
_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
Packit a4aae4
#  elif defined __KLIBC__
Packit a4aae4
/* On OS/2 kLIBC, wcwidth is a macro that expands to the name of a
Packit a4aae4
   static inline function.  The implementation of wcwidth in wcwidth.c
Packit a4aae4
   causes a "conflicting types" error. */
Packit a4aae4
#   undef wcwidth
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (wcwidth);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcwidth
Packit a4aae4
# if HAVE_RAW_DECL_WCWIDTH
Packit a4aae4
_GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - "
Packit a4aae4
                 "use gnulib module wcwidth for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Search N wide characters of S for C.  */
Packit a4aae4
#if @GNULIB_WMEMCHR@
Packit a4aae4
# if !@HAVE_WMEMCHR@
Packit a4aae4
_GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n)
Packit a4aae4
                                      _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
  /* On some systems, this function is defined as an overloaded function:
Packit a4aae4
       extern "C++" {
Packit a4aae4
         const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t);
Packit a4aae4
         wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t);
Packit a4aae4
       }  */
Packit a4aae4
_GL_CXXALIAS_SYS_CAST2 (wmemchr,
Packit a4aae4
                        wchar_t *, (const wchar_t *, wchar_t, size_t),
Packit a4aae4
                        const wchar_t *, (const wchar_t *, wchar_t, size_t));
Packit a4aae4
# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
Packit a4aae4
     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
Packit a4aae4
_GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
Packit a4aae4
_GL_CXXALIASWARN1 (wmemchr, const wchar_t *,
Packit a4aae4
                   (const wchar_t *s, wchar_t c, size_t n));
Packit a4aae4
# else
Packit a4aae4
_GL_CXXALIASWARN (wmemchr);
Packit a4aae4
# endif
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wmemchr
Packit a4aae4
# if HAVE_RAW_DECL_WMEMCHR
Packit a4aae4
_GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - "
Packit a4aae4
                 "use gnulib module wmemchr for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Compare N wide characters of S1 and S2.  */
Packit a4aae4
#if @GNULIB_WMEMCMP@
Packit a4aae4
# if !@HAVE_WMEMCMP@
Packit a4aae4
_GL_FUNCDECL_SYS (wmemcmp, int,
Packit a4aae4
                  (const wchar_t *s1, const wchar_t *s2, size_t n)
Packit a4aae4
                  _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wmemcmp, int,
Packit a4aae4
                  (const wchar_t *s1, const wchar_t *s2, size_t n));
Packit a4aae4
_GL_CXXALIASWARN (wmemcmp);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wmemcmp
Packit a4aae4
# if HAVE_RAW_DECL_WMEMCMP
Packit a4aae4
_GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - "
Packit a4aae4
                 "use gnulib module wmemcmp for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Copy N wide characters of SRC to DEST.  */
Packit a4aae4
#if @GNULIB_WMEMCPY@
Packit a4aae4
# if !@HAVE_WMEMCPY@
Packit a4aae4
_GL_FUNCDECL_SYS (wmemcpy, wchar_t *,
Packit a4aae4
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wmemcpy, wchar_t *,
Packit a4aae4
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit a4aae4
_GL_CXXALIASWARN (wmemcpy);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wmemcpy
Packit a4aae4
# if HAVE_RAW_DECL_WMEMCPY
Packit a4aae4
_GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - "
Packit a4aae4
                 "use gnulib module wmemcpy for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for
Packit a4aae4
   overlapping memory areas.  */
Packit a4aae4
#if @GNULIB_WMEMMOVE@
Packit a4aae4
# if !@HAVE_WMEMMOVE@
Packit a4aae4
_GL_FUNCDECL_SYS (wmemmove, wchar_t *,
Packit a4aae4
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wmemmove, wchar_t *,
Packit a4aae4
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit a4aae4
_GL_CXXALIASWARN (wmemmove);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wmemmove
Packit a4aae4
# if HAVE_RAW_DECL_WMEMMOVE
Packit a4aae4
_GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - "
Packit a4aae4
                 "use gnulib module wmemmove for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Set N wide characters of S to C.  */
Packit a4aae4
#if @GNULIB_WMEMSET@
Packit a4aae4
# if !@HAVE_WMEMSET@
Packit a4aae4
_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
Packit a4aae4
_GL_CXXALIASWARN (wmemset);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wmemset
Packit a4aae4
# if HAVE_RAW_DECL_WMEMSET
Packit a4aae4
_GL_WARN_ON_USE (wmemset, "wmemset is unportable - "
Packit a4aae4
                 "use gnulib module wmemset for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Return the number of wide characters in S.  */
Packit a4aae4
#if @GNULIB_WCSLEN@
Packit a4aae4
# if !@HAVE_WCSLEN@
Packit a4aae4
_GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s));
Packit a4aae4
_GL_CXXALIASWARN (wcslen);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcslen
Packit a4aae4
# if HAVE_RAW_DECL_WCSLEN
Packit a4aae4
_GL_WARN_ON_USE (wcslen, "wcslen is unportable - "
Packit a4aae4
                 "use gnulib module wcslen for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Return the number of wide characters in S, but at most MAXLEN.  */
Packit a4aae4
#if @GNULIB_WCSNLEN@
Packit a4aae4
# if !@HAVE_WCSNLEN@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)
Packit a4aae4
                                   _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen));
Packit a4aae4
_GL_CXXALIASWARN (wcsnlen);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsnlen
Packit a4aae4
# if HAVE_RAW_DECL_WCSNLEN
Packit a4aae4
_GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - "
Packit a4aae4
                 "use gnulib module wcsnlen for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Copy SRC to DEST.  */
Packit a4aae4
#if @GNULIB_WCSCPY@
Packit a4aae4
# if !@HAVE_WCSCPY@
Packit a4aae4
_GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit a4aae4
_GL_CXXALIASWARN (wcscpy);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcscpy
Packit a4aae4
# if HAVE_RAW_DECL_WCSCPY
Packit a4aae4
_GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - "
Packit a4aae4
                 "use gnulib module wcscpy for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST.  */
Packit a4aae4
#if @GNULIB_WCPCPY@
Packit a4aae4
# if !@HAVE_WCPCPY@
Packit a4aae4
_GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit a4aae4
_GL_CXXALIASWARN (wcpcpy);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcpcpy
Packit a4aae4
# if HAVE_RAW_DECL_WCPCPY
Packit a4aae4
_GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - "
Packit a4aae4
                 "use gnulib module wcpcpy for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Copy no more than N wide characters of SRC to DEST.  */
Packit a4aae4
#if @GNULIB_WCSNCPY@
Packit a4aae4
# if !@HAVE_WCSNCPY@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsncpy, wchar_t *,
Packit a4aae4
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcsncpy, wchar_t *,
Packit a4aae4
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit a4aae4
_GL_CXXALIASWARN (wcsncpy);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsncpy
Packit a4aae4
# if HAVE_RAW_DECL_WCSNCPY
Packit a4aae4
_GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - "
Packit a4aae4
                 "use gnulib module wcsncpy for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Copy no more than N characters of SRC to DEST, returning the address of
Packit a4aae4
   the last character written into DEST.  */
Packit a4aae4
#if @GNULIB_WCPNCPY@
Packit a4aae4
# if !@HAVE_WCPNCPY@
Packit a4aae4
_GL_FUNCDECL_SYS (wcpncpy, wchar_t *,
Packit a4aae4
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcpncpy, wchar_t *,
Packit a4aae4
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit a4aae4
_GL_CXXALIASWARN (wcpncpy);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcpncpy
Packit a4aae4
# if HAVE_RAW_DECL_WCPNCPY
Packit a4aae4
_GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - "
Packit a4aae4
                 "use gnulib module wcpncpy for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Append SRC onto DEST.  */
Packit a4aae4
#if @GNULIB_WCSCAT@
Packit a4aae4
# if !@HAVE_WCSCAT@
Packit a4aae4
_GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
Packit a4aae4
_GL_CXXALIASWARN (wcscat);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcscat
Packit a4aae4
# if HAVE_RAW_DECL_WCSCAT
Packit a4aae4
_GL_WARN_ON_USE (wcscat, "wcscat is unportable - "
Packit a4aae4
                 "use gnulib module wcscat for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Append no more than N wide characters of SRC onto DEST.  */
Packit a4aae4
#if @GNULIB_WCSNCAT@
Packit a4aae4
# if !@HAVE_WCSNCAT@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsncat, wchar_t *,
Packit a4aae4
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcsncat, wchar_t *,
Packit a4aae4
                  (wchar_t *dest, const wchar_t *src, size_t n));
Packit a4aae4
_GL_CXXALIASWARN (wcsncat);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsncat
Packit a4aae4
# if HAVE_RAW_DECL_WCSNCAT
Packit a4aae4
_GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - "
Packit a4aae4
                 "use gnulib module wcsncat for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Compare S1 and S2.  */
Packit a4aae4
#if @GNULIB_WCSCMP@
Packit a4aae4
# if !@HAVE_WCSCMP@
Packit a4aae4
_GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)
Packit a4aae4
                               _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2));
Packit a4aae4
_GL_CXXALIASWARN (wcscmp);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcscmp
Packit a4aae4
# if HAVE_RAW_DECL_WCSCMP
Packit a4aae4
_GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - "
Packit a4aae4
                 "use gnulib module wcscmp for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Compare no more than N wide characters of S1 and S2.  */
Packit a4aae4
#if @GNULIB_WCSNCMP@
Packit a4aae4
# if !@HAVE_WCSNCMP@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsncmp, int,
Packit a4aae4
                  (const wchar_t *s1, const wchar_t *s2, size_t n)
Packit a4aae4
                  _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcsncmp, int,
Packit a4aae4
                  (const wchar_t *s1, const wchar_t *s2, size_t n));
Packit a4aae4
_GL_CXXALIASWARN (wcsncmp);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsncmp
Packit a4aae4
# if HAVE_RAW_DECL_WCSNCMP
Packit a4aae4
_GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - "
Packit a4aae4
                 "use gnulib module wcsncmp for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Compare S1 and S2, ignoring case.  */
Packit a4aae4
#if @GNULIB_WCSCASECMP@
Packit a4aae4
# if !@HAVE_WCSCASECMP@
Packit a4aae4
_GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)
Packit a4aae4
                                   _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2));
Packit a4aae4
_GL_CXXALIASWARN (wcscasecmp);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcscasecmp
Packit a4aae4
# if HAVE_RAW_DECL_WCSCASECMP
Packit a4aae4
_GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - "
Packit a4aae4
                 "use gnulib module wcscasecmp for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Compare no more than N chars of S1 and S2, ignoring case.  */
Packit a4aae4
#if @GNULIB_WCSNCASECMP@
Packit a4aae4
# if !@HAVE_WCSNCASECMP@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsncasecmp, int,
Packit a4aae4
                  (const wchar_t *s1, const wchar_t *s2, size_t n)
Packit a4aae4
                  _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcsncasecmp, int,
Packit a4aae4
                  (const wchar_t *s1, const wchar_t *s2, size_t n));
Packit a4aae4
_GL_CXXALIASWARN (wcsncasecmp);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsncasecmp
Packit a4aae4
# if HAVE_RAW_DECL_WCSNCASECMP
Packit a4aae4
_GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - "
Packit a4aae4
                 "use gnulib module wcsncasecmp for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE
Packit a4aae4
   category of the current locale.  */
Packit a4aae4
#if @GNULIB_WCSCOLL@
Packit a4aae4
# if !@HAVE_WCSCOLL@
Packit a4aae4
_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
Packit a4aae4
_GL_CXXALIASWARN (wcscoll);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcscoll
Packit a4aae4
# if HAVE_RAW_DECL_WCSCOLL
Packit a4aae4
_GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - "
Packit a4aae4
                 "use gnulib module wcscoll for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Transform S2 into array pointed to by S1 such that if wcscmp is applied
Packit a4aae4
   to two transformed strings the result is the as applying 'wcscoll' to the
Packit a4aae4
   original strings.  */
Packit a4aae4
#if @GNULIB_WCSXFRM@
Packit a4aae4
# if !@HAVE_WCSXFRM@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
Packit a4aae4
_GL_CXXALIASWARN (wcsxfrm);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsxfrm
Packit a4aae4
# if HAVE_RAW_DECL_WCSXFRM
Packit a4aae4
_GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - "
Packit a4aae4
                 "use gnulib module wcsxfrm for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Duplicate S, returning an identical malloc'd string.  */
Packit a4aae4
#if @GNULIB_WCSDUP@
Packit a4aae4
# if !@HAVE_WCSDUP@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
Packit a4aae4
_GL_CXXALIASWARN (wcsdup);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsdup
Packit a4aae4
# if HAVE_RAW_DECL_WCSDUP
Packit a4aae4
_GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - "
Packit a4aae4
                 "use gnulib module wcsdup for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Find the first occurrence of WC in WCS.  */
Packit a4aae4
#if @GNULIB_WCSCHR@
Packit a4aae4
# if !@HAVE_WCSCHR@
Packit a4aae4
_GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
Packit a4aae4
                                     _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
  /* On some systems, this function is defined as an overloaded function:
Packit a4aae4
       extern "C++" {
Packit a4aae4
         const wchar_t * std::wcschr (const wchar_t *, wchar_t);
Packit a4aae4
         wchar_t * std::wcschr (wchar_t *, wchar_t);
Packit a4aae4
       }  */
Packit a4aae4
_GL_CXXALIAS_SYS_CAST2 (wcschr,
Packit a4aae4
                        wchar_t *, (const wchar_t *, wchar_t),
Packit a4aae4
                        const wchar_t *, (const wchar_t *, wchar_t));
Packit a4aae4
# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
Packit a4aae4
     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
Packit a4aae4
_GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc));
Packit a4aae4
_GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
Packit a4aae4
# else
Packit a4aae4
_GL_CXXALIASWARN (wcschr);
Packit a4aae4
# endif
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcschr
Packit a4aae4
# if HAVE_RAW_DECL_WCSCHR
Packit a4aae4
_GL_WARN_ON_USE (wcschr, "wcschr is unportable - "
Packit a4aae4
                 "use gnulib module wcschr for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Find the last occurrence of WC in WCS.  */
Packit a4aae4
#if @GNULIB_WCSRCHR@
Packit a4aae4
# if !@HAVE_WCSRCHR@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
Packit a4aae4
                                      _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
  /* On some systems, this function is defined as an overloaded function:
Packit a4aae4
       extern "C++" {
Packit a4aae4
         const wchar_t * std::wcsrchr (const wchar_t *, wchar_t);
Packit a4aae4
         wchar_t * std::wcsrchr (wchar_t *, wchar_t);
Packit a4aae4
       }  */
Packit a4aae4
_GL_CXXALIAS_SYS_CAST2 (wcsrchr,
Packit a4aae4
                        wchar_t *, (const wchar_t *, wchar_t),
Packit a4aae4
                        const wchar_t *, (const wchar_t *, wchar_t));
Packit a4aae4
# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
Packit a4aae4
     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
Packit a4aae4
_GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc));
Packit a4aae4
_GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
Packit a4aae4
# else
Packit a4aae4
_GL_CXXALIASWARN (wcsrchr);
Packit a4aae4
# endif
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsrchr
Packit a4aae4
# if HAVE_RAW_DECL_WCSRCHR
Packit a4aae4
_GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - "
Packit a4aae4
                 "use gnulib module wcsrchr for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Return the length of the initial segmet of WCS which consists entirely
Packit a4aae4
   of wide characters not in REJECT.  */
Packit a4aae4
#if @GNULIB_WCSCSPN@
Packit a4aae4
# if !@HAVE_WCSCSPN@
Packit a4aae4
_GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)
Packit a4aae4
                                   _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject));
Packit a4aae4
_GL_CXXALIASWARN (wcscspn);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcscspn
Packit a4aae4
# if HAVE_RAW_DECL_WCSCSPN
Packit a4aae4
_GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - "
Packit a4aae4
                 "use gnulib module wcscspn for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Return the length of the initial segmet of WCS which consists entirely
Packit a4aae4
   of wide characters in ACCEPT.  */
Packit a4aae4
#if @GNULIB_WCSSPN@
Packit a4aae4
# if !@HAVE_WCSSPN@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)
Packit a4aae4
                                  _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept));
Packit a4aae4
_GL_CXXALIASWARN (wcsspn);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsspn
Packit a4aae4
# if HAVE_RAW_DECL_WCSSPN
Packit a4aae4
_GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - "
Packit a4aae4
                 "use gnulib module wcsspn for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Find the first occurrence in WCS of any character in ACCEPT.  */
Packit a4aae4
#if @GNULIB_WCSPBRK@
Packit a4aae4
# if !@HAVE_WCSPBRK@
Packit a4aae4
_GL_FUNCDECL_SYS (wcspbrk, wchar_t *,
Packit a4aae4
                  (const wchar_t *wcs, const wchar_t *accept)
Packit a4aae4
                  _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
  /* On some systems, this function is defined as an overloaded function:
Packit a4aae4
       extern "C++" {
Packit a4aae4
         const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *);
Packit a4aae4
         wchar_t * std::wcspbrk (wchar_t *, const wchar_t *);
Packit a4aae4
       }  */
Packit a4aae4
_GL_CXXALIAS_SYS_CAST2 (wcspbrk,
Packit a4aae4
                        wchar_t *, (const wchar_t *, const wchar_t *),
Packit a4aae4
                        const wchar_t *, (const wchar_t *, const wchar_t *));
Packit a4aae4
# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
Packit a4aae4
     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
Packit a4aae4
_GL_CXXALIASWARN1 (wcspbrk, wchar_t *,
Packit a4aae4
                   (wchar_t *wcs, const wchar_t *accept));
Packit a4aae4
_GL_CXXALIASWARN1 (wcspbrk, const wchar_t *,
Packit a4aae4
                   (const wchar_t *wcs, const wchar_t *accept));
Packit a4aae4
# else
Packit a4aae4
_GL_CXXALIASWARN (wcspbrk);
Packit a4aae4
# endif
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcspbrk
Packit a4aae4
# if HAVE_RAW_DECL_WCSPBRK
Packit a4aae4
_GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - "
Packit a4aae4
                 "use gnulib module wcspbrk for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Find the first occurrence of NEEDLE in HAYSTACK.  */
Packit a4aae4
#if @GNULIB_WCSSTR@
Packit a4aae4
# if !@HAVE_WCSSTR@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsstr, wchar_t *,
Packit a4aae4
                  (const wchar_t *haystack, const wchar_t *needle)
Packit a4aae4
                  _GL_ATTRIBUTE_PURE);
Packit a4aae4
# endif
Packit a4aae4
  /* On some systems, this function is defined as an overloaded function:
Packit a4aae4
       extern "C++" {
Packit a4aae4
         const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *);
Packit a4aae4
         wchar_t * std::wcsstr (wchar_t *, const wchar_t *);
Packit a4aae4
       }  */
Packit a4aae4
_GL_CXXALIAS_SYS_CAST2 (wcsstr,
Packit a4aae4
                        wchar_t *, (const wchar_t *, const wchar_t *),
Packit a4aae4
                        const wchar_t *, (const wchar_t *, const wchar_t *));
Packit a4aae4
# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
Packit a4aae4
     && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
Packit a4aae4
_GL_CXXALIASWARN1 (wcsstr, wchar_t *,
Packit a4aae4
                   (wchar_t *haystack, const wchar_t *needle));
Packit a4aae4
_GL_CXXALIASWARN1 (wcsstr, const wchar_t *,
Packit a4aae4
                   (const wchar_t *haystack, const wchar_t *needle));
Packit a4aae4
# else
Packit a4aae4
_GL_CXXALIASWARN (wcsstr);
Packit a4aae4
# endif
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsstr
Packit a4aae4
# if HAVE_RAW_DECL_WCSSTR
Packit a4aae4
_GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - "
Packit a4aae4
                 "use gnulib module wcsstr for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Divide WCS into tokens separated by characters in DELIM.  */
Packit a4aae4
#if @GNULIB_WCSTOK@
Packit a4aae4
# if !@HAVE_WCSTOK@
Packit a4aae4
_GL_FUNCDECL_SYS (wcstok, wchar_t *,
Packit a4aae4
                  (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcstok, wchar_t *,
Packit a4aae4
                  (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
Packit a4aae4
_GL_CXXALIASWARN (wcstok);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcstok
Packit a4aae4
# if HAVE_RAW_DECL_WCSTOK
Packit a4aae4
_GL_WARN_ON_USE (wcstok, "wcstok is unportable - "
Packit a4aae4
                 "use gnulib module wcstok for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Determine number of column positions required for first N wide
Packit a4aae4
   characters (or fewer if S ends before this) in S.  */
Packit a4aae4
#if @GNULIB_WCSWIDTH@
Packit a4aae4
# if @REPLACE_WCSWIDTH@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef wcswidth
Packit a4aae4
#   define wcswidth rpl_wcswidth
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n)
Packit a4aae4
                                 _GL_ATTRIBUTE_PURE);
Packit a4aae4
_GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_WCSWIDTH@
Packit a4aae4
_GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n)
Packit a4aae4
                                 _GL_ATTRIBUTE_PURE);
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (wcswidth);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcswidth
Packit a4aae4
# if HAVE_RAW_DECL_WCSWIDTH
Packit a4aae4
_GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - "
Packit a4aae4
                 "use gnulib module wcswidth for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
/* Convert *TP to a date and time wide string.  See
Packit a4aae4
   <http://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsftime.html>.  */
Packit a4aae4
#if @GNULIB_WCSFTIME@
Packit a4aae4
# if @REPLACE_WCSFTIME@
Packit a4aae4
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit a4aae4
#   undef wcsftime
Packit a4aae4
#   define wcsftime rpl_wcsftime
Packit a4aae4
#  endif
Packit a4aae4
_GL_FUNCDECL_RPL (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
Packit a4aae4
                                     const wchar_t *__fmt, const struct tm *__tp)
Packit a4aae4
                                    _GL_ARG_NONNULL ((1, 3, 4)));
Packit a4aae4
_GL_CXXALIAS_RPL (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
Packit a4aae4
                                     const wchar_t *__fmt, const struct tm *__tp));
Packit a4aae4
# else
Packit a4aae4
#  if !@HAVE_WCSFTIME@
Packit a4aae4
_GL_FUNCDECL_SYS (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
Packit a4aae4
                                     const wchar_t *__fmt, const struct tm *__tp)
Packit a4aae4
                                    _GL_ARG_NONNULL ((1, 3, 4)));
Packit a4aae4
#  endif
Packit a4aae4
_GL_CXXALIAS_SYS (wcsftime, size_t, (wchar_t *__buf, size_t __bufsize,
Packit a4aae4
                                     const wchar_t *__fmt, const struct tm *__tp));
Packit a4aae4
# endif
Packit a4aae4
_GL_CXXALIASWARN (wcsftime);
Packit a4aae4
#elif defined GNULIB_POSIXCHECK
Packit a4aae4
# undef wcsftime
Packit a4aae4
# if HAVE_RAW_DECL_WCSFTIME
Packit a4aae4
_GL_WARN_ON_USE (wcsftime, "wcsftime is unportable - "
Packit a4aae4
                 "use gnulib module wcsftime for portability");
Packit a4aae4
# endif
Packit a4aae4
#endif
Packit a4aae4
Packit a4aae4
Packit a4aae4
#endif /* _@GUARD_PREFIX@_WCHAR_H */
Packit a4aae4
#endif /* _@GUARD_PREFIX@_WCHAR_H */
Packit a4aae4
#endif