Blame lib/wctype.in.h

Packit 709fb3
/* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
Packit 709fb3
Packit 709fb3
   Copyright (C) 2006-2017 Free Software Foundation, Inc.
Packit 709fb3
Packit 709fb3
   This program is free software; you can redistribute it and/or modify
Packit 709fb3
   it under the terms of the GNU General Public License as published by
Packit 709fb3
   the Free Software Foundation; either version 3, or (at your option)
Packit 709fb3
   any later version.
Packit 709fb3
Packit 709fb3
   This program is distributed in the hope that it will be useful,
Packit 709fb3
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 709fb3
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 709fb3
   GNU General Public License for more details.
Packit 709fb3
Packit 709fb3
   You should have received a copy of the GNU General Public License
Packit 709fb3
   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
Packit 709fb3
Packit 709fb3
/* Written by Bruno Haible and Paul Eggert.  */
Packit 709fb3
Packit 709fb3
/*
Packit 709fb3
 * ISO C 99 <wctype.h> for platforms that lack it.
Packit 709fb3
 * <http://www.opengroup.org/susv3xbd/wctype.h.html>
Packit 709fb3
 *
Packit 709fb3
 * iswctype, towctrans, towlower, towupper, wctrans, wctype,
Packit 709fb3
 * wctrans_t, and wctype_t are not yet implemented.
Packit 709fb3
 */
Packit 709fb3
Packit 709fb3
#if __GNUC__ >= 3
Packit 709fb3
@PRAGMA_SYSTEM_HEADER@
Packit 709fb3
#endif
Packit 709fb3
@PRAGMA_COLUMNS@
Packit 709fb3
Packit 709fb3
#if (defined __MINGW32__ && defined __CTYPE_H_SOURCED__)
Packit 709fb3
Packit 709fb3
/* Special invocation convention:
Packit 709fb3
   - With MinGW 3.22, when <ctype.h> includes <wctype.h>, only some part of
Packit 709fb3
     <wctype.h> is being processed, which doesn't include the idempotency
Packit 709fb3
     guard.   */
Packit 709fb3
Packit 709fb3
#@INCLUDE_NEXT@ @NEXT_WCTYPE_H@
Packit 709fb3
Packit 709fb3
#else
Packit 709fb3
/* Normal invocation convention.  */
Packit 709fb3
Packit 709fb3
#ifndef _@GUARD_PREFIX@_WCTYPE_H
Packit 709fb3
Packit 709fb3
#if @HAVE_WINT_T@
Packit 709fb3
/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.
Packit 709fb3
   Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
Packit 709fb3
   <wchar.h>.
Packit 709fb3
   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
Packit 709fb3
   included before <wchar.h>.  */
Packit 709fb3
# include <stddef.h>
Packit 709fb3
# include <stdio.h>
Packit 709fb3
# include <time.h>
Packit 709fb3
# include <wchar.h>
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
/* Native Windows (mingw, MSVC) have declarations of towupper, towlower, and
Packit 709fb3
   isw* functions in <ctype.h>, <wchar.h> as well as in <wctype.h>.  Include
Packit 709fb3
   <ctype.h>, <wchar.h> in advance to avoid rpl_ prefix being added to the
Packit 709fb3
   declarations.  */
Packit 709fb3
#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
Packit 709fb3
# include <ctype.h>
Packit 709fb3
# include <wchar.h>
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
/* Include the original <wctype.h> if it exists.
Packit 709fb3
   BeOS 5 has the functions but no <wctype.h>.  */
Packit 709fb3
/* The include_next requires a split double-inclusion guard.  */
Packit 709fb3
#if @HAVE_WCTYPE_H@
Packit 709fb3
# @INCLUDE_NEXT@ @NEXT_WCTYPE_H@
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
#ifndef _@GUARD_PREFIX@_WCTYPE_H
Packit 709fb3
#define _@GUARD_PREFIX@_WCTYPE_H
Packit 709fb3
Packit 709fb3
#ifndef _GL_INLINE_HEADER_BEGIN
Packit 709fb3
 #error "Please include config.h first."
