105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* DO NOT EDIT! GENERATED AUTOMATICALLY! */
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Copyright (C) 2006-2012 Free Software Foundation, Inc.
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is free software; you can redistribute it and/or modify
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   it under the terms of the GNU General Public License as published by
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   the Free Software Foundation; either version 3, or (at your option)
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   any later version.
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This program is distributed in the hope that it will be useful,
1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   but WITHOUT ANY WARRANTY; without even the implied warranty of
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNU General Public License for more details.
1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   You should have received a copy of the GNU General Public License
1705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   along with this program; if not, see <http://www.gnu.org/licenses/>.  */
1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Written by Bruno Haible and Paul Eggert.  */
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * ISO C 99 <wctype.h> for platforms that lack it.
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * <http://www.opengroup.org/susv3xbd/wctype.h.html>
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * iswctype, towctrans, towlower, towupper, wctrans, wctype,
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang * wctrans_t, and wctype_t are not yet implemented.
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WCTYPE_H
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if __GNUC__ >= 3
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#pragma GCC system_header
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>.
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   <wchar.h>.
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   included before <wchar.h>.  */
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <stddef.h>
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <stdio.h>
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <time.h>
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include <wchar.h>
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Include the original <wctype.h> if it exists.
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   BeOS 5 has the functions but no <wctype.h>.  */
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The include_next requires a split double-inclusion guard.  */
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# include_next <wctype.h>
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WCTYPE_H
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_WCTYPE_H
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_INLINE_HEADER_BEGIN
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WCTYPE_INLINE
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_WCTYPE_INLINE _GL_INLINE
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_CXXDEFS_H
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_CXXDEFS_H
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The three most frequent use cases of these macros are:
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a substitute for a function that is missing on some
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     platforms, but is declared and works fine on the platforms on which
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     it exists:
7205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
7305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
7405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if !@HAVE_FOO@
7505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_SYS (foo, ...);
7605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
7705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
7805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
7905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
8005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
8105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
8205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a replacement for a function that exists on all platforms,
8405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but is broken/insufficient and needs to be replaced on some platforms:
8505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
8605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
8705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if @REPLACE_FOO@
8805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
8905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   undef foo
9005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   define foo rpl_foo
9105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
9205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_RPL (foo, ...);
9305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_RPL (foo, ...);
9405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # else
9505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
9605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
9705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
9805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
9905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
10005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
10105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   * For providing a replacement for a function that exists on some platforms
10305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but is broken/insufficient and needs to be replaced on some of them and
10405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     is additionally either missing or undeclared on some other platforms:
10505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
10605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #if @GNULIB_FOO@
10705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # if @REPLACE_FOO@
10805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
10905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   undef foo
11005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #   define foo rpl_foo
11105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
11205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_RPL (foo, ...);
11305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_RPL (foo, ...);
11405436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # else
11505436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
11605436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_FUNCDECL_SYS (foo, ...);
11705436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #  endif
11805436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIAS_SYS (foo, ...);
11905436638acc7c010349a69c3395f1a57c642dc62Ying Wang       # endif
12005436638acc7c010349a69c3395f1a57c642dc62Ying Wang       _GL_CXXALIASWARN (foo);
12105436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #elif defined GNULIB_POSIXCHECK
12205436638acc7c010349a69c3395f1a57c642dc62Ying Wang       ...
12305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       #endif
12405436638acc7c010349a69c3395f1a57c642dc62Ying Wang*/
12505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
12605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_EXTERN_C declaration;
12705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   performs the declaration with C linkage.  */
12805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus
12905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_EXTERN_C extern "C"
13005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
13105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_EXTERN_C extern
13205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
13305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
13405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
13505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a replacement function, named rpl_func, with the given prototype,
13605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   consisting of return type, parameters, and attributes.
13705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
13805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
13905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
14005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
14105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
14205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
14305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
14405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_EXTERN_C rettype rpl_func parameters_and_attributes
14505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
14605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
14705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares the system function, named func, with the given prototype,
14805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   consisting of return type, parameters, and attributes.
14905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
15005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
15105436638acc7c010349a69c3395f1a57c642dc62Ying Wang                                  _GL_ARG_NONNULL ((1)));
15205436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
15305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
15405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_EXTERN_C rettype func parameters_and_attributes
15505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
15605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_RPL (func, rettype, parameters);
15705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a C++ alias called GNULIB_NAMESPACE::func
15805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
15905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
16005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
16105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
16205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#define _GL_CXXALIAS_RPL(func,rettype,parameters) \
16305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
16405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
16505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
16605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                \
16705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                         \
16805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      rettype (*const func) parameters = ::rpl_func;          \
16905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                         \
17005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
17105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
17205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
17305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
17405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
17505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
17605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
17705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
17805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function rpl_func may have a slightly different
17905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declaration.  A cast is used to silence the "invalid conversion" error
18005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that would otherwise occur.  */
18105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
18205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
18305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                     \
18405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                              \
18505436638acc7c010349a69c3395f1a57c642dc62Ying Wang      rettype (*const func) parameters =                           \
18605436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(::rpl_func);        \
18705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                              \
18805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
18905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
19005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
19105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
19205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
19305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
19405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS (func, rettype, parameters);
19505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declares a C++ alias called GNULIB_NAMESPACE::func
19605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   that redirects to the system provided function func, if GNULIB_NAMESPACE
19705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is defined.
19805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Example:
19905436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
20005436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
20105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
20205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* If we were to write
20305436638acc7c010349a69c3395f1a57c642dc62Ying Wang       rettype (*const func) parameters = ::func;
20405436638acc7c010349a69c3395f1a57c642dc62Ying Wang     like above in _GL_CXXALIAS_RPL_1, the compiler could optimize calls
20505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     better (remove an indirection through a 'static' pointer variable),
20605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     but then the _GL_CXXALIASWARN macro below would cause a warning not only
20705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     for uses of ::func but also for uses of GNULIB_NAMESPACE::func.  */
20805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
20905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                     \
21005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                              \
21105436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters = ::func;  \
21205436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                              \
21305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
21405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
21505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS(func,rettype,parameters) \
21605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
21705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
21805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
21905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
22005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
22105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function func may have a slightly different declaration.
22205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   A cast is used to silence the "invalid conversion" error that would
22305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   otherwise occur.  */
22405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
22505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
22605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                          \
22705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                   \
22805436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters =               \
22905436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(::func); \
23005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                   \
23105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
23205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
23305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
23405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
23505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
23605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
23705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
23805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
23905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   except that the C function is picked among a set of overloaded functions,
24005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   namely the one with rettype2 and parameters2.  Two consecutive casts
24105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   are used to silence the "cannot find a match" and "invalid conversion"
24205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   errors that would otherwise occur.  */
24305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
24405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /* The outer cast must be a reinterpret_cast.
24505436638acc7c010349a69c3395f1a57c642dc62Ying Wang     The inner cast: When the function is defined as a set of overloaded
24605436638acc7c010349a69c3395f1a57c642dc62Ying Wang     functions, it works as a static_cast<>, choosing the designated variant.
24705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     When the function is defined as a single variant, it works as a
24805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
24905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
25005436638acc7c010349a69c3395f1a57c642dc62Ying Wang    namespace GNULIB_NAMESPACE                                                \
25105436638acc7c010349a69c3395f1a57c642dc62Ying Wang    {                                                                         \
25205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      static rettype (*func) parameters =                                     \
25305436638acc7c010349a69c3395f1a57c642dc62Ying Wang        reinterpret_cast<rettype(*)parameters>(                               \
25405436638acc7c010349a69c3395f1a57c642dc62Ying Wang          (rettype2(*)parameters2)(::func));                                  \
25505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    }                                                                         \
25605436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
25705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
25805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
25905436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
26005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
26105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
26205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIASWARN (func);
26305436638acc7c010349a69c3395f1a57c642dc62Ying Wang   causes a warning to be emitted when ::func is used but not when
26405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
26505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   variants.  */
26605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
26705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN(func) \
26805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
26905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN_1(func,namespace) \
27005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN_2 (func, namespace)
27105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
27205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   we enable the warning only when not optimizing.  */
27305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !__OPTIMIZE__
27405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
27505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE (func, \
27605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "The symbol ::" #func " refers to the system function. " \
27705436638acc7c010349a69c3395f1a57c642dc62Ying Wang                     "Use " #namespace "::" #func " instead.")
27805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
27905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
28005436638acc7c010349a69c3395f1a57c642dc62Ying Wang     extern __typeof__ (func) func
28105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
28205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN_2(func,namespace) \
28305436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_EXTERN_C int _gl_cxxalias_dummy
28405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
28505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
28605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN(func) \
28705436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
28805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
28905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
29005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
29105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   causes a warning to be emitted when the given overloaded variant of ::func
29205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is used but not when GNULIB_NAMESPACE::func is used.  */
29305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if defined __cplusplus && defined GNULIB_NAMESPACE
29405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
29505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
29605436638acc7c010349a69c3395f1a57c642dc62Ying Wang                        GNULIB_NAMESPACE)
29705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
29805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
29905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* To work around GCC bug <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
30005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   we enable the warning only when not optimizing.  */
30105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !__OPTIMIZE__
30205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
30305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_WARN_ON_USE_CXX (func, rettype, parameters_and_attributes, \
30405436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         "The symbol ::" #func " refers to the system function. " \
30505436638acc7c010349a69c3395f1a57c642dc62Ying Wang                         "Use " #namespace "::" #func " instead.")
30605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
30705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
30805436638acc7c010349a69c3395f1a57c642dc62Ying Wang     extern __typeof__ (func) func
30905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
31005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
31105436638acc7c010349a69c3395f1a57c642dc62Ying Wang     _GL_EXTERN_C int _gl_cxxalias_dummy
31205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
31305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
31405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
31505436638acc7c010349a69c3395f1a57c642dc62Ying Wang    _GL_EXTERN_C int _gl_cxxalias_dummy
31605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
31705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
31805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_CXXDEFS_H */
31905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32005436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* The definition of _GL_WARN_ON_USE is copied here.  */
32105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_ON_USE
32205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
32305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
32405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* A compiler attribute is available in gcc versions 4.3.0 and later.  */
32505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
32605436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern __typeof__ (function) function __attribute__ ((__warning__ (message)))
32705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
32805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Verify the existence of the function.  */
32905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
33005436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern __typeof__ (function) function
33105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else /* Unsupported.  */
33205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE(function, message) \
33305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_EXTERN_C int _gl_warn_on_use
33405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
33505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
33605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
33705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_WARN_ON_USE_CXX (function, rettype, parameters_and_attributes, "string")
33805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   is like _GL_WARN_ON_USE (function, "string"), except that the function is
33905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   declared with the given prototype, consisting of return type, parameters,
34005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   and attributes.
34105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
34205436638acc7c010349a69c3395f1a57c642dc62Ying Wang   not work in this case.  */
34305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_ON_USE_CXX
34405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
34505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
34605436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern rettype function parameters_and_attributes \
34705436638acc7c010349a69c3395f1a57c642dc62Ying Wang     __attribute__ ((__warning__ (msg)))
34805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
34905436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Verify the existence of the function.  */
35005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
35105436638acc7c010349a69c3395f1a57c642dc62Ying Wangextern rettype function parameters_and_attributes
35205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else /* Unsupported.  */
35305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_ON_USE_CXX(function,rettype,parameters_and_attributes,msg) \
35405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_EXTERN_C int _gl_warn_on_use
35505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
35605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
35705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
35805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* _GL_WARN_EXTERN_C declaration;
35905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   performs the declaration with C linkage.  */
36005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifndef _GL_WARN_EXTERN_C
36105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined __cplusplus
36205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_EXTERN_C extern "C"
36305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
36405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define _GL_WARN_EXTERN_C extern
36505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
36605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
36705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
36805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Solaris 2.6 <wctype.h> includes <widec.h> which includes <euc.h> which
36905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   #defines a number of identifiers in the application namespace.  Revert
37005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   these #defines.  */
37105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#ifdef __sun
37205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef multibyte
37305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef eucw1
37405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef eucw2
37505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef eucw3
37605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef scrw1
37705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef scrw2
37805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef scrw3
37905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
38005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
38105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Define wint_t and WEOF.  (Also done in wchar.in.h.)  */
38205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !1 && !defined wint_t
38305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define wint_t int
38405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef WEOF
38505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define WEOF -1
38605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
38705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
38805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* MSVC defines wint_t as 'unsigned short' in <crtdefs.h>.
38905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be
39005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   "unchanged by default argument promotions".  Override it.  */
39105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined _MSC_VER
39205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !GNULIB_defined_wint_t
39305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   include <crtdefs.h>
39405436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef unsigned int rpl_wint_t;
39505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   undef wint_t
39605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define wint_t rpl_wint_t
39705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define GNULIB_defined_wint_t 1
39805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
39905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
40005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# ifndef WEOF
40105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define WEOF ((wint_t) -1)
40205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
40305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
40405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !GNULIB_defined_wctype_functions
40705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
40805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
40905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Linux libc5 has <wctype.h> and the functions but they are broken.
41005436638acc7c010349a69c3395f1a57c642dc62Ying Wang   Assume all 11 functions (all isw* except iswblank) are implemented the
41105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   same way, or not at all.  */
41205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if ! 1 || 0
41305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
41405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* IRIX 5.3 has macros but no functions, its isw* macros refer to an
41505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   undefined variable _ctmp_ and to <ctype.h> macros like _P, and they
41605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   refer to system functions like _iswctype that are not in the
41705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   standard C library.  Rather than try to get ancient buggy
41805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   implementations like this to work, just disable them.  */
41905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswalnum
42005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswalpha
42105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswblank
42205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswcntrl
42305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswdigit
42405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswgraph
42505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswlower
42605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswprint
42705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswpunct
42805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswspace
42905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswupper
43005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef iswxdigit
43105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef towlower
43205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  undef towupper
43305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
43405436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Linux libc5 has <wctype.h> and the functions but they are broken.  */
43505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
43605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
43705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswalnum rpl_iswalnum
43805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswalpha rpl_iswalpha
43905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswblank rpl_iswblank
44005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswcntrl rpl_iswcntrl
44105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswdigit rpl_iswdigit
44205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswgraph rpl_iswgraph
44305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswlower rpl_iswlower
44405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswprint rpl_iswprint
44505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswpunct rpl_iswpunct
44605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswspace rpl_iswspace
44705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswupper rpl_iswupper
44805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswxdigit rpl_iswxdigit
44905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
45005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
45105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
45205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
45305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define towlower rpl_towlower
45405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define towupper rpl_towupper
45505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
45605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
45705436638acc7c010349a69c3395f1a57c642dc62Ying Wang
45805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
45905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
46005436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswalnum
46105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
46205436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswalnum
46305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
46405436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
46505436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
46605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return ((wc >= '0' && wc <= '9')
46705436638acc7c010349a69c3395f1a57c642dc62Ying Wang          || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
46805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
46905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
47005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
47105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
47205436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswalpha
47305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
47405436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswalpha
47505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
47605436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
47705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
47805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
47905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
48005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
48105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
48205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
48305436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswblank
48405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
48505436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswblank
48605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
48705436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
48805436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
48905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return wc == ' ' || wc == '\t';
49005436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
49105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
49205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
49305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
49405436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswcntrl
49505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
49605436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswcntrl
49705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
49805436638acc7c010349a69c3395f1a57c642dc62Ying Wang        (wint_t wc)
49905436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
50005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return (wc & ~0x1f) == 0 || wc == 0x7f;
50105436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
50205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
50305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
50405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
50505436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswdigit
50605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
50705436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswdigit
50805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
50905436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
51005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
51105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return wc >= '0' && wc <= '9';
51205436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
51305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
51405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
51505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
51605436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswgraph
51705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
51805436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswgraph
51905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
52005436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
52105436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
52205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return wc >= '!' && wc <= '~';
52305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
52405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
52505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
52605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
52705436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswlower
52805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
52905436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswlower
53005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
53105436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
53205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
53305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return wc >= 'a' && wc <= 'z';
53405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
53505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
53605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
53705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
53805436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswprint
53905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
54005436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswprint
54105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
54205436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
54305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
54405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return wc >= ' ' && wc <= '~';
54505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
54605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
54705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
54805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
54905436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswpunct
55005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
55105436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswpunct
55205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
55305436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
55405436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
55505436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return (wc >= '!' && wc <= '~'
55605436638acc7c010349a69c3395f1a57c642dc62Ying Wang          && !((wc >= '0' && wc <= '9')
55705436638acc7c010349a69c3395f1a57c642dc62Ying Wang               || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
55805436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
55905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
56005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
56105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
56205436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswspace
56305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
56405436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswspace
56505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
56605436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
56705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
56805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return (wc == ' ' || wc == '\t'
56905436638acc7c010349a69c3395f1a57c642dc62Ying Wang          || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
57005436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
57105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
57205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
57305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
57405436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswupper
57505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
57605436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswupper
57705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
57805436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
57905436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
58005436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return wc >= 'A' && wc <= 'Z';
58105436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
58205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
58305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE int
58405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
58505436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_iswxdigit
58605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
58705436638acc7c010349a69c3395f1a57c642dc62Ying Wangiswxdigit
58805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
58905436638acc7c010349a69c3395f1a57c642dc62Ying Wang          (wint_t wc)
59005436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
59105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return ((wc >= '0' && wc <= '9')
59205436638acc7c010349a69c3395f1a57c642dc62Ying Wang          || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
59305436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
59405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
59505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE wint_t
59605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
59705436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_towlower
59805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
59905436638acc7c010349a69c3395f1a57c642dc62Ying Wangtowlower
60005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
60105436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
60205436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
60305436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc);
60405436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
60505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
60605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE wint_t
60705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
60805436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_towupper
60905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
61005436638acc7c010349a69c3395f1a57c642dc62Ying Wangtowupper
61105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
61205436638acc7c010349a69c3395f1a57c642dc62Ying Wang         (wint_t wc)
61305436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
61405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return (wc >= 'a' && wc <= 'z' ? wc - 'a' + 'A' : wc);
61505436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
61605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
61705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# elif 1 && (! 1 || 0)
61805436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Only the iswblank function is missing.  */
61905436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if 0
62105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
62205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#    define iswblank rpl_iswblank
62305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   endif
62405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_RPL (iswblank, int, (wint_t wc));
62505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  else
62605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (iswblank, int, (wint_t wc));
62705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
62805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
62905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
63005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if defined __MINGW32__
63205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
63305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* On native Windows, wchar_t is uint16_t, and wint_t is uint32_t.
63405436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The functions towlower and towupper are implemented in the MSVCRT library
63505436638acc7c010349a69c3395f1a57c642dc62Ying Wang   to take a wchar_t argument and return a wchar_t result.  mingw declares
63605436638acc7c010349a69c3395f1a57c642dc62Ying Wang   these functions to take a wint_t argument and return a wint_t result.
63705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   This means that:
63805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   1. When the user passes an argument outside the range 0x0000..0xFFFF, the
63905436638acc7c010349a69c3395f1a57c642dc62Ying Wang      function will look only at the lower 16 bits.  This is allowed according
64005436638acc7c010349a69c3395f1a57c642dc62Ying Wang      to POSIX.
64105436638acc7c010349a69c3395f1a57c642dc62Ying Wang   2. The return value is returned in the lower 16 bits of the result register.
64205436638acc7c010349a69c3395f1a57c642dc62Ying Wang      The upper 16 bits are random: whatever happened to be in that part of the
64305436638acc7c010349a69c3395f1a57c642dc62Ying Wang      result register.  We need to fix this by adding a zero-extend from
64405436638acc7c010349a69c3395f1a57c642dc62Ying Wang      wchar_t to wint_t after the call.  */
64505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
64605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE wint_t
64705436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_towlower (wint_t wc)
64805436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
64905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return (wint_t) (wchar_t) towlower (wc);
65005436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
65105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
65205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define towlower rpl_towlower
65305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
65405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
65505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WCTYPE_INLINE wint_t
65605436638acc7c010349a69c3395f1a57c642dc62Ying Wangrpl_towupper (wint_t wc)
65705436638acc7c010349a69c3395f1a57c642dc62Ying Wang{
65805436638acc7c010349a69c3395f1a57c642dc62Ying Wang  return (wint_t) (wchar_t) towupper (wc);
65905436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
66005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
66105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#   define towupper rpl_towupper
66205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  endif
66305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif /* __MINGW32__ */
66505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# define GNULIB_defined_wctype_functions 1
66705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
66805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
66905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
67005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswalnum, int, (wint_t wc));
67105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswalpha, int, (wint_t wc));
67205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswcntrl, int, (wint_t wc));
67305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswdigit, int, (wint_t wc));
67405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswgraph, int, (wint_t wc));
67505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswlower, int, (wint_t wc));
67605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswprint, int, (wint_t wc));
67705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswpunct, int, (wint_t wc));
67805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswspace, int, (wint_t wc));
67905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswupper, int, (wint_t wc));
68005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswxdigit, int, (wint_t wc));
68105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
68205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswalnum, int, (wint_t wc));
68305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswalpha, int, (wint_t wc));
68405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswcntrl, int, (wint_t wc));
68505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswdigit, int, (wint_t wc));
68605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswgraph, int, (wint_t wc));
68705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswlower, int, (wint_t wc));
68805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswprint, int, (wint_t wc));
68905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswpunct, int, (wint_t wc));
69005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswspace, int, (wint_t wc));
69105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswupper, int, (wint_t wc));
69205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswxdigit, int, (wint_t wc));
69305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
69405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswalnum);
69505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswalpha);
69605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswcntrl);
69705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswdigit);
69805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswgraph);
69905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswlower);
70005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswprint);
70105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswpunct);
70205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswspace);
70305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswupper);
70405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswxdigit);
70505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
70605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 1
70705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if 0 || 0
70805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (iswblank, int, (wint_t wc));
70905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# else
71005436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswblank, int, (wint_t wc));
71105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
71205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswblank);
71305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
71405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
71505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !1
71605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_wctype_t
71705436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef void * wctype_t;
71805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_wctype_t 1
71905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
72005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
72105436638acc7c010349a69c3395f1a57c642dc62Ying Wang
72205436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get a descriptor for a wide character property.  */
72305436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
72405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
72505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wctype, wctype_t, (const char *name));
72605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
72705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wctype, wctype_t, (const char *name));
72805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wctype);
72905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
73005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wctype
73105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCTYPE
73205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wctype, "wctype is unportable - "
73305436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module wctype for portability");
73405436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
73505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
73605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
73705436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Test whether a wide character has a given property.
73805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The argument WC must be either a wchar_t value or WEOF.
73905436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The argument DESC must have been returned by the wctype() function.  */
74005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
74105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
74205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (iswctype, int, (wint_t wc, wctype_t desc));
74305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
74405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (iswctype, int, (wint_t wc, wctype_t desc));
74505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (iswctype);
74605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
74705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef iswctype
74805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_ISWCTYPE
74905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (iswctype, "iswctype is unportable - "
75005436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module iswctype for portability");
75105436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
75205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
75305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
75405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0 || defined __MINGW32__
75505436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (towlower, wint_t, (wint_t wc));
75605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_RPL (towupper, wint_t, (wint_t wc));
75705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#else
75805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (towlower, wint_t, (wint_t wc));
75905436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (towupper, wint_t, (wint_t wc));
76005436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
76105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (towlower);
76205436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (towupper);
76305436638acc7c010349a69c3395f1a57c642dc62Ying Wang
76405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if !1
76505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !GNULIB_defined_wctrans_t
76605436638acc7c010349a69c3395f1a57c642dc62Ying Wangtypedef void * wctrans_t;
76705436638acc7c010349a69c3395f1a57c642dc62Ying Wang#  define GNULIB_defined_wctrans_t 1
76805436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
76905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
77005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
77105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Get a descriptor for a wide character case conversion.  */
77205436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
77305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
77405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (wctrans, wctrans_t, (const char *name));
77505436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
77605436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (wctrans, wctrans_t, (const char *name));
77705436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (wctrans);
77805436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
77905436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef wctrans
78005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_WCTRANS
78105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (wctrans, "wctrans is unportable - "
78205436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module wctrans for portability");
78305436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
78405436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
78505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
78605436638acc7c010349a69c3395f1a57c642dc62Ying Wang/* Perform a given case conversion on a wide character.
78705436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The argument WC must be either a wchar_t value or WEOF.
78805436638acc7c010349a69c3395f1a57c642dc62Ying Wang   The argument DESC must have been returned by the wctrans() function.  */
78905436638acc7c010349a69c3395f1a57c642dc62Ying Wang#if 0
79005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if !1
79105436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_FUNCDECL_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
79205436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
79305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIAS_SYS (towctrans, wint_t, (wint_t wc, wctrans_t desc));
79405436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_CXXALIASWARN (towctrans);
79505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#elif defined GNULIB_POSIXCHECK
79605436638acc7c010349a69c3395f1a57c642dc62Ying Wang# undef towctrans
79705436638acc7c010349a69c3395f1a57c642dc62Ying Wang# if HAVE_RAW_DECL_TOWCTRANS
79805436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_WARN_ON_USE (towctrans, "towctrans is unportable - "
79905436638acc7c010349a69c3395f1a57c642dc62Ying Wang                 "use gnulib module towctrans for portability");
80005436638acc7c010349a69c3395f1a57c642dc62Ying Wang# endif
80105436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif
80205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80305436638acc7c010349a69c3395f1a57c642dc62Ying Wang_GL_INLINE_HEADER_END
80405436638acc7c010349a69c3395f1a57c642dc62Ying Wang
80505436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_WCTYPE_H */
80605436638acc7c010349a69c3395f1a57c642dc62Ying Wang#endif /* _GL_WCTYPE_H */
807