xref: /netbsd-src/external/gpl3/gdb/lib/libgnulib/arch/hppa/gnulib/import/wchar.h (revision d16b7486a53dcb8072b60ec6fcb4373a2d0c27b7)
1 /* This file is automatically generated.  DO NOT EDIT! */
2 /* Generated from: NetBSD: mknative-gdb,v 1.16 2023/07/31 17:09:59 christos Exp  */
3 /* Generated from: NetBSD: mknative.common,v 1.16 2018/04/15 15:13:37 christos Exp  */
4 
5 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
6 /* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
7 
8    Copyright (C) 2007-2022 Free Software Foundation, Inc.
9 
10    This file is free software: you can redistribute it and/or modify
11    it under the terms of the GNU Lesser General Public License as
12    published by the Free Software Foundation; either version 2.1 of the
13    License, or (at your option) any later version.
14 
15    This file is distributed in the hope that it will be useful,
16    but WITHOUT ANY WARRANTY; without even the implied warranty of
17    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18    GNU Lesser General Public License for more details.
19 
20    You should have received a copy of the GNU Lesser General Public License
21    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
22 
23 /* Written by Eric Blake.  */
24 
25 /*
26  * ISO C 99 <wchar.h> for platforms that have issues.
27  * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wchar.h.html>
28  *
29  * For now, this just ensures proper prerequisite inclusion order and
30  * the declaration of wcwidth().
31  */
32 
33 #if __GNUC__ >= 3
34 #pragma GCC system_header
35 #endif
36 
37 
38 #if (((defined __need_mbstate_t || defined __need_wint_t)               \
39       && !defined __MINGW32__)                                          \
40      || (defined __hpux                                                 \
41          && ((defined _INTTYPES_INCLUDED                                \
42               && !defined _GL_FINISHED_INCLUDING_SYSTEM_INTTYPES_H)     \
43              || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H))               \
44      || (defined __MINGW32__ && defined __STRING_H_SOURCED__)           \
45      || defined _GL_ALREADY_INCLUDING_WCHAR_H)
46 /* Special invocation convention:
47    - Inside glibc and uClibc header files, but not MinGW.
48    - On HP-UX 11.00 we have a sequence of nested includes
49      <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
50      once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
51      and once directly.  In both situations 'wint_t' is not yet defined,
52      therefore we cannot provide the function overrides; instead include only
53      the system's <wchar.h>.
54    - With MinGW 3.22, when <string.h> includes <wchar.h>, only some part of
55      <wchar.h> is actually processed, and that doesn't include 'mbstate_t'.
56    - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
57      the latter includes <wchar.h>.  But here, we have no way to detect whether
58      <wctype.h> is completely included or is still being included.  */
59 
60 #include_next <wchar.h>
61 
62 #else
63 /* Normal invocation convention.  */
64 
65 #ifndef _GL_WCHAR_H
66 
67 #define _GL_ALREADY_INCLUDING_WCHAR_H
68 
69 #if 0
70 # include <features.h> /* for __GLIBC__ */
71 #endif
72 
73 /* In some builds of uClibc, <wchar.h> is nonexistent and wchar_t is defined
74    by <stddef.h>.
75    But avoid namespace pollution on glibc systems.  */
76 #if !(defined __GLIBC__ && !defined __UCLIBC__)
77 # include <stddef.h>
78 #endif
79 
80 /* Include the original <wchar.h> if it exists.
81    Some builds of uClibc lack it.  */
82 /* The include_next requires a split double-inclusion guard.  */
83 #if 1
84 # include_next <wchar.h>
85 #endif
86 
87 #undef _GL_ALREADY_INCLUDING_WCHAR_H
88 
89 #ifndef _GL_WCHAR_H
90 #define _GL_WCHAR_H
91 
92 /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers
93    that can be freed by passing them as the Ith argument to the
94    function F.  */
95 #ifndef _GL_ATTRIBUTE_DEALLOC
96 # if __GNUC__ >= 11
97 #  define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
98 # else
99 #  define _GL_ATTRIBUTE_DEALLOC(f, i)
100 # endif
101 #endif
102 
103 /* _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that
104    can be freed via 'free'; it can be used only after declaring 'free'.  */
105 /* Applies to: functions.  Cannot be used on inline functions.  */
106 #ifndef _GL_ATTRIBUTE_DEALLOC_FREE
107 # define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1)
108 #endif
109 
110 /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly
111    allocated memory.  */
112 /* Applies to: functions.  */
113 #ifndef _GL_ATTRIBUTE_MALLOC
114 # if __GNUC__ >= 3 || defined __clang__
115 #  define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
116 # else
117 #  define _GL_ATTRIBUTE_MALLOC
118 # endif
119 #endif
120 
121 /* The __attribute__ feature is available in gcc versions 2.5 and later.
122    The attribute __pure__ was added in gcc 2.96.  */
123 #ifndef _GL_ATTRIBUTE_PURE
124 # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) || defined __clang__
125 #  define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
126 # else
127 #  define _GL_ATTRIBUTE_PURE /* empty */
128 # endif
129 #endif
130 
131 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
132 /* C++ compatible function declaration macros.
133    Copyright (C) 2010-2022 Free Software Foundation, Inc.
134 
135    This program is free software: you can redistribute it and/or modify it
136    under the terms of the GNU Lesser General Public License as published
137    by the Free Software Foundation; either version 2 of the License, or
138    (at your option) any later version.
139 
140    This program is distributed in the hope that it will be useful,
141    but WITHOUT ANY WARRANTY; without even the implied warranty of
142    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
143    Lesser General Public License for more details.
144 
145    You should have received a copy of the GNU Lesser General Public License
146    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
147 
148 #ifndef _GL_CXXDEFS_H
149 #define _GL_CXXDEFS_H
150 
151 /* Begin/end the GNULIB_NAMESPACE namespace.  */
152 #if defined __cplusplus && defined GNULIB_NAMESPACE
153 # define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
154 # define _GL_END_NAMESPACE }
155 #else
156 # define _GL_BEGIN_NAMESPACE
157 # define _GL_END_NAMESPACE
158 #endif
159 
160 /* The three most frequent use cases of these macros are:
161 
162    * For providing a substitute for a function that is missing on some
163      platforms, but is declared and works fine on the platforms on which
164      it exists:
165 
166        #if @GNULIB_FOO@
167        # if !@HAVE_FOO@
168        _GL_FUNCDECL_SYS (foo, ...);
169        # endif
170        _GL_CXXALIAS_SYS (foo, ...);
171        _GL_CXXALIASWARN (foo);
172        #elif defined GNULIB_POSIXCHECK
173        ...
174        #endif
175 
176    * For providing a replacement for a function that exists on all platforms,
177      but is broken/insufficient and needs to be replaced on some platforms:
178 
179        #if @GNULIB_FOO@
180        # if @REPLACE_FOO@
181        #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
182        #   undef foo
183        #   define foo rpl_foo
184        #  endif
185        _GL_FUNCDECL_RPL (foo, ...);
186        _GL_CXXALIAS_RPL (foo, ...);
187        # else
188        _GL_CXXALIAS_SYS (foo, ...);
189        # endif
190        _GL_CXXALIASWARN (foo);
191        #elif defined GNULIB_POSIXCHECK
192        ...
193        #endif
194 
195    * For providing a replacement for a function that exists on some platforms
196      but is broken/insufficient and needs to be replaced on some of them and
197      is additionally either missing or undeclared on some other platforms:
198 
199        #if @GNULIB_FOO@
200        # if @REPLACE_FOO@
201        #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
202        #   undef foo
203        #   define foo rpl_foo
204        #  endif
205        _GL_FUNCDECL_RPL (foo, ...);
206        _GL_CXXALIAS_RPL (foo, ...);
207        # else
208        #  if !@HAVE_FOO@   or   if !@HAVE_DECL_FOO@
209        _GL_FUNCDECL_SYS (foo, ...);
210        #  endif
211        _GL_CXXALIAS_SYS (foo, ...);
212        # endif
213        _GL_CXXALIASWARN (foo);
214        #elif defined GNULIB_POSIXCHECK
215        ...
216        #endif
217 */
218 
219 /* _GL_EXTERN_C declaration;
220    performs the declaration with C linkage.  */
221 #if defined __cplusplus
222 # define _GL_EXTERN_C extern "C"
223 #else
224 # define _GL_EXTERN_C extern
225 #endif
226 
227 /* _GL_FUNCDECL_RPL (func, rettype, parameters_and_attributes);
228    declares a replacement function, named rpl_func, with the given prototype,
229    consisting of return type, parameters, and attributes.
230    Example:
231      _GL_FUNCDECL_RPL (open, int, (const char *filename, int flags, ...)
232                                   _GL_ARG_NONNULL ((1)));
233  */
234 #define _GL_FUNCDECL_RPL(func,rettype,parameters_and_attributes) \
235   _GL_FUNCDECL_RPL_1 (rpl_##func, rettype, parameters_and_attributes)
236 #define _GL_FUNCDECL_RPL_1(rpl_func,rettype,parameters_and_attributes) \
237   _GL_EXTERN_C rettype rpl_func parameters_and_attributes
238 
239 /* _GL_FUNCDECL_SYS (func, rettype, parameters_and_attributes);
240    declares the system function, named func, with the given prototype,
241    consisting of return type, parameters, and attributes.
242    Example:
243      _GL_FUNCDECL_SYS (open, int, (const char *filename, int flags, ...)
244                                   _GL_ARG_NONNULL ((1)));
245  */
246 #define _GL_FUNCDECL_SYS(func,rettype,parameters_and_attributes) \
247   _GL_EXTERN_C rettype func parameters_and_attributes
248 
249 /* _GL_CXXALIAS_RPL (func, rettype, parameters);
250    declares a C++ alias called GNULIB_NAMESPACE::func
251    that redirects to rpl_func, if GNULIB_NAMESPACE is defined.
252    Example:
253      _GL_CXXALIAS_RPL (open, int, (const char *filename, int flags, ...));
254 
255    Wrapping rpl_func in an object with an inline conversion operator
256    avoids a reference to rpl_func unless GNULIB_NAMESPACE::func is
257    actually used in the program.  */
258 #define _GL_CXXALIAS_RPL(func,rettype,parameters) \
259   _GL_CXXALIAS_RPL_1 (func, rpl_##func, rettype, parameters)
260 #if defined __cplusplus && defined GNULIB_NAMESPACE
261 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
262     namespace GNULIB_NAMESPACE                                \
263     {                                                         \
264       static const struct _gl_ ## func ## _wrapper            \
265       {                                                       \
266         typedef rettype (*type) parameters;                   \
267                                                               \
268         inline operator type () const                         \
269         {                                                     \
270           return ::rpl_func;                                  \
271         }                                                     \
272       } func = {};                                            \
273     }                                                         \
274     _GL_EXTERN_C int _gl_cxxalias_dummy
275 #else
276 # define _GL_CXXALIAS_RPL_1(func,rpl_func,rettype,parameters) \
277     _GL_EXTERN_C int _gl_cxxalias_dummy
278 #endif
279 
280 /* _GL_CXXALIAS_MDA (func, rettype, parameters);
281    is to be used when func is a Microsoft deprecated alias, on native Windows.
282    It declares a C++ alias called GNULIB_NAMESPACE::func
283    that redirects to _func, if GNULIB_NAMESPACE is defined.
284    Example:
285      _GL_CXXALIAS_MDA (open, int, (const char *filename, int flags, ...));
286  */
287 #define _GL_CXXALIAS_MDA(func,rettype,parameters) \
288   _GL_CXXALIAS_RPL_1 (func, _##func, rettype, parameters)
289 
290 /* _GL_CXXALIAS_RPL_CAST_1 (func, rpl_func, rettype, parameters);
291    is like  _GL_CXXALIAS_RPL_1 (func, rpl_func, rettype, parameters);
292    except that the C function rpl_func may have a slightly different
293    declaration.  A cast is used to silence the "invalid conversion" error
294    that would otherwise occur.  */
295 #if defined __cplusplus && defined GNULIB_NAMESPACE
296 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
297     namespace GNULIB_NAMESPACE                                     \
298     {                                                              \
299       static const struct _gl_ ## func ## _wrapper                 \
300       {                                                            \
301         typedef rettype (*type) parameters;                        \
302                                                                    \
303         inline operator type () const                              \
304         {                                                          \
305           return reinterpret_cast<type>(::rpl_func);               \
306         }                                                          \
307       } func = {};                                                 \
308     }                                                              \
309     _GL_EXTERN_C int _gl_cxxalias_dummy
310 #else
311 # define _GL_CXXALIAS_RPL_CAST_1(func,rpl_func,rettype,parameters) \
312     _GL_EXTERN_C int _gl_cxxalias_dummy
313 #endif
314 
315 /* _GL_CXXALIAS_MDA_CAST (func, rettype, parameters);
316    is like  _GL_CXXALIAS_MDA (func, rettype, parameters);
317    except that the C function func may have a slightly different declaration.
318    A cast is used to silence the "invalid conversion" error that would
319    otherwise occur.  */
320 #define _GL_CXXALIAS_MDA_CAST(func,rettype,parameters) \
321   _GL_CXXALIAS_RPL_CAST_1 (func, _##func, rettype, parameters)
322 
323 /* _GL_CXXALIAS_SYS (func, rettype, parameters);
324    declares a C++ alias called GNULIB_NAMESPACE::func
325    that redirects to the system provided function func, if GNULIB_NAMESPACE
326    is defined.
327    Example:
328      _GL_CXXALIAS_SYS (open, int, (const char *filename, int flags, ...));
329 
330    Wrapping func in an object with an inline conversion operator
331    avoids a reference to func unless GNULIB_NAMESPACE::func is
332    actually used in the program.  */
333 #if defined __cplusplus && defined GNULIB_NAMESPACE
334 # define _GL_CXXALIAS_SYS(func,rettype,parameters)            \
335     namespace GNULIB_NAMESPACE                                \
336     {                                                         \
337       static const struct _gl_ ## func ## _wrapper            \
338       {                                                       \
339         typedef rettype (*type) parameters;                   \
340                                                               \
341         inline operator type () const                         \
342         {                                                     \
343           return ::func;                                      \
344         }                                                     \
345       } func = {};                                            \
346     }                                                         \
347     _GL_EXTERN_C int _gl_cxxalias_dummy
348 #else
349 # define _GL_CXXALIAS_SYS(func,rettype,parameters) \
350     _GL_EXTERN_C int _gl_cxxalias_dummy
351 #endif
352 
353 /* _GL_CXXALIAS_SYS_CAST (func, rettype, parameters);
354    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
355    except that the C function func may have a slightly different declaration.
356    A cast is used to silence the "invalid conversion" error that would
357    otherwise occur.  */
358 #if defined __cplusplus && defined GNULIB_NAMESPACE
359 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
360     namespace GNULIB_NAMESPACE                          \
361     {                                                   \
362       static const struct _gl_ ## func ## _wrapper      \
363       {                                                 \
364         typedef rettype (*type) parameters;             \
365                                                         \
366         inline operator type () const                   \
367         {                                               \
368           return reinterpret_cast<type>(::func);        \
369         }                                               \
370       } func = {};                                      \
371     }                                                   \
372     _GL_EXTERN_C int _gl_cxxalias_dummy
373 #else
374 # define _GL_CXXALIAS_SYS_CAST(func,rettype,parameters) \
375     _GL_EXTERN_C int _gl_cxxalias_dummy
376 #endif
377 
378 /* _GL_CXXALIAS_SYS_CAST2 (func, rettype, parameters, rettype2, parameters2);
379    is like  _GL_CXXALIAS_SYS (func, rettype, parameters);
380    except that the C function is picked among a set of overloaded functions,
381    namely the one with rettype2 and parameters2.  Two consecutive casts
382    are used to silence the "cannot find a match" and "invalid conversion"
383    errors that would otherwise occur.  */
384 #if defined __cplusplus && defined GNULIB_NAMESPACE
385   /* The outer cast must be a reinterpret_cast.
386      The inner cast: When the function is defined as a set of overloaded
387      functions, it works as a static_cast<>, choosing the designated variant.
388      When the function is defined as a single variant, it works as a
389      reinterpret_cast<>. The parenthesized cast syntax works both ways.  */
390 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
391     namespace GNULIB_NAMESPACE                                                \
392     {                                                                         \
393       static const struct _gl_ ## func ## _wrapper                            \
394       {                                                                       \
395         typedef rettype (*type) parameters;                                   \
396                                                                               \
397         inline operator type () const                                         \
398         {                                                                     \
399           return reinterpret_cast<type>((rettype2 (*) parameters2)(::func));  \
400         }                                                                     \
401       } func = {};                                                            \
402     }                                                                         \
403     _GL_EXTERN_C int _gl_cxxalias_dummy
404 #else
405 # define _GL_CXXALIAS_SYS_CAST2(func,rettype,parameters,rettype2,parameters2) \
406     _GL_EXTERN_C int _gl_cxxalias_dummy
407 #endif
408 
409 /* _GL_CXXALIASWARN (func);
410    causes a warning to be emitted when ::func is used but not when
411    GNULIB_NAMESPACE::func is used.  func must be defined without overloaded
412    variants.  */
413 #if defined __cplusplus && defined GNULIB_NAMESPACE
414 # define _GL_CXXALIASWARN(func) \
415    _GL_CXXALIASWARN_1 (func, GNULIB_NAMESPACE)
416 # define _GL_CXXALIASWARN_1(func,namespace) \
417    _GL_CXXALIASWARN_2 (func, namespace)
418 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
419    we enable the warning only when not optimizing.  */
420 # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
421 #  define _GL_CXXALIASWARN_2(func,namespace) \
422     _GL_WARN_ON_USE (func, \
423                      "The symbol ::" #func " refers to the system function. " \
424                      "Use " #namespace "::" #func " instead.")
425 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
426 #  define _GL_CXXALIASWARN_2(func,namespace) \
427      extern __typeof__ (func) func
428 # else
429 #  define _GL_CXXALIASWARN_2(func,namespace) \
430      _GL_EXTERN_C int _gl_cxxalias_dummy
431 # endif
432 #else
433 # define _GL_CXXALIASWARN(func) \
434     _GL_EXTERN_C int _gl_cxxalias_dummy
435 #endif
436 
437 /* _GL_CXXALIASWARN1 (func, rettype, parameters_and_attributes);
438    causes a warning to be emitted when the given overloaded variant of ::func
439    is used but not when GNULIB_NAMESPACE::func is used.  */
440 #if defined __cplusplus && defined GNULIB_NAMESPACE
441 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
442    _GL_CXXALIASWARN1_1 (func, rettype, parameters_and_attributes, \
443                         GNULIB_NAMESPACE)
444 # define _GL_CXXALIASWARN1_1(func,rettype,parameters_and_attributes,namespace) \
445    _GL_CXXALIASWARN1_2 (func, rettype, parameters_and_attributes, namespace)
446 /* To work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43881>,
447    we enable the warning only when not optimizing.  */
448 # if !(defined __GNUC__ && !defined __clang__ && __OPTIMIZE__)
449 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
450     _GL_WARN_ON_USE_CXX (func, rettype, rettype, parameters_and_attributes, \
451                          "The symbol ::" #func " refers to the system function. " \
452                          "Use " #namespace "::" #func " instead.")
453 # else
454 #  define _GL_CXXALIASWARN1_2(func,rettype,parameters_and_attributes,namespace) \
455      _GL_EXTERN_C int _gl_cxxalias_dummy
456 # endif
457 #else
458 # define _GL_CXXALIASWARN1(func,rettype,parameters_and_attributes) \
459     _GL_EXTERN_C int _gl_cxxalias_dummy
460 #endif
461 
462 #endif /* _GL_CXXDEFS_H */
463 
464 /* The definition of _GL_ARG_NONNULL is copied here.  */
465 /* A C macro for declaring that specific arguments must not be NULL.
466    Copyright (C) 2009-2022 Free Software Foundation, Inc.
467 
468    This program is free software: you can redistribute it and/or modify it
469    under the terms of the GNU Lesser General Public License as published
470    by the Free Software Foundation; either version 2 of the License, or
471    (at your option) any later version.
472 
473    This program is distributed in the hope that it will be useful,
474    but WITHOUT ANY WARRANTY; without even the implied warranty of
475    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
476    Lesser General Public License for more details.
477 
478    You should have received a copy of the GNU Lesser General Public License
479    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
480 
481 /* _GL_ARG_NONNULL((n,...,m)) tells the compiler and static analyzer tools
482    that the values passed as arguments n, ..., m must be non-NULL pointers.
483    n = 1 stands for the first argument, n = 2 for the second argument etc.  */
484 #ifndef _GL_ARG_NONNULL
485 # if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) || defined __clang__
486 #  define _GL_ARG_NONNULL(params) __attribute__ ((__nonnull__ params))
487 # else
488 #  define _GL_ARG_NONNULL(params)
489 # endif
490 #endif
491 
492 /* The definition of _GL_WARN_ON_USE is copied here.  */
493 /* A C macro for emitting warnings if a function is used.
494    Copyright (C) 2010-2022 Free Software Foundation, Inc.
495 
496    This program is free software: you can redistribute it and/or modify it
497    under the terms of the GNU Lesser General Public License as published
498    by the Free Software Foundation; either version 2 of the License, or
499    (at your option) any later version.
500 
501    This program is distributed in the hope that it will be useful,
502    but WITHOUT ANY WARRANTY; without even the implied warranty of
503    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
504    Lesser General Public License for more details.
505 
506    You should have received a copy of the GNU Lesser General Public License
507    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
508 
509 /* _GL_WARN_ON_USE (function, "literal string") issues a declaration
510    for FUNCTION which will then trigger a compiler warning containing
511    the text of "literal string" anywhere that function is called, if
512    supported by the compiler.  If the compiler does not support this
513    feature, the macro expands to an unused extern declaration.
514 
515    _GL_WARN_ON_USE_ATTRIBUTE ("literal string") expands to the
516    attribute used in _GL_WARN_ON_USE.  If the compiler does not support
517    this feature, it expands to empty.
518 
519    These macros are useful for marking a function as a potential
520    portability trap, with the intent that "literal string" include
521    instructions on the replacement function that should be used
522    instead.
523    _GL_WARN_ON_USE is for functions with 'extern' linkage.
524    _GL_WARN_ON_USE_ATTRIBUTE is for functions with 'static' or 'inline'
525    linkage.
526 
527    However, one of the reasons that a function is a portability trap is
528    if it has the wrong signature.  Declaring FUNCTION with a different
529    signature in C is a compilation error, so this macro must use the
530    same type as any existing declaration so that programs that avoid
531    the problematic FUNCTION do not fail to compile merely because they
532    included a header that poisoned the function.  But this implies that
533    _GL_WARN_ON_USE is only safe to use if FUNCTION is known to already
534    have a declaration.  Use of this macro implies that there must not
535    be any other macro hiding the declaration of FUNCTION; but
536    undefining FUNCTION first is part of the poisoning process anyway
537    (although for symbols that are provided only via a macro, the result
538    is a compilation error rather than a warning containing
539    "literal string").  Also note that in C++, it is only safe to use if
540    FUNCTION has no overloads.
541 
542    For an example, it is possible to poison 'getline' by:
543    - adding a call to gl_WARN_ON_USE_PREPARE([[#include <stdio.h>]],
544      [getline]) in configure.ac, which potentially defines
545      HAVE_RAW_DECL_GETLINE
546    - adding this code to a header that wraps the system <stdio.h>:
547      #undef getline
548      #if HAVE_RAW_DECL_GETLINE
549      _GL_WARN_ON_USE (getline, "getline is required by POSIX 2008, but"
550        "not universally present; use the gnulib module getline");
551      #endif
552 
553    It is not possible to directly poison global variables.  But it is
554    possible to write a wrapper accessor function, and poison that
555    (less common usage, like &environ, will cause a compilation error
556    rather than issue the nice warning, but the end result of informing
557    the developer about their portability problem is still achieved):
558      #if HAVE_RAW_DECL_ENVIRON
559      static char ***
560      rpl_environ (void) { return &environ; }
561      _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
562      # undef environ
563      # define environ (*rpl_environ ())
564      #endif
565    or better (avoiding contradictory use of 'static' and 'extern'):
566      #if HAVE_RAW_DECL_ENVIRON
567      static char ***
568      _GL_WARN_ON_USE_ATTRIBUTE ("environ is not always properly declared")
569      rpl_environ (void) { return &environ; }
570      # undef environ
571      # define environ (*rpl_environ ())
572      #endif
573    */
574 #ifndef _GL_WARN_ON_USE
575 
576 # if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
577 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
578 #  define _GL_WARN_ON_USE(function, message) \
579 _GL_WARN_EXTERN_C __typeof__ (function) function __attribute__ ((__warning__ (message)))
580 #  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
581   __attribute__ ((__warning__ (message)))
582 # elif __clang_major__ >= 4
583 /* Another compiler attribute is available in clang.  */
584 #  define _GL_WARN_ON_USE(function, message) \
585 _GL_WARN_EXTERN_C __typeof__ (function) function \
586   __attribute__ ((__diagnose_if__ (1, message, "warning")))
587 #  define _GL_WARN_ON_USE_ATTRIBUTE(message) \
588   __attribute__ ((__diagnose_if__ (1, message, "warning")))
589 # elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
590 /* Verify the existence of the function.  */
591 #  define _GL_WARN_ON_USE(function, message) \
592 _GL_WARN_EXTERN_C __typeof__ (function) function
593 #  define _GL_WARN_ON_USE_ATTRIBUTE(message)
594 # else /* Unsupported.  */
595 #  define _GL_WARN_ON_USE(function, message) \
596 _GL_WARN_EXTERN_C int _gl_warn_on_use
597 #  define _GL_WARN_ON_USE_ATTRIBUTE(message)
598 # endif
599 #endif
600 
601 /* _GL_WARN_ON_USE_CXX (function, rettype_gcc, rettype_clang, parameters_and_attributes, "message")
602    is like _GL_WARN_ON_USE (function, "message"), except that in C++ mode the
603    function is declared with the given prototype, consisting of return type,
604    parameters, and attributes.
605    This variant is useful for overloaded functions in C++. _GL_WARN_ON_USE does
606    not work in this case.  */
607 #ifndef _GL_WARN_ON_USE_CXX
608 # if !defined __cplusplus
609 #  define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
610      _GL_WARN_ON_USE (function, msg)
611 # else
612 #  if 4 < __GNUC__ || (__GNUC__ == 4 && 3 <= __GNUC_MINOR__)
613 /* A compiler attribute is available in gcc versions 4.3.0 and later.  */
614 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
615 extern rettype_gcc function parameters_and_attributes \
616   __attribute__ ((__warning__ (msg)))
617 #  elif __clang_major__ >= 4
618 /* Another compiler attribute is available in clang.  */
619 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
620 extern rettype_clang function parameters_and_attributes \
621   __attribute__ ((__diagnose_if__ (1, msg, "warning")))
622 #  elif __GNUC__ >= 3 && GNULIB_STRICT_CHECKING
623 /* Verify the existence of the function.  */
624 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
625 extern rettype_gcc function parameters_and_attributes
626 #  else /* Unsupported.  */
627 #   define _GL_WARN_ON_USE_CXX(function,rettype_gcc,rettype_clang,parameters_and_attributes,msg) \
628 _GL_WARN_EXTERN_C int _gl_warn_on_use
629 #  endif
630 # endif
631 #endif
632 
633 /* _GL_WARN_EXTERN_C declaration;
634    performs the declaration with C linkage.  */
635 #ifndef _GL_WARN_EXTERN_C
636 # if defined __cplusplus
637 #  define _GL_WARN_EXTERN_C extern "C"
638 # else
639 #  define _GL_WARN_EXTERN_C extern
640 # endif
641 #endif
642 
643 
644 /* Define wint_t and WEOF.  (Also done in wctype.in.h.)  */
645 #if !1 && !defined wint_t
646 # define wint_t int
647 # ifndef WEOF
648 #  define WEOF -1
649 # endif
650 #else
651 /* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
652    <stddef.h>.  This is too small: ISO C 99 section 7.24.1.(2) says that
653    wint_t must be "unchanged by default argument promotions".  Override it.  */
654 # if 0
655 #  if !GNULIB_defined_wint_t
656 #   if 0
657 #    include <crtdefs.h>
658 #   else
659 #    include <stddef.h>
660 #   endif
661 typedef unsigned int rpl_wint_t;
662 #   undef wint_t
663 #   define wint_t rpl_wint_t
664 #   define GNULIB_defined_wint_t 1
665 #  endif
666 # endif
667 # ifndef WEOF
668 #  define WEOF ((wint_t) -1)
669 # endif
670 #endif
671 
672 
673 /* Override mbstate_t if it is too small.
674    On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
675    implementing mbrtowc for encodings like UTF-8.
676    On AIX and MSVC, mbrtowc needs to be overridden, but mbstate_t exists and is
677    large enough and overriding it would cause problems in C++ mode.  */
678 #if !(((defined _WIN32 && !defined __CYGWIN__) || 1) && 1) || 0
679 # if !GNULIB_defined_mbstate_t
680 #  if !(defined _AIX || defined _MSC_VER)
681 typedef int rpl_mbstate_t;
682 #   undef mbstate_t
683 #   define mbstate_t rpl_mbstate_t
684 #  endif
685 #  define GNULIB_defined_mbstate_t 1
686 # endif
687 #endif
688 
689 /* Make _GL_ATTRIBUTE_DEALLOC_FREE work, even though <stdlib.h> may not have
690    been included yet.  */
691 #if 1
692 # if (1 && !defined free \
693       && !(defined __cplusplus && defined GNULIB_NAMESPACE))
694 /* We can't do '#define free rpl_free' here.  */
695 _GL_EXTERN_C void rpl_free (void *);
696 #  undef _GL_ATTRIBUTE_DEALLOC_FREE
697 #  define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (rpl_free, 1)
698 # else
699 #  if defined _MSC_VER
700 _GL_EXTERN_C void __cdecl free (void *);
701 #  else
702 #   if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2)
703 _GL_EXTERN_C void free (void *) throw ();
704 #   else
705 _GL_EXTERN_C void free (void *);
706 #   endif
707 #  endif
708 # endif
709 #else
710 # if defined _MSC_VER
711 _GL_EXTERN_C void __cdecl free (void *);
712 # else
713 #  if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2)
714 _GL_EXTERN_C void free (void *) throw ();
715 #  else
716 _GL_EXTERN_C void free (void *);
717 #  endif
718 # endif
719 #endif
720 
721 /* Convert a single-byte character to a wide character.  */
722 #if 1
723 # if 0
724 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
725 #   undef btowc
726 #   define btowc rpl_btowc
727 #  endif
728 _GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
729 _GL_CXXALIAS_RPL (btowc, wint_t, (int c));
730 # else
731 #  if !1
732 _GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
733 #  endif
734 /* Need to cast, because on mingw, the return type is 'unsigned short'.  */
735 _GL_CXXALIAS_SYS_CAST (btowc, wint_t, (int c));
736 # endif
737 # if __GLIBC__ >= 2
738 _GL_CXXALIASWARN (btowc);
739 # endif
740 #elif defined GNULIB_POSIXCHECK
741 # undef btowc
742 # if HAVE_RAW_DECL_BTOWC
743 _GL_WARN_ON_USE (btowc, "btowc is unportable - "
744                  "use gnulib module btowc for portability");
745 # endif
746 #endif
747 
748 
749 /* Convert a wide character to a single-byte character.  */
750 #if 0
751 # if 0
752 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
753 #   undef wctob
754 #   define wctob rpl_wctob
755 #  endif
756 _GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
757 _GL_CXXALIAS_RPL (wctob, int, (wint_t wc));
758 # else
759 #  if !defined wctob && !1
760 /* wctob is provided by gnulib, or wctob exists but is not declared.  */
761 _GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
762 #  endif
763 _GL_CXXALIAS_SYS (wctob, int, (wint_t wc));
764 # endif
765 # if __GLIBC__ >= 2
766 _GL_CXXALIASWARN (wctob);
767 # endif
768 #elif defined GNULIB_POSIXCHECK
769 # undef wctob
770 # if HAVE_RAW_DECL_WCTOB
771 _GL_WARN_ON_USE (wctob, "wctob is unportable - "
772                  "use gnulib module wctob for portability");
773 # endif
774 #endif
775 
776 
777 /* Test whether *PS is in the initial state.  */
778 #if 1
779 # if 0
780 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
781 #   undef mbsinit
782 #   define mbsinit rpl_mbsinit
783 #  endif
784 _GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps));
785 _GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps));
786 # else
787 #  if !1
788 _GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps));
789 #  endif
790 _GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps));
791 # endif
792 # if __GLIBC__ >= 2
793 _GL_CXXALIASWARN (mbsinit);
794 # endif
795 #elif defined GNULIB_POSIXCHECK
796 # undef mbsinit
797 # if HAVE_RAW_DECL_MBSINIT
798 _GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - "
799                  "use gnulib module mbsinit for portability");
800 # endif
801 #endif
802 
803 
804 /* Convert a multibyte character to a wide character.  */
805 #if 1
806 # if 1
807 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
808 #   undef mbrtowc
809 #   define mbrtowc rpl_mbrtowc
810 #  endif
811 _GL_FUNCDECL_RPL (mbrtowc, size_t,
812                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
813                    mbstate_t *restrict ps));
814 _GL_CXXALIAS_RPL (mbrtowc, size_t,
815                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
816                    mbstate_t *restrict ps));
817 # else
818 #  if !1
819 _GL_FUNCDECL_SYS (mbrtowc, size_t,
820                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
821                    mbstate_t *restrict ps));
822 #  endif
823 _GL_CXXALIAS_SYS (mbrtowc, size_t,
824                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
825                    mbstate_t *restrict ps));
826 # endif
827 # if __GLIBC__ >= 2
828 _GL_CXXALIASWARN (mbrtowc);
829 # endif
830 #elif defined GNULIB_POSIXCHECK
831 # undef mbrtowc
832 # if HAVE_RAW_DECL_MBRTOWC
833 _GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - "
834                  "use gnulib module mbrtowc for portability");
835 # endif
836 #endif
837 
838 
839 /* Recognize a multibyte character.  */
840 #if 0
841 # if 0
842 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
843 #   undef mbrlen
844 #   define mbrlen rpl_mbrlen
845 #  endif
846 _GL_FUNCDECL_RPL (mbrlen, size_t,
847                   (const char *restrict s, size_t n, mbstate_t *restrict ps));
848 _GL_CXXALIAS_RPL (mbrlen, size_t,
849                   (const char *restrict s, size_t n, mbstate_t *restrict ps));
850 # else
851 #  if !1
852 _GL_FUNCDECL_SYS (mbrlen, size_t,
853                   (const char *restrict s, size_t n, mbstate_t *restrict ps));
854 #  endif
855 _GL_CXXALIAS_SYS (mbrlen, size_t,
856                   (const char *restrict s, size_t n, mbstate_t *restrict ps));
857 # endif
858 # if __GLIBC__ >= 2
859 _GL_CXXALIASWARN (mbrlen);
860 # endif
861 #elif defined GNULIB_POSIXCHECK
862 # undef mbrlen
863 # if HAVE_RAW_DECL_MBRLEN
864 _GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - "
865                  "use gnulib module mbrlen for portability");
866 # endif
867 #endif
868 
869 
870 /* Convert a string to a wide string.  */
871 #if 1
872 # if 0
873 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
874 #   undef mbsrtowcs
875 #   define mbsrtowcs rpl_mbsrtowcs
876 #  endif
877 _GL_FUNCDECL_RPL (mbsrtowcs, size_t,
878                   (wchar_t *restrict dest,
879                    const char **restrict srcp, size_t len,
880                    mbstate_t *restrict ps)
881                   _GL_ARG_NONNULL ((2)));
882 _GL_CXXALIAS_RPL (mbsrtowcs, size_t,
883                   (wchar_t *restrict dest,
884                    const char **restrict srcp, size_t len,
885                    mbstate_t *restrict ps));
886 # else
887 #  if !1
888 _GL_FUNCDECL_SYS (mbsrtowcs, size_t,
889                   (wchar_t *restrict dest,
890                    const char **restrict srcp, size_t len,
891                    mbstate_t *restrict ps)
892                   _GL_ARG_NONNULL ((2)));
893 #  endif
894 _GL_CXXALIAS_SYS (mbsrtowcs, size_t,
895                   (wchar_t *restrict dest,
896                    const char **restrict srcp, size_t len,
897                    mbstate_t *restrict ps));
898 # endif
899 # if __GLIBC__ >= 2
900 _GL_CXXALIASWARN (mbsrtowcs);
901 # endif
902 #elif defined GNULIB_POSIXCHECK
903 # undef mbsrtowcs
904 # if HAVE_RAW_DECL_MBSRTOWCS
905 _GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - "
906                  "use gnulib module mbsrtowcs for portability");
907 # endif
908 #endif
909 
910 
911 /* Convert a string to a wide string.  */
912 #if 0
913 # if 0
914 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
915 #   undef mbsnrtowcs
916 #   define mbsnrtowcs rpl_mbsnrtowcs
917 #  endif
918 _GL_FUNCDECL_RPL (mbsnrtowcs, size_t,
919                   (wchar_t *restrict dest,
920                    const char **restrict srcp, size_t srclen, size_t len,
921                    mbstate_t *restrict ps)
922                   _GL_ARG_NONNULL ((2)));
923 _GL_CXXALIAS_RPL (mbsnrtowcs, size_t,
924                   (wchar_t *restrict dest,
925                    const char **restrict srcp, size_t srclen, size_t len,
926                    mbstate_t *restrict ps));
927 # else
928 #  if !1
929 _GL_FUNCDECL_SYS (mbsnrtowcs, size_t,
930                   (wchar_t *restrict dest,
931                    const char **restrict srcp, size_t srclen, size_t len,
932                    mbstate_t *restrict ps)
933                   _GL_ARG_NONNULL ((2)));
934 #  endif
935 _GL_CXXALIAS_SYS (mbsnrtowcs, size_t,
936                   (wchar_t *restrict dest,
937                    const char **restrict srcp, size_t srclen, size_t len,
938                    mbstate_t *restrict ps));
939 # endif
940 _GL_CXXALIASWARN (mbsnrtowcs);
941 #elif defined GNULIB_POSIXCHECK
942 # undef mbsnrtowcs
943 # if HAVE_RAW_DECL_MBSNRTOWCS
944 _GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - "
945                  "use gnulib module mbsnrtowcs for portability");
946 # endif
947 #endif
948 
949 
950 /* Convert a wide character to a multibyte character.  */
951 #if 0
952 # if 0
953 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
954 #   undef wcrtomb
955 #   define wcrtomb rpl_wcrtomb
956 #  endif
957 _GL_FUNCDECL_RPL (wcrtomb, size_t,
958                   (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
959 _GL_CXXALIAS_RPL (wcrtomb, size_t,
960                   (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
961 # else
962 #  if !1
963 _GL_FUNCDECL_SYS (wcrtomb, size_t,
964                   (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
965 #  endif
966 _GL_CXXALIAS_SYS (wcrtomb, size_t,
967                   (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
968 # endif
969 # if __GLIBC__ >= 2
970 _GL_CXXALIASWARN (wcrtomb);
971 # endif
972 #elif defined GNULIB_POSIXCHECK
973 # undef wcrtomb
974 # if HAVE_RAW_DECL_WCRTOMB
975 _GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - "
976                  "use gnulib module wcrtomb for portability");
977 # endif
978 #endif
979 
980 
981 /* Convert a wide string to a string.  */
982 #if 0
983 # if 0
984 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
985 #   undef wcsrtombs
986 #   define wcsrtombs rpl_wcsrtombs
987 #  endif
988 _GL_FUNCDECL_RPL (wcsrtombs, size_t,
989                   (char *restrict dest, const wchar_t **restrict srcp,
990                    size_t len,
991                    mbstate_t *restrict ps)
992                   _GL_ARG_NONNULL ((2)));
993 _GL_CXXALIAS_RPL (wcsrtombs, size_t,
994                   (char *restrict dest, const wchar_t **restrict srcp,
995                    size_t len,
996                    mbstate_t *restrict ps));
997 # else
998 #  if !1
999 _GL_FUNCDECL_SYS (wcsrtombs, size_t,
1000                   (char *restrict dest, const wchar_t **restrict srcp,
1001                    size_t len,
1002                    mbstate_t *restrict ps)
1003                   _GL_ARG_NONNULL ((2)));
1004 #  endif
1005 _GL_CXXALIAS_SYS (wcsrtombs, size_t,
1006                   (char *restrict dest, const wchar_t **restrict srcp,
1007                    size_t len,
1008                    mbstate_t *restrict ps));
1009 # endif
1010 # if __GLIBC__ >= 2
1011 _GL_CXXALIASWARN (wcsrtombs);
1012 # endif
1013 #elif defined GNULIB_POSIXCHECK
1014 # undef wcsrtombs
1015 # if HAVE_RAW_DECL_WCSRTOMBS
1016 _GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - "
1017                  "use gnulib module wcsrtombs for portability");
1018 # endif
1019 #endif
1020 
1021 
1022 /* Convert a wide string to a string.  */
1023 #if 0
1024 # if 0
1025 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1026 #   undef wcsnrtombs
1027 #   define wcsnrtombs rpl_wcsnrtombs
1028 #  endif
1029 _GL_FUNCDECL_RPL (wcsnrtombs, size_t,
1030                   (char *restrict dest,
1031                    const wchar_t **restrict srcp, size_t srclen,
1032                    size_t len,
1033                    mbstate_t *restrict ps)
1034                   _GL_ARG_NONNULL ((2)));
1035 _GL_CXXALIAS_RPL (wcsnrtombs, size_t,
1036                   (char *restrict dest,
1037                    const wchar_t **restrict srcp, size_t srclen,
1038                    size_t len,
1039                    mbstate_t *restrict ps));
1040 # else
1041 #  if !1 || (defined __cplusplus && defined __sun)
1042 _GL_FUNCDECL_SYS (wcsnrtombs, size_t,
1043                   (char *restrict dest,
1044                    const wchar_t **restrict srcp, size_t srclen,
1045                    size_t len,
1046                    mbstate_t *restrict ps)
1047                   _GL_ARG_NONNULL ((2)));
1048 #  endif
1049 _GL_CXXALIAS_SYS (wcsnrtombs, size_t,
1050                   (char *restrict dest,
1051                    const wchar_t **restrict srcp, size_t srclen,
1052                    size_t len,
1053                    mbstate_t *restrict ps));
1054 # endif
1055 # if __GLIBC__ >= 2
1056 _GL_CXXALIASWARN (wcsnrtombs);
1057 # endif
1058 #elif defined GNULIB_POSIXCHECK
1059 # undef wcsnrtombs
1060 # if HAVE_RAW_DECL_WCSNRTOMBS
1061 _GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - "
1062                  "use gnulib module wcsnrtombs for portability");
1063 # endif
1064 #endif
1065 
1066 
1067 /* Return the number of screen columns needed for WC.  */
1068 #if 0
1069 # if 0
1070 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1071 #   undef wcwidth
1072 #   define wcwidth rpl_wcwidth
1073 #  endif
1074 _GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
1075 _GL_CXXALIAS_RPL (wcwidth, int, (wchar_t));
1076 # else
1077 #  if !1
1078 /* wcwidth exists but is not declared.  */
1079 _GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
1080 #  endif
1081 _GL_CXXALIAS_SYS (wcwidth, int, (wchar_t));
1082 # endif
1083 # if __GLIBC__ >= 2
1084 _GL_CXXALIASWARN (wcwidth);
1085 # endif
1086 #elif defined GNULIB_POSIXCHECK
1087 # undef wcwidth
1088 # if HAVE_RAW_DECL_WCWIDTH
1089 _GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - "
1090                  "use gnulib module wcwidth for portability");
1091 # endif
1092 #endif
1093 
1094 
1095 /* Search N wide characters of S for C.  */
1096 #if 1
1097 # if !1
1098 _GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n)
1099                                       _GL_ATTRIBUTE_PURE);
1100 # endif
1101   /* On some systems, this function is defined as an overloaded function:
1102        extern "C++" {
1103          const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t);
1104          wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t);
1105        }  */
1106 _GL_CXXALIAS_SYS_CAST2 (wmemchr,
1107                         wchar_t *, (const wchar_t *, wchar_t, size_t),
1108                         const wchar_t *, (const wchar_t *, wchar_t, size_t));
1109 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
1110      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
1111 _GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
1112 _GL_CXXALIASWARN1 (wmemchr, const wchar_t *,
1113                    (const wchar_t *s, wchar_t c, size_t n));
1114 # elif __GLIBC__ >= 2
1115 _GL_CXXALIASWARN (wmemchr);
1116 # endif
1117 #elif defined GNULIB_POSIXCHECK
1118 # undef wmemchr
1119 # if HAVE_RAW_DECL_WMEMCHR
1120 _GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - "
1121                  "use gnulib module wmemchr for portability");
1122 # endif
1123 #endif
1124 
1125 
1126 /* Compare N wide characters of S1 and S2.  */
1127 #if 0
1128 # if !1
1129 _GL_FUNCDECL_SYS (wmemcmp, int,
1130                   (const wchar_t *s1, const wchar_t *s2, size_t n)
1131                   _GL_ATTRIBUTE_PURE);
1132 # endif
1133 _GL_CXXALIAS_SYS (wmemcmp, int,
1134                   (const wchar_t *s1, const wchar_t *s2, size_t n));
1135 # if __GLIBC__ >= 2
1136 _GL_CXXALIASWARN (wmemcmp);
1137 # endif
1138 #elif defined GNULIB_POSIXCHECK
1139 # undef wmemcmp
1140 # if HAVE_RAW_DECL_WMEMCMP
1141 _GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - "
1142                  "use gnulib module wmemcmp for portability");
1143 # endif
1144 #endif
1145 
1146 
1147 /* Copy N wide characters of SRC to DEST.  */
1148 #if 0
1149 # if !1
1150 _GL_FUNCDECL_SYS (wmemcpy, wchar_t *,
1151                   (wchar_t *restrict dest,
1152                    const wchar_t *restrict src, size_t n));
1153 # endif
1154 _GL_CXXALIAS_SYS (wmemcpy, wchar_t *,
1155                   (wchar_t *restrict dest,
1156                    const wchar_t *restrict src, size_t n));
1157 # if __GLIBC__ >= 2
1158 _GL_CXXALIASWARN (wmemcpy);
1159 # endif
1160 #elif defined GNULIB_POSIXCHECK
1161 # undef wmemcpy
1162 # if HAVE_RAW_DECL_WMEMCPY
1163 _GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - "
1164                  "use gnulib module wmemcpy for portability");
1165 # endif
1166 #endif
1167 
1168 
1169 /* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for
1170    overlapping memory areas.  */
1171 #if 0
1172 # if !1
1173 _GL_FUNCDECL_SYS (wmemmove, wchar_t *,
1174                   (wchar_t *dest, const wchar_t *src, size_t n));
1175 # endif
1176 _GL_CXXALIAS_SYS (wmemmove, wchar_t *,
1177                   (wchar_t *dest, const wchar_t *src, size_t n));
1178 # if __GLIBC__ >= 2
1179 _GL_CXXALIASWARN (wmemmove);
1180 # endif
1181 #elif defined GNULIB_POSIXCHECK
1182 # undef wmemmove
1183 # if HAVE_RAW_DECL_WMEMMOVE
1184 _GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - "
1185                  "use gnulib module wmemmove for portability");
1186 # endif
1187 #endif
1188 
1189 
1190 /* Copy N wide characters of SRC to DEST.
1191    Return pointer to wide characters after the last written wide character.  */
1192 #if 1
1193 # if !1
1194 _GL_FUNCDECL_SYS (wmempcpy, wchar_t *,
1195                   (wchar_t *restrict dest,
1196                    const wchar_t *restrict src, size_t n));
1197 # endif
1198 _GL_CXXALIAS_SYS (wmempcpy, wchar_t *,
1199                   (wchar_t *restrict dest,
1200                    const wchar_t *restrict src, size_t n));
1201 # if __GLIBC__ >= 2
1202 _GL_CXXALIASWARN (wmempcpy);
1203 # endif
1204 #elif defined GNULIB_POSIXCHECK
1205 # undef wmempcpy
1206 # if HAVE_RAW_DECL_WMEMPCPY
1207 _GL_WARN_ON_USE (wmempcpy, "wmempcpy is unportable - "
1208                  "use gnulib module wmempcpy for portability");
1209 # endif
1210 #endif
1211 
1212 
1213 /* Set N wide characters of S to C.  */
1214 #if 0
1215 # if !1
1216 _GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
1217 # endif
1218 _GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
1219 # if __GLIBC__ >= 2
1220 _GL_CXXALIASWARN (wmemset);
1221 # endif
1222 #elif defined GNULIB_POSIXCHECK
1223 # undef wmemset
1224 # if HAVE_RAW_DECL_WMEMSET
1225 _GL_WARN_ON_USE (wmemset, "wmemset is unportable - "
1226                  "use gnulib module wmemset for portability");
1227 # endif
1228 #endif
1229 
1230 
1231 /* Return the number of wide characters in S.  */
1232 #if 0
1233 # if !1
1234 _GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE);
1235 # endif
1236 _GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s));
1237 # if __GLIBC__ >= 2
1238 _GL_CXXALIASWARN (wcslen);
1239 # endif
1240 #elif defined GNULIB_POSIXCHECK
1241 # undef wcslen
1242 # if HAVE_RAW_DECL_WCSLEN
1243 _GL_WARN_ON_USE (wcslen, "wcslen is unportable - "
1244                  "use gnulib module wcslen for portability");
1245 # endif
1246 #endif
1247 
1248 
1249 /* Return the number of wide characters in S, but at most MAXLEN.  */
1250 #if 0
1251 # if !1
1252 _GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)
1253                                    _GL_ATTRIBUTE_PURE);
1254 # endif
1255 _GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen));
1256 _GL_CXXALIASWARN (wcsnlen);
1257 #elif defined GNULIB_POSIXCHECK
1258 # undef wcsnlen
1259 # if HAVE_RAW_DECL_WCSNLEN
1260 _GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - "
1261                  "use gnulib module wcsnlen for portability");
1262 # endif
1263 #endif
1264 
1265 
1266 /* Copy SRC to DEST.  */
1267 #if 0
1268 # if !1
1269 _GL_FUNCDECL_SYS (wcscpy, wchar_t *,
1270                   (wchar_t *restrict dest, const wchar_t *restrict src));
1271 # endif
1272 _GL_CXXALIAS_SYS (wcscpy, wchar_t *,
1273                   (wchar_t *restrict dest, const wchar_t *restrict src));
1274 # if __GLIBC__ >= 2
1275 _GL_CXXALIASWARN (wcscpy);
1276 # endif
1277 #elif defined GNULIB_POSIXCHECK
1278 # undef wcscpy
1279 # if HAVE_RAW_DECL_WCSCPY
1280 _GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - "
1281                  "use gnulib module wcscpy for portability");
1282 # endif
1283 #endif
1284 
1285 
1286 /* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST.  */
1287 #if 0
1288 # if !1
1289 _GL_FUNCDECL_SYS (wcpcpy, wchar_t *,
1290                   (wchar_t *restrict dest, const wchar_t *restrict src));
1291 # endif
1292 _GL_CXXALIAS_SYS (wcpcpy, wchar_t *,
1293                   (wchar_t *restrict dest, const wchar_t *restrict src));
1294 _GL_CXXALIASWARN (wcpcpy);
1295 #elif defined GNULIB_POSIXCHECK
1296 # undef wcpcpy
1297 # if HAVE_RAW_DECL_WCPCPY
1298 _GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - "
1299                  "use gnulib module wcpcpy for portability");
1300 # endif
1301 #endif
1302 
1303 
1304 /* Copy no more than N wide characters of SRC to DEST.  */
1305 #if 0
1306 # if !1
1307 _GL_FUNCDECL_SYS (wcsncpy, wchar_t *,
1308                   (wchar_t *restrict dest,
1309                    const wchar_t *restrict src, size_t n));
1310 # endif
1311 _GL_CXXALIAS_SYS (wcsncpy, wchar_t *,
1312                   (wchar_t *restrict dest,
1313                    const wchar_t *restrict src, size_t n));
1314 # if __GLIBC__ >= 2
1315 _GL_CXXALIASWARN (wcsncpy);
1316 # endif
1317 #elif defined GNULIB_POSIXCHECK
1318 # undef wcsncpy
1319 # if HAVE_RAW_DECL_WCSNCPY
1320 _GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - "
1321                  "use gnulib module wcsncpy for portability");
1322 # endif
1323 #endif
1324 
1325 
1326 /* Copy no more than N characters of SRC to DEST, returning the address of
1327    the last character written into DEST.  */
1328 #if 0
1329 # if !1
1330 _GL_FUNCDECL_SYS (wcpncpy, wchar_t *,
1331                   (wchar_t *restrict dest,
1332                    const wchar_t *restrict src, size_t n));
1333 # endif
1334 _GL_CXXALIAS_SYS (wcpncpy, wchar_t *,
1335                   (wchar_t *restrict dest,
1336                    const wchar_t *restrict src, size_t n));
1337 _GL_CXXALIASWARN (wcpncpy);
1338 #elif defined GNULIB_POSIXCHECK
1339 # undef wcpncpy
1340 # if HAVE_RAW_DECL_WCPNCPY
1341 _GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - "
1342                  "use gnulib module wcpncpy for portability");
1343 # endif
1344 #endif
1345 
1346 
1347 /* Append SRC onto DEST.  */
1348 #if 0
1349 # if !1
1350 _GL_FUNCDECL_SYS (wcscat, wchar_t *,
1351                   (wchar_t *restrict dest, const wchar_t *restrict src));
1352 # endif
1353 _GL_CXXALIAS_SYS (wcscat, wchar_t *,
1354                   (wchar_t *restrict dest, const wchar_t *restrict src));
1355 # if __GLIBC__ >= 2
1356 _GL_CXXALIASWARN (wcscat);
1357 # endif
1358 #elif defined GNULIB_POSIXCHECK
1359 # undef wcscat
1360 # if HAVE_RAW_DECL_WCSCAT
1361 _GL_WARN_ON_USE (wcscat, "wcscat is unportable - "
1362                  "use gnulib module wcscat for portability");
1363 # endif
1364 #endif
1365 
1366 
1367 /* Append no more than N wide characters of SRC onto DEST.  */
1368 #if 0
1369 # if !1
1370 _GL_FUNCDECL_SYS (wcsncat, wchar_t *,
1371                   (wchar_t *restrict dest, const wchar_t *restrict src,
1372                    size_t n));
1373 # endif
1374 _GL_CXXALIAS_SYS (wcsncat, wchar_t *,
1375                   (wchar_t *restrict dest, const wchar_t *restrict src,
1376                    size_t n));
1377 # if __GLIBC__ >= 2
1378 _GL_CXXALIASWARN (wcsncat);
1379 # endif
1380 #elif defined GNULIB_POSIXCHECK
1381 # undef wcsncat
1382 # if HAVE_RAW_DECL_WCSNCAT
1383 _GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - "
1384                  "use gnulib module wcsncat for portability");
1385 # endif
1386 #endif
1387 
1388 
1389 /* Compare S1 and S2.  */
1390 #if 0
1391 # if !1
1392 _GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)
1393                                _GL_ATTRIBUTE_PURE);
1394 # endif
1395 _GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2));
1396 # if __GLIBC__ >= 2
1397 _GL_CXXALIASWARN (wcscmp);
1398 # endif
1399 #elif defined GNULIB_POSIXCHECK
1400 # undef wcscmp
1401 # if HAVE_RAW_DECL_WCSCMP
1402 _GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - "
1403                  "use gnulib module wcscmp for portability");
1404 # endif
1405 #endif
1406 
1407 
1408 /* Compare no more than N wide characters of S1 and S2.  */
1409 #if 0
1410 # if !1
1411 _GL_FUNCDECL_SYS (wcsncmp, int,
1412                   (const wchar_t *s1, const wchar_t *s2, size_t n)
1413                   _GL_ATTRIBUTE_PURE);
1414 # endif
1415 _GL_CXXALIAS_SYS (wcsncmp, int,
1416                   (const wchar_t *s1, const wchar_t *s2, size_t n));
1417 # if __GLIBC__ >= 2
1418 _GL_CXXALIASWARN (wcsncmp);
1419 # endif
1420 #elif defined GNULIB_POSIXCHECK
1421 # undef wcsncmp
1422 # if HAVE_RAW_DECL_WCSNCMP
1423 _GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - "
1424                  "use gnulib module wcsncmp for portability");
1425 # endif
1426 #endif
1427 
1428 
1429 /* Compare S1 and S2, ignoring case.  */
1430 #if 0
1431 # if !1
1432 _GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)
1433                                    _GL_ATTRIBUTE_PURE);
1434 # endif
1435 _GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2));
1436 _GL_CXXALIASWARN (wcscasecmp);
1437 #elif defined GNULIB_POSIXCHECK
1438 # undef wcscasecmp
1439 # if HAVE_RAW_DECL_WCSCASECMP
1440 _GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - "
1441                  "use gnulib module wcscasecmp for portability");
1442 # endif
1443 #endif
1444 
1445 
1446 /* Compare no more than N chars of S1 and S2, ignoring case.  */
1447 #if 0
1448 # if !1
1449 _GL_FUNCDECL_SYS (wcsncasecmp, int,
1450                   (const wchar_t *s1, const wchar_t *s2, size_t n)
1451                   _GL_ATTRIBUTE_PURE);
1452 # endif
1453 _GL_CXXALIAS_SYS (wcsncasecmp, int,
1454                   (const wchar_t *s1, const wchar_t *s2, size_t n));
1455 _GL_CXXALIASWARN (wcsncasecmp);
1456 #elif defined GNULIB_POSIXCHECK
1457 # undef wcsncasecmp
1458 # if HAVE_RAW_DECL_WCSNCASECMP
1459 _GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - "
1460                  "use gnulib module wcsncasecmp for portability");
1461 # endif
1462 #endif
1463 
1464 
1465 /* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE
1466    category of the current locale.  */
1467 #if 0
1468 # if !1
1469 _GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
1470 # endif
1471 _GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
1472 # if __GLIBC__ >= 2
1473 _GL_CXXALIASWARN (wcscoll);
1474 # endif
1475 #elif defined GNULIB_POSIXCHECK
1476 # undef wcscoll
1477 # if HAVE_RAW_DECL_WCSCOLL
1478 _GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - "
1479                  "use gnulib module wcscoll for portability");
1480 # endif
1481 #endif
1482 
1483 
1484 /* Transform S2 into array pointed to by S1 such that if wcscmp is applied
1485    to two transformed strings the result is the as applying 'wcscoll' to the
1486    original strings.  */
1487 #if 0
1488 # if !1
1489 _GL_FUNCDECL_SYS (wcsxfrm, size_t,
1490                   (wchar_t *restrict s1, const wchar_t *restrict s2, size_t n));
1491 # endif
1492 _GL_CXXALIAS_SYS (wcsxfrm, size_t,
1493                   (wchar_t *restrict s1, const wchar_t *restrict s2, size_t n));
1494 # if __GLIBC__ >= 2
1495 _GL_CXXALIASWARN (wcsxfrm);
1496 # endif
1497 #elif defined GNULIB_POSIXCHECK
1498 # undef wcsxfrm
1499 # if HAVE_RAW_DECL_WCSXFRM
1500 _GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - "
1501                  "use gnulib module wcsxfrm for portability");
1502 # endif
1503 #endif
1504 
1505 
1506 /* Duplicate S, returning an identical malloc'd string.  */
1507 #if 0
1508 # if defined _WIN32 && !defined __CYGWIN__
1509 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1510 #   undef wcsdup
1511 #   define wcsdup _wcsdup
1512 #  endif
1513 _GL_CXXALIAS_MDA (wcsdup, wchar_t *, (const wchar_t *s));
1514 # else
1515 #  if !1 || __GNUC__ >= 11
1516 _GL_FUNCDECL_SYS (wcsdup, wchar_t *,
1517                   (const wchar_t *s)
1518                   _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE);
1519 #  endif
1520 _GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
1521 # endif
1522 _GL_CXXALIASWARN (wcsdup);
1523 #else
1524 # if __GNUC__ >= 11 && !defined wcsdup
1525 /* For -Wmismatched-dealloc: Associate wcsdup with free or rpl_free.  */
1526 _GL_FUNCDECL_SYS (wcsdup, wchar_t *,
1527                   (const wchar_t *s)
1528                   _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE);
1529 # endif
1530 # if defined GNULIB_POSIXCHECK
1531 #  undef wcsdup
1532 #  if HAVE_RAW_DECL_WCSDUP
1533 _GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - "
1534                  "use gnulib module wcsdup for portability");
1535 #  endif
1536 # elif 1
1537 /* On native Windows, map 'wcsdup' to '_wcsdup', so that -loldnames is not
1538    required.  In C++ with GNULIB_NAMESPACE, avoid differences between
1539    platforms by defining GNULIB_NAMESPACE::wcsdup always.  */
1540 #  if defined _WIN32 && !defined __CYGWIN__
1541 #   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1542 #    undef wcsdup
1543 #    define wcsdup _wcsdup
1544 #   endif
1545 _GL_CXXALIAS_MDA (wcsdup, wchar_t *, (const wchar_t *s));
1546 #  else
1547 _GL_FUNCDECL_SYS (wcsdup, wchar_t *,
1548                   (const wchar_t *s)
1549                   _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE);
1550 #   if 1
1551 _GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
1552 #   endif
1553 #  endif
1554 #  if (defined _WIN32 && !defined __CYGWIN__) || 1
1555 _GL_CXXALIASWARN (wcsdup);
1556 #  endif
1557 # endif
1558 #endif
1559 
1560 
1561 /* Find the first occurrence of WC in WCS.  */
1562 #if 0
1563 # if !1
1564 _GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
1565                                      _GL_ATTRIBUTE_PURE);
1566 # endif
1567   /* On some systems, this function is defined as an overloaded function:
1568        extern "C++" {
1569          const wchar_t * std::wcschr (const wchar_t *, wchar_t);
1570          wchar_t * std::wcschr (wchar_t *, wchar_t);
1571        }  */
1572 _GL_CXXALIAS_SYS_CAST2 (wcschr,
1573                         wchar_t *, (const wchar_t *, wchar_t),
1574                         const wchar_t *, (const wchar_t *, wchar_t));
1575 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
1576      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
1577 _GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc));
1578 _GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
1579 # elif __GLIBC__ >= 2
1580 _GL_CXXALIASWARN (wcschr);
1581 # endif
1582 #elif defined GNULIB_POSIXCHECK
1583 # undef wcschr
1584 # if HAVE_RAW_DECL_WCSCHR
1585 _GL_WARN_ON_USE (wcschr, "wcschr is unportable - "
1586                  "use gnulib module wcschr for portability");
1587 # endif
1588 #endif
1589 
1590 
1591 /* Find the last occurrence of WC in WCS.  */
1592 #if 0
1593 # if !1
1594 _GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
1595                                       _GL_ATTRIBUTE_PURE);
1596 # endif
1597   /* On some systems, this function is defined as an overloaded function:
1598        extern "C++" {
1599          const wchar_t * std::wcsrchr (const wchar_t *, wchar_t);
1600          wchar_t * std::wcsrchr (wchar_t *, wchar_t);
1601        }  */
1602 _GL_CXXALIAS_SYS_CAST2 (wcsrchr,
1603                         wchar_t *, (const wchar_t *, wchar_t),
1604                         const wchar_t *, (const wchar_t *, wchar_t));
1605 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
1606      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
1607 _GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc));
1608 _GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
1609 # elif __GLIBC__ >= 2
1610 _GL_CXXALIASWARN (wcsrchr);
1611 # endif
1612 #elif defined GNULIB_POSIXCHECK
1613 # undef wcsrchr
1614 # if HAVE_RAW_DECL_WCSRCHR
1615 _GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - "
1616                  "use gnulib module wcsrchr for portability");
1617 # endif
1618 #endif
1619 
1620 
1621 /* Return the length of the initial segmet of WCS which consists entirely
1622    of wide characters not in REJECT.  */
1623 #if 0
1624 # if !1
1625 _GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)
1626                                    _GL_ATTRIBUTE_PURE);
1627 # endif
1628 _GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject));
1629 # if __GLIBC__ >= 2
1630 _GL_CXXALIASWARN (wcscspn);
1631 # endif
1632 #elif defined GNULIB_POSIXCHECK
1633 # undef wcscspn
1634 # if HAVE_RAW_DECL_WCSCSPN
1635 _GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - "
1636                  "use gnulib module wcscspn for portability");
1637 # endif
1638 #endif
1639 
1640 
1641 /* Return the length of the initial segmet of WCS which consists entirely
1642    of wide characters in ACCEPT.  */
1643 #if 0
1644 # if !1
1645 _GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)
1646                                   _GL_ATTRIBUTE_PURE);
1647 # endif
1648 _GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept));
1649 # if __GLIBC__ >= 2
1650 _GL_CXXALIASWARN (wcsspn);
1651 # endif
1652 #elif defined GNULIB_POSIXCHECK
1653 # undef wcsspn
1654 # if HAVE_RAW_DECL_WCSSPN
1655 _GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - "
1656                  "use gnulib module wcsspn for portability");
1657 # endif
1658 #endif
1659 
1660 
1661 /* Find the first occurrence in WCS of any character in ACCEPT.  */
1662 #if 0
1663 # if !1
1664 _GL_FUNCDECL_SYS (wcspbrk, wchar_t *,
1665                   (const wchar_t *wcs, const wchar_t *accept)
1666                   _GL_ATTRIBUTE_PURE);
1667 # endif
1668   /* On some systems, this function is defined as an overloaded function:
1669        extern "C++" {
1670          const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *);
1671          wchar_t * std::wcspbrk (wchar_t *, const wchar_t *);
1672        }  */
1673 _GL_CXXALIAS_SYS_CAST2 (wcspbrk,
1674                         wchar_t *, (const wchar_t *, const wchar_t *),
1675                         const wchar_t *, (const wchar_t *, const wchar_t *));
1676 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
1677      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
1678 _GL_CXXALIASWARN1 (wcspbrk, wchar_t *,
1679                    (wchar_t *wcs, const wchar_t *accept));
1680 _GL_CXXALIASWARN1 (wcspbrk, const wchar_t *,
1681                    (const wchar_t *wcs, const wchar_t *accept));
1682 # elif __GLIBC__ >= 2
1683 _GL_CXXALIASWARN (wcspbrk);
1684 # endif
1685 #elif defined GNULIB_POSIXCHECK
1686 # undef wcspbrk
1687 # if HAVE_RAW_DECL_WCSPBRK
1688 _GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - "
1689                  "use gnulib module wcspbrk for portability");
1690 # endif
1691 #endif
1692 
1693 
1694 /* Find the first occurrence of NEEDLE in HAYSTACK.  */
1695 #if 0
1696 # if !1
1697 _GL_FUNCDECL_SYS (wcsstr, wchar_t *,
1698                   (const wchar_t *restrict haystack,
1699                    const wchar_t *restrict needle)
1700                   _GL_ATTRIBUTE_PURE);
1701 # endif
1702   /* On some systems, this function is defined as an overloaded function:
1703        extern "C++" {
1704          const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *);
1705          wchar_t * std::wcsstr (wchar_t *, const wchar_t *);
1706        }  */
1707 _GL_CXXALIAS_SYS_CAST2 (wcsstr,
1708                         wchar_t *,
1709                         (const wchar_t *restrict, const wchar_t *restrict),
1710                         const wchar_t *,
1711                         (const wchar_t *restrict, const wchar_t *restrict));
1712 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
1713      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
1714 _GL_CXXALIASWARN1 (wcsstr, wchar_t *,
1715                    (wchar_t *restrict haystack,
1716                     const wchar_t *restrict needle));
1717 _GL_CXXALIASWARN1 (wcsstr, const wchar_t *,
1718                    (const wchar_t *restrict haystack,
1719                     const wchar_t *restrict needle));
1720 # elif __GLIBC__ >= 2
1721 _GL_CXXALIASWARN (wcsstr);
1722 # endif
1723 #elif defined GNULIB_POSIXCHECK
1724 # undef wcsstr
1725 # if HAVE_RAW_DECL_WCSSTR
1726 _GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - "
1727                  "use gnulib module wcsstr for portability");
1728 # endif
1729 #endif
1730 
1731 
1732 /* Divide WCS into tokens separated by characters in DELIM.  */
1733 #if 0
1734 # if 0
1735 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1736 #   undef wcstok
1737 #   define wcstok rpl_wcstok
1738 #  endif
1739 _GL_FUNCDECL_RPL (wcstok, wchar_t *,
1740                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
1741                    wchar_t **restrict ptr));
1742 _GL_CXXALIAS_RPL (wcstok, wchar_t *,
1743                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
1744                    wchar_t **restrict ptr));
1745 # else
1746 #  if !1
1747 _GL_FUNCDECL_SYS (wcstok, wchar_t *,
1748                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
1749                    wchar_t **restrict ptr));
1750 #  endif
1751 _GL_CXXALIAS_SYS (wcstok, wchar_t *,
1752                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
1753                    wchar_t **restrict ptr));
1754 # endif
1755 # if __GLIBC__ >= 2
1756 _GL_CXXALIASWARN (wcstok);
1757 # endif
1758 #elif defined GNULIB_POSIXCHECK
1759 # undef wcstok
1760 # if HAVE_RAW_DECL_WCSTOK
1761 _GL_WARN_ON_USE (wcstok, "wcstok is unportable - "
1762                  "use gnulib module wcstok for portability");
1763 # endif
1764 #endif
1765 
1766 
1767 /* Determine number of column positions required for first N wide
1768    characters (or fewer if S ends before this) in S.  */
1769 #if 0
1770 # if 0
1771 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1772 #   undef wcswidth
1773 #   define wcswidth rpl_wcswidth
1774 #  endif
1775 _GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n)
1776                                  _GL_ATTRIBUTE_PURE);
1777 _GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n));
1778 # else
1779 #  if !1
1780 _GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n)
1781                                  _GL_ATTRIBUTE_PURE);
1782 #  endif
1783 _GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n));
1784 # endif
1785 # if __GLIBC__ >= 2
1786 _GL_CXXALIASWARN (wcswidth);
1787 # endif
1788 #elif defined GNULIB_POSIXCHECK
1789 # undef wcswidth
1790 # if HAVE_RAW_DECL_WCSWIDTH
1791 _GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - "
1792                  "use gnulib module wcswidth for portability");
1793 # endif
1794 #endif
1795 
1796 
1797 /* Convert *TP to a date and time wide string.  See
1798    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsftime.html>.  */
1799 #if 0
1800 # if 0
1801 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1802 #   undef wcsftime
1803 #   define wcsftime rpl_wcsftime
1804 #  endif
1805 _GL_FUNCDECL_RPL (wcsftime, size_t,
1806                   (wchar_t *restrict __buf, size_t __bufsize,
1807                    const wchar_t *restrict __fmt,
1808                    const struct tm *restrict __tp)
1809                   _GL_ARG_NONNULL ((1, 3, 4)));
1810 _GL_CXXALIAS_RPL (wcsftime, size_t,
1811                   (wchar_t *restrict __buf, size_t __bufsize,
1812                    const wchar_t *restrict __fmt,
1813                    const struct tm *restrict __tp));
1814 # else
1815 #  if !1
1816 _GL_FUNCDECL_SYS (wcsftime, size_t,
1817                   (wchar_t *restrict __buf, size_t __bufsize,
1818                    const wchar_t *restrict __fmt,
1819                    const struct tm *restrict __tp)
1820                   _GL_ARG_NONNULL ((1, 3, 4)));
1821 #  endif
1822 _GL_CXXALIAS_SYS (wcsftime, size_t,
1823                   (wchar_t *restrict __buf, size_t __bufsize,
1824                    const wchar_t *restrict __fmt,
1825                    const struct tm *restrict __tp));
1826 # endif
1827 # if __GLIBC__ >= 2
1828 _GL_CXXALIASWARN (wcsftime);
1829 # endif
1830 #elif defined GNULIB_POSIXCHECK
1831 # undef wcsftime
1832 # if HAVE_RAW_DECL_WCSFTIME
1833 _GL_WARN_ON_USE (wcsftime, "wcsftime is unportable - "
1834                  "use gnulib module wcsftime for portability");
1835 # endif
1836 #endif
1837 
1838 
1839 #endif /* _GL_WCHAR_H */
1840 #endif /* _GL_WCHAR_H */
1841 #endif
1842