Packit 709fb3
#endif
Packit 709fb3
_GL_INLINE_HEADER_BEGIN
Packit 709fb3
#ifndef _GL_WCTYPE_INLINE
Packit 709fb3
# define _GL_WCTYPE_INLINE _GL_INLINE
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
Packit 709fb3
Packit 709fb3
/* The definition of _GL_WARN_ON_USE is copied here.  */
Packit 709fb3
Packit 709fb3
/* Solaris 2.6 <wctype.h> includes <widec.h> which includes <euc.h> which
Packit 709fb3
   #defines a number of identifiers in the application namespace.  Revert
Packit 709fb3
   these #defines.  */
Packit 709fb3
#ifdef __sun
Packit 709fb3
# undef multibyte
Packit 709fb3
# undef eucw1
Packit 709fb3
# undef eucw2
Packit 709fb3
# undef eucw3
Packit 709fb3
# undef scrw1
Packit 709fb3
# undef scrw2
Packit 709fb3
# undef scrw3
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
/* Define wint_t and WEOF.  (Also done in wchar.in.h.)  */
Packit 709fb3
#if !@HAVE_WINT_T@ && !defined wint_t
Packit 709fb3
# define wint_t int
Packit 709fb3
# ifndef WEOF
Packit 709fb3
#  define WEOF -1
Packit 709fb3
# endif
Packit 709fb3
#else
Packit 709fb3
/* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
Packit 709fb3
   <stddef.h>.  This is too small: ISO C 99 section 7.24.1.(2) says that
Packit 709fb3
   wint_t must be "unchanged by default argument promotions".  Override it.  */
Packit 709fb3
# if @GNULIB_OVERRIDES_WINT_T@
Packit 709fb3
#  if !GNULIB_defined_wint_t
Packit 709fb3
#   if @HAVE_CRTDEFS_H@
Packit 709fb3
#    include <crtdefs.h>
Packit 709fb3
#   else
Packit 709fb3
#    include <stddef.h>
Packit 709fb3
#   endif
Packit 709fb3
typedef unsigned int rpl_wint_t;
Packit 709fb3
#   undef wint_t
Packit 709fb3
#   define wint_t rpl_wint_t
Packit 709fb3
#   define GNULIB_defined_wint_t 1
Packit 709fb3
#  endif
Packit 709fb3
# endif
Packit 709fb3
# ifndef WEOF
Packit 709fb3
#  define WEOF ((wint_t) -1)
Packit 709fb3
# endif
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
Packit 709fb3
#if !GNULIB_defined_wctype_functions
Packit 709fb3
Packit 709fb3
/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
Packit 709fb3
   Linux libc5 has <wctype.h> and the functions but they are broken.
Packit 709fb3
   Assume all 11 functions (all isw* except iswblank) are implemented the
Packit 709fb3
   same way, or not at all.  */
Packit 709fb3
# if ! @HAVE_ISWCNTRL@ || @REPLACE_ISWCNTRL@
Packit 709fb3
Packit 709fb3
/* IRIX 5.3 has macros but no functions, its isw* macros refer to an
Packit 709fb3
   undefined variable _ctmp_ and to <ctype.h> macros like _P, and they
Packit 709fb3
   refer to system functions like _iswctype that are not in the
Packit 709fb3
   standard C library.  Rather than try to get ancient buggy
Packit 709fb3
   implementations like this to work, just disable them.  */
Packit 709fb3
#  undef iswalnum
Packit 709fb3
#  undef iswalpha
Packit 709fb3
#  undef iswblank
Packit 709fb3
#  undef iswcntrl
Packit 709fb3
#  undef iswdigit
Packit 709fb3
#  undef iswgraph
Packit 709fb3
#  undef iswlower
Packit 709fb3
#  undef iswprint
Packit 709fb3
#  undef iswpunct
Packit 709fb3
#  undef iswspace
Packit 709fb3
#  undef iswupper
Packit 709fb3
#  undef iswxdigit
Packit 709fb3
#  undef towlower
Packit 709fb3
#  undef towupper
Packit 709fb3
Packit 709fb3
/* Linux libc5 has <wctype.h> and the functions but they are broken.  */
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 709fb3
#    define iswalnum rpl_iswalnum
Packit 709fb3
#    define iswalpha rpl_iswalpha
Packit 709fb3
#    define iswblank rpl_iswblank
Packit 709fb3
#    define iswcntrl rpl_iswcntrl
Packit 709fb3
#    define iswdigit rpl_iswdigit
Packit 709fb3
#    define iswgraph rpl_iswgraph
Packit 709fb3
#    define iswlower rpl_iswlower
Packit 709fb3
#    define iswprint rpl_iswprint
Packit 709fb3
#    define iswpunct rpl_iswpunct
Packit 709fb3
#    define iswspace rpl_iswspace
Packit 709fb3
#    define iswupper rpl_iswupper
Packit 709fb3
#    define iswxdigit rpl_iswxdigit
Packit 709fb3
#   endif
Packit 709fb3
#  endif
Packit 709fb3
#  if @REPLACE_TOWLOWER@
Packit 709fb3
#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 709fb3
#    define towlower rpl_towlower
Packit 709fb3
#    define towupper rpl_towupper
Packit 709fb3
#   endif
Packit 709fb3
#  endif
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswalnum
Packit 709fb3
#  else
Packit 709fb3
iswalnum
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return ((wc >= '0' && wc <= '9')
Packit 709fb3
          || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswalpha
Packit 709fb3
#  else
Packit 709fb3
iswalpha
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswblank
Packit 709fb3
#  else
Packit 709fb3
iswblank
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return wc == ' ' || wc == '\t';
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswcntrl
Packit 709fb3
#  else
Packit 709fb3
iswcntrl
Packit 709fb3
#  endif
Packit 709fb3
        (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return (wc & ~0x1f) == 0 || wc == 0x7f;
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswdigit
Packit 709fb3
#  else
Packit 709fb3
iswdigit
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return wc >= '0' && wc <= '9';
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswgraph
Packit 709fb3
#  else
Packit 709fb3
iswgraph
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return wc >= '!' && wc <= '~';
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswlower
Packit 709fb3
#  else
Packit 709fb3
iswlower
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return wc >= 'a' && wc <= 'z';
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswprint
Packit 709fb3
#  else
Packit 709fb3
iswprint
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return wc >= ' ' && wc <= '~';
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswpunct
Packit 709fb3
#  else
Packit 709fb3
iswpunct
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return (wc >= '!' && wc <= '~'
Packit 709fb3
          && !((wc >= '0' && wc <= '9')
Packit 709fb3
               || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswspace
Packit 709fb3
#  else
Packit 709fb3
iswspace
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return (wc == ' ' || wc == '\t'
Packit 709fb3
          || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswupper
Packit 709fb3
#  else
Packit 709fb3
iswupper
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return wc >= 'A' && wc <= 'Z';
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE int
Packit 709fb3
#  if @REPLACE_ISWCNTRL@
Packit 709fb3
rpl_iswxdigit
Packit 709fb3
#  else
Packit 709fb3
iswxdigit
Packit 709fb3
#  endif
Packit 709fb3
          (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return ((wc >= '0' && wc <= '9')
Packit 709fb3
          || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE wint_t
Packit 709fb3
#  if @REPLACE_TOWLOWER@
Packit 709fb3
rpl_towlower
Packit 709fb3
#  else
Packit 709fb3
towlower
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc);
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE wint_t
Packit 709fb3
#  if @REPLACE_TOWLOWER@
Packit 709fb3
rpl_towupper
Packit 709fb3
#  else
Packit 709fb3
towupper
Packit 709fb3
#  endif
Packit 709fb3
         (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc);
Packit 709fb3
}
Packit 709fb3
Packit 709fb3
# elif @GNULIB_ISWBLANK@ && (! @HAVE_ISWBLANK@ || @REPLACE_ISWBLANK@)
Packit 709fb3
/* Only the iswblank function is missing.  */
Packit 709fb3
Packit 709fb3
#  if @REPLACE_ISWBLANK@
Packit 709fb3
#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 709fb3
#    define iswblank rpl_iswblank
Packit 709fb3
#   endif
Packit 709fb3
_GL_FUNCDECL_RPL (iswblank, int, (wint_t wc));
Packit 709fb3
#  else
Packit 709fb3
_GL_FUNCDECL_SYS (iswblank, int, (wint_t wc));
Packit 709fb3
#  endif
Packit 709fb3
Packit 709fb3
# endif
Packit 709fb3
Packit 709fb3
# if defined __MINGW32__
Packit 709fb3
Packit 709fb3
/* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t.
Packit 709fb3
   The functions towlower and towupper are implemented in the MSVCRT library
Packit 709fb3
   to take a wchar_t argument and return a wchar_t result.  mingw declares
Packit 709fb3
   these functions to take a wint_t argument and return a wint_t result.
Packit 709fb3
   This means that:
Packit 709fb3
   1. When the user passes an argument outside the range 0x0000..0xFFFF, the
Packit 709fb3
      function will look only at the lower 16 bits.  This is allowed according
Packit 709fb3
      to POSIX.
Packit 709fb3
   2. The return value is returned in the lower 16 bits of the result register.
Packit 709fb3
      The upper 16 bits are random: whatever happened to be in that part of the
Packit 709fb3
      result register.  We need to fix this by adding a zero-extend from
Packit 709fb3
      wchar_t to wint_t after the call.  */
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE wint_t
Packit 709fb3
rpl_towlower (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return (wint_t) (wchar_t) towlower (wc);
Packit 709fb3
}
Packit 709fb3
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 709fb3
#   define towlower rpl_towlower
Packit 709fb3
#  endif
Packit 709fb3
Packit 709fb3
_GL_WCTYPE_INLINE wint_t
Packit 709fb3
rpl_towupper (wint_t wc)
Packit 709fb3
{
Packit 709fb3
  return (wint_t) (wchar_t) towupper (wc);
Packit 709fb3
}
Packit 709fb3
#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
Packit 709fb3
#   define towupper rpl_towupper
Packit 709fb3
#  endif
Packit 709fb3
Packit 709fb3
# endif /* __MINGW32__ */
Packit 709fb3
Packit 709fb3
# define GNULIB_defined_wctype_functions 1
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
#if @REPLACE_ISWCNTRL@
Packit 709fb3
_GL_CXXALIAS_RPL (iswalnum, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_RPL (iswalpha, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_RPL (iswcntrl, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_RPL (iswdigit, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_RPL (iswgraph, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_RPL (iswlower, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_RPL (iswprint, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_RPL (iswpunct, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_RPL (iswspace, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_RPL (iswupper, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc));
Packit 709fb3
#else
Packit 709fb3
_GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_SYS (iswalpha, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_SYS (iswlower, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_SYS (iswprint, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_SYS (iswpunct, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_SYS (iswspace, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_SYS (iswupper, int, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc));
Packit 709fb3
#endif
Packit 709fb3
_GL_CXXALIASWARN (iswalnum);
Packit 709fb3
_GL_CXXALIASWARN (iswalpha);
Packit 709fb3
_GL_CXXALIASWARN (iswcntrl);
Packit 709fb3
_GL_CXXALIASWARN (iswdigit);
Packit 709fb3
_GL_CXXALIASWARN (iswgraph);
Packit 709fb3
_GL_CXXALIASWARN (iswlower);
Packit 709fb3
_GL_CXXALIASWARN (iswprint);
Packit 709fb3
_GL_CXXALIASWARN (iswpunct);
Packit 709fb3
_GL_CXXALIASWARN (iswspace);
Packit 709fb3
_GL_CXXALIASWARN (iswupper);
Packit 709fb3
_GL_CXXALIASWARN (iswxdigit);
Packit 709fb3
Packit 709fb3
#if @GNULIB_ISWBLANK@
Packit 709fb3
# if @REPLACE_ISWCNTRL@ || @REPLACE_ISWBLANK@
Packit 709fb3
_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
Packit 709fb3
# else
Packit 709fb3
_GL_CXXALIAS_SYS (iswblank, int, (wint_t wc));
Packit 709fb3
# endif
Packit 709fb3
_GL_CXXALIASWARN (iswblank);
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
#if !@HAVE_WCTYPE_T@
Packit 709fb3
# if !GNULIB_defined_wctype_t
Packit 709fb3
typedef void * wctype_t;
Packit 709fb3
#  define GNULIB_defined_wctype_t 1
Packit 709fb3
# endif
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
/* Get a descriptor for a wide character property.  */
Packit 709fb3
#if @GNULIB_WCTYPE@
Packit 709fb3
# if !@HAVE_WCTYPE_T@
Packit 709fb3
_GL_FUNCDECL_SYS (wctype, wctype_t, (const char *name));
Packit 709fb3
# endif
Packit 709fb3
_GL_CXXALIAS_SYS (wctype, wctype_t, (const char *name));
Packit 709fb3
_GL_CXXALIASWARN (wctype);
Packit 709fb3
#elif defined GNULIB_POSIXCHECK
Packit 709fb3
# undef wctype
Packit 709fb3
# if HAVE_RAW_DECL_WCTYPE
Packit 709fb3
_GL_WARN_ON_USE (wctype, "wctype is unportable - "
Packit 709fb3
                 "use gnulib module wctype for portability");
Packit 709fb3
# endif
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
/* Test whether a wide character has a given property.
Packit 709fb3
   The argument WC must be either a wchar_t value or WEOF.
Packit 709fb3
   The argument DESC must have been returned by the wctype() function.  */
Packit 709fb3
#if @GNULIB_ISWCTYPE@
Packit 709fb3
# if !@HAVE_WCTYPE_T@
Packit 709fb3
_GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc));
Packit 709fb3
# endif
Packit 709fb3
_GL_CXXALIAS_SYS (iswctype, int, (wint_t wc, wctype_t desc));
Packit 709fb3
_GL_CXXALIASWARN (iswctype);
Packit 709fb3
#elif defined GNULIB_POSIXCHECK
Packit 709fb3
# undef iswctype
Packit 709fb3
# if HAVE_RAW_DECL_ISWCTYPE
Packit 709fb3
_GL_WARN_ON_USE (iswctype, "iswctype is unportable - "
Packit 709fb3
                 "use gnulib module iswctype for portability");
Packit 709fb3
# endif
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
#if @REPLACE_TOWLOWER@ || defined __MINGW32__
Packit 709fb3
_GL_CXXALIAS_RPL (towlower, wint_t, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc));
Packit 709fb3
#else
Packit 709fb3
_GL_CXXALIAS_SYS (towlower, wint_t, (wint_t wc));
Packit 709fb3
_GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc));
Packit 709fb3
#endif
Packit 709fb3
_GL_CXXALIASWARN (towlower);
Packit 709fb3
_GL_CXXALIASWARN (towupper);
Packit 709fb3
Packit 709fb3
#if !@HAVE_WCTRANS_T@
Packit 709fb3
# if !GNULIB_defined_wctrans_t
Packit 709fb3
typedef void * wctrans_t;
Packit 709fb3
#  define GNULIB_defined_wctrans_t 1
Packit 709fb3
# endif
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
/* Get a descriptor for a wide character case conversion.  */
Packit 709fb3
#if @GNULIB_WCTRANS@
Packit 709fb3
# if !@HAVE_WCTRANS_T@
Packit 709fb3
_GL_FUNCDECL_SYS (wctrans, wctrans_t, (const char *name));
Packit 709fb3
# endif
Packit 709fb3
_GL_CXXALIAS_SYS (wctrans, wctrans_t, (const char *name));
Packit 709fb3
_GL_CXXALIASWARN (wctrans);
Packit 709fb3
#elif defined GNULIB_POSIXCHECK
Packit 709fb3
# undef wctrans
Packit 709fb3
# if HAVE_RAW_DECL_WCTRANS
Packit 709fb3
_GL_WARN_ON_USE (wctrans, "wctrans is unportable - "
Packit 709fb3
                 "use gnulib module wctrans for portability");
Packit 709fb3
# endif
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
/* Perform a given case conversion on a wide character.
Packit 709fb3
   The argument WC must be either a wchar_t value or WEOF.
Packit 709fb3
   The argument DESC must have been returned by the wctrans() function.  */
Packit 709fb3
#if @GNULIB_TOWCTRANS@
Packit 709fb3
# if !@HAVE_WCTRANS_T@
Packit 709fb3
_GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
Packit 709fb3
# endif
Packit 709fb3
_GL_CXXALIAS_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
Packit 709fb3
_GL_CXXALIASWARN (towctrans);
Packit 709fb3
#elif defined GNULIB_POSIXCHECK
Packit 709fb3
# undef towctrans
Packit 709fb3
# if HAVE_RAW_DECL_TOWCTRANS
Packit 709fb3
_GL_WARN_ON_USE (towctrans, "towctrans is unportable - "
Packit 709fb3
                 "use gnulib module towctrans for portability");
Packit 709fb3
# endif
Packit 709fb3
#endif
Packit 709fb3
Packit 709fb3
_GL_INLINE_HEADER_END
Packit 709fb3
Packit 709fb3
#endif /* _@GUARD_PREFIX@_WCTYPE_H */
Packit 709fb3
#endif /* _@GUARD_PREFIX@_WCTYPE_H */
Packit 709fb3
#endif