root/maint/gnulib/lib/wchar.in.h

/* [previous][next][first][last][top][bottom][index][help] */
   1 /* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
   2 
   3    Copyright (C) 2007-2021 Free Software Foundation, Inc.
   4 
   5    This file is free software: you can redistribute it and/or modify
   6    it under the terms of the GNU Lesser General Public License as
   7    published by the Free Software Foundation; either version 2.1 of the
   8    License, or (at your option) any later version.
   9 
  10    This file is distributed in the hope that it will be useful,
  11    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13    GNU Lesser General Public License for more details.
  14 
  15    You should have received a copy of the GNU Lesser General Public License
  16    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
  17 
  18 /* Written by Eric Blake.  */
  19 
  20 /*
  21  * ISO C 99 <wchar.h> for platforms that have issues.
  22  * <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wchar.h.html>
  23  *
  24  * For now, this just ensures proper prerequisite inclusion order and
  25  * the declaration of wcwidth().
  26  */
  27 
  28 #if __GNUC__ >= 3
  29 @PRAGMA_SYSTEM_HEADER@
  30 #endif
  31 @PRAGMA_COLUMNS@
  32 
  33 #if (((defined __need_mbstate_t || defined __need_wint_t)               \
  34       && !defined __MINGW32__)                                          \
  35      || (defined __hpux                                                 \
  36          && ((defined _INTTYPES_INCLUDED                                \
  37               && !defined _GL_FINISHED_INCLUDING_SYSTEM_INTTYPES_H)     \
  38              || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H))               \
  39      || (defined __MINGW32__ && defined __STRING_H_SOURCED__)           \
  40      || defined _GL_ALREADY_INCLUDING_WCHAR_H)
  41 /* Special invocation convention:
  42    - Inside glibc and uClibc header files, but not MinGW.
  43    - On HP-UX 11.00 we have a sequence of nested includes
  44      <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
  45      once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
  46      and once directly.  In both situations 'wint_t' is not yet defined,
  47      therefore we cannot provide the function overrides; instead include only
  48      the system's <wchar.h>.
  49    - With MinGW 3.22, when <string.h> includes <wchar.h>, only some part of
  50      <wchar.h> is actually processed, and that doesn't include 'mbstate_t'.
  51    - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
  52      the latter includes <wchar.h>.  But here, we have no way to detect whether
  53      <wctype.h> is completely included or is still being included.  */
  54 
  55 #@INCLUDE_NEXT@ @NEXT_WCHAR_H@
  56 
  57 #else
  58 /* Normal invocation convention.  */
  59 
  60 #ifndef _@GUARD_PREFIX@_WCHAR_H
  61 
  62 #define _GL_ALREADY_INCLUDING_WCHAR_H
  63 
  64 #if @HAVE_FEATURES_H@
  65 # include <features.h> /* for __GLIBC__ */
  66 #endif
  67 
  68 /* In some builds of uClibc, <wchar.h> is nonexistent and wchar_t is defined
  69    by <stddef.h>.
  70    But avoid namespace pollution on glibc systems.  */
  71 #if !(defined __GLIBC__ && !defined __UCLIBC__)
  72 # include <stddef.h>
  73 #endif
  74 
  75 /* Include the original <wchar.h> if it exists.
  76    Some builds of uClibc lack it.  */
  77 /* The include_next requires a split double-inclusion guard.  */
  78 #if @HAVE_WCHAR_H@
  79 # @INCLUDE_NEXT@ @NEXT_WCHAR_H@
  80 #endif
  81 
  82 #undef _GL_ALREADY_INCLUDING_WCHAR_H
  83 
  84 #ifndef _@GUARD_PREFIX@_WCHAR_H
  85 #define _@GUARD_PREFIX@_WCHAR_H
  86 
  87 /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers
  88    that can be freed by passing them as the Ith argument to the
  89    function F.  */
  90 #ifndef _GL_ATTRIBUTE_DEALLOC
  91 # if __GNUC__ >= 11
  92 #  define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
  93 # else
  94 #  define _GL_ATTRIBUTE_DEALLOC(f, i)
  95 # endif
  96 #endif
  97 
  98 /* _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that
  99    can be freed via 'free'; it can be used only after declaring 'free'.  */
 100 /* Applies to: functions.  Cannot be used on inline functions.  */
 101 #ifndef _GL_ATTRIBUTE_DEALLOC_FREE
 102 # define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1)
 103 #endif
 104 
 105 /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly
 106    allocated memory.  */
 107 /* Applies to: functions.  */
 108 #ifndef _GL_ATTRIBUTE_MALLOC
 109 # if __GNUC__ >= 3 || defined __clang__
 110 #  define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
 111 # else
 112 #  define _GL_ATTRIBUTE_MALLOC
 113 # endif
 114 #endif
 115 
 116 /* The __attribute__ feature is available in gcc versions 2.5 and later.
 117    The attribute __pure__ was added in gcc 2.96.  */
 118 #ifndef _GL_ATTRIBUTE_PURE
 119 # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) || defined __clang__
 120 #  define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
 121 # else
 122 #  define _GL_ATTRIBUTE_PURE /* empty */
 123 # endif
 124 #endif
 125 
 126 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
 127 
 128 /* The definition of _GL_ARG_NONNULL is copied here.  */
 129 
 130 /* The definition of _GL_WARN_ON_USE is copied here.  */
 131 
 132 
 133 /* Define wint_t and WEOF.  (Also done in wctype.in.h.)  */
 134 #if !@HAVE_WINT_T@ && !defined wint_t
 135 # define wint_t int
 136 # ifndef WEOF
 137 #  define WEOF -1
 138 # endif
 139 #else
 140 /* mingw and MSVC define wint_t as 'unsigned short' in <crtdefs.h> or
 141    <stddef.h>.  This is too small: ISO C 99 section 7.24.1.(2) says that
 142    wint_t must be "unchanged by default argument promotions".  Override it.  */
 143 # if @GNULIBHEADERS_OVERRIDE_WINT_T@
 144 #  if !GNULIB_defined_wint_t
 145 #   if @HAVE_CRTDEFS_H@
 146 #    include <crtdefs.h>
 147 #   else
 148 #    include <stddef.h>
 149 #   endif
 150 typedef unsigned int rpl_wint_t;
 151 #   undef wint_t
 152 #   define wint_t rpl_wint_t
 153 #   define GNULIB_defined_wint_t 1
 154 #  endif
 155 # endif
 156 # ifndef WEOF
 157 #  define WEOF ((wint_t) -1)
 158 # endif
 159 #endif
 160 
 161 
 162 /* Override mbstate_t if it is too small.
 163    On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
 164    implementing mbrtowc for encodings like UTF-8.
 165    On AIX and MSVC, mbrtowc needs to be overridden, but mbstate_t exists and is
 166    large enough and overriding it would cause problems in C++ mode.  */
 167 #if !(((defined _WIN32 && !defined __CYGWIN__) || @HAVE_MBSINIT@) && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
 168 # if !GNULIB_defined_mbstate_t
 169 #  if !(defined _AIX || defined _MSC_VER)
 170 typedef int rpl_mbstate_t;
 171 #   undef mbstate_t
 172 #   define mbstate_t rpl_mbstate_t
 173 #  endif
 174 #  define GNULIB_defined_mbstate_t 1
 175 # endif
 176 #endif
 177 
 178 /* Declare 'free' if needed for _GL_ATTRIBUTE_DEALLOC_FREE.  */
 179 _GL_EXTERN_C void free (void *);
 180 #if @GNULIB_FREE_POSIX@
 181 # if (@REPLACE_FREE@ && !defined free \
 182       && !(defined __cplusplus && defined GNULIB_NAMESPACE))
 183 #  define free rpl_free
 184 _GL_EXTERN_C void free (void *);
 185 # endif
 186 #endif
 187 
 188 /* Convert a single-byte character to a wide character.  */
 189 #if @GNULIB_BTOWC@
 190 # if @REPLACE_BTOWC@
 191 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 192 #   undef btowc
 193 #   define btowc rpl_btowc
 194 #  endif
 195 _GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
 196 _GL_CXXALIAS_RPL (btowc, wint_t, (int c));
 197 # else
 198 #  if !@HAVE_BTOWC@
 199 _GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
 200 #  endif
 201 /* Need to cast, because on mingw, the return type is 'unsigned short'.  */
 202 _GL_CXXALIAS_SYS_CAST (btowc, wint_t, (int c));
 203 # endif
 204 # if __GLIBC__ >= 2
 205 _GL_CXXALIASWARN (btowc);
 206 # endif
 207 #elif defined GNULIB_POSIXCHECK
 208 # undef btowc
 209 # if HAVE_RAW_DECL_BTOWC
 210 _GL_WARN_ON_USE (btowc, "btowc is unportable - "
 211                  "use gnulib module btowc for portability");
 212 # endif
 213 #endif
 214 
 215 
 216 /* Convert a wide character to a single-byte character.  */
 217 #if @GNULIB_WCTOB@
 218 # if @REPLACE_WCTOB@
 219 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 220 #   undef wctob
 221 #   define wctob rpl_wctob
 222 #  endif
 223 _GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
 224 _GL_CXXALIAS_RPL (wctob, int, (wint_t wc));
 225 # else
 226 #  if !defined wctob && !@HAVE_DECL_WCTOB@
 227 /* wctob is provided by gnulib, or wctob exists but is not declared.  */
 228 _GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
 229 #  endif
 230 _GL_CXXALIAS_SYS (wctob, int, (wint_t wc));
 231 # endif
 232 # if __GLIBC__ >= 2
 233 _GL_CXXALIASWARN (wctob);
 234 # endif
 235 #elif defined GNULIB_POSIXCHECK
 236 # undef wctob
 237 # if HAVE_RAW_DECL_WCTOB
 238 _GL_WARN_ON_USE (wctob, "wctob is unportable - "
 239                  "use gnulib module wctob for portability");
 240 # endif
 241 #endif
 242 
 243 
 244 /* Test whether *PS is in the initial state.  */
 245 #if @GNULIB_MBSINIT@
 246 # if @REPLACE_MBSINIT@
 247 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 248 #   undef mbsinit
 249 #   define mbsinit rpl_mbsinit
 250 #  endif
 251 _GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps));
 252 _GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps));
 253 # else
 254 #  if !@HAVE_MBSINIT@
 255 _GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps));
 256 #  endif
 257 _GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps));
 258 # endif
 259 # if __GLIBC__ >= 2
 260 _GL_CXXALIASWARN (mbsinit);
 261 # endif
 262 #elif defined GNULIB_POSIXCHECK
 263 # undef mbsinit
 264 # if HAVE_RAW_DECL_MBSINIT
 265 _GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - "
 266                  "use gnulib module mbsinit for portability");
 267 # endif
 268 #endif
 269 
 270 
 271 /* Convert a multibyte character to a wide character.  */
 272 #if @GNULIB_MBRTOWC@
 273 # if @REPLACE_MBRTOWC@
 274 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 275 #   undef mbrtowc
 276 #   define mbrtowc rpl_mbrtowc
 277 #  endif
 278 _GL_FUNCDECL_RPL (mbrtowc, size_t,
 279                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
 280                    mbstate_t *restrict ps));
 281 _GL_CXXALIAS_RPL (mbrtowc, size_t,
 282                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
 283                    mbstate_t *restrict ps));
 284 # else
 285 #  if !@HAVE_MBRTOWC@
 286 _GL_FUNCDECL_SYS (mbrtowc, size_t,
 287                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
 288                    mbstate_t *restrict ps));
 289 #  endif
 290 _GL_CXXALIAS_SYS (mbrtowc, size_t,
 291                   (wchar_t *restrict pwc, const char *restrict s, size_t n,
 292                    mbstate_t *restrict ps));
 293 # endif
 294 # if __GLIBC__ >= 2
 295 _GL_CXXALIASWARN (mbrtowc);
 296 # endif
 297 #elif defined GNULIB_POSIXCHECK
 298 # undef mbrtowc
 299 # if HAVE_RAW_DECL_MBRTOWC
 300 _GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - "
 301                  "use gnulib module mbrtowc for portability");
 302 # endif
 303 #endif
 304 
 305 
 306 /* Recognize a multibyte character.  */
 307 #if @GNULIB_MBRLEN@
 308 # if @REPLACE_MBRLEN@
 309 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 310 #   undef mbrlen
 311 #   define mbrlen rpl_mbrlen
 312 #  endif
 313 _GL_FUNCDECL_RPL (mbrlen, size_t,
 314                   (const char *restrict s, size_t n, mbstate_t *restrict ps));
 315 _GL_CXXALIAS_RPL (mbrlen, size_t,
 316                   (const char *restrict s, size_t n, mbstate_t *restrict ps));
 317 # else
 318 #  if !@HAVE_MBRLEN@
 319 _GL_FUNCDECL_SYS (mbrlen, size_t,
 320                   (const char *restrict s, size_t n, mbstate_t *restrict ps));
 321 #  endif
 322 _GL_CXXALIAS_SYS (mbrlen, size_t,
 323                   (const char *restrict s, size_t n, mbstate_t *restrict ps));
 324 # endif
 325 # if __GLIBC__ >= 2
 326 _GL_CXXALIASWARN (mbrlen);
 327 # endif
 328 #elif defined GNULIB_POSIXCHECK
 329 # undef mbrlen
 330 # if HAVE_RAW_DECL_MBRLEN
 331 _GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - "
 332                  "use gnulib module mbrlen for portability");
 333 # endif
 334 #endif
 335 
 336 
 337 /* Convert a string to a wide string.  */
 338 #if @GNULIB_MBSRTOWCS@
 339 # if @REPLACE_MBSRTOWCS@
 340 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 341 #   undef mbsrtowcs
 342 #   define mbsrtowcs rpl_mbsrtowcs
 343 #  endif
 344 _GL_FUNCDECL_RPL (mbsrtowcs, size_t,
 345                   (wchar_t *restrict dest,
 346                    const char **restrict srcp, size_t len,
 347                    mbstate_t *restrict ps)
 348                   _GL_ARG_NONNULL ((2)));
 349 _GL_CXXALIAS_RPL (mbsrtowcs, size_t,
 350                   (wchar_t *restrict dest,
 351                    const char **restrict srcp, size_t len,
 352                    mbstate_t *restrict ps));
 353 # else
 354 #  if !@HAVE_MBSRTOWCS@
 355 _GL_FUNCDECL_SYS (mbsrtowcs, size_t,
 356                   (wchar_t *restrict dest,
 357                    const char **restrict srcp, size_t len,
 358                    mbstate_t *restrict ps)
 359                   _GL_ARG_NONNULL ((2)));
 360 #  endif
 361 _GL_CXXALIAS_SYS (mbsrtowcs, size_t,
 362                   (wchar_t *restrict dest,
 363                    const char **restrict srcp, size_t len,
 364                    mbstate_t *restrict ps));
 365 # endif
 366 # if __GLIBC__ >= 2
 367 _GL_CXXALIASWARN (mbsrtowcs);
 368 # endif
 369 #elif defined GNULIB_POSIXCHECK
 370 # undef mbsrtowcs
 371 # if HAVE_RAW_DECL_MBSRTOWCS
 372 _GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - "
 373                  "use gnulib module mbsrtowcs for portability");
 374 # endif
 375 #endif
 376 
 377 
 378 /* Convert a string to a wide string.  */
 379 #if @GNULIB_MBSNRTOWCS@
 380 # if @REPLACE_MBSNRTOWCS@
 381 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 382 #   undef mbsnrtowcs
 383 #   define mbsnrtowcs rpl_mbsnrtowcs
 384 #  endif
 385 _GL_FUNCDECL_RPL (mbsnrtowcs, size_t,
 386                   (wchar_t *restrict dest,
 387                    const char **restrict srcp, size_t srclen, size_t len,
 388                    mbstate_t *restrict ps)
 389                   _GL_ARG_NONNULL ((2)));
 390 _GL_CXXALIAS_RPL (mbsnrtowcs, size_t,
 391                   (wchar_t *restrict dest,
 392                    const char **restrict srcp, size_t srclen, size_t len,
 393                    mbstate_t *restrict ps));
 394 # else
 395 #  if !@HAVE_MBSNRTOWCS@
 396 _GL_FUNCDECL_SYS (mbsnrtowcs, size_t,
 397                   (wchar_t *restrict dest,
 398                    const char **restrict srcp, size_t srclen, size_t len,
 399                    mbstate_t *restrict ps)
 400                   _GL_ARG_NONNULL ((2)));
 401 #  endif
 402 _GL_CXXALIAS_SYS (mbsnrtowcs, size_t,
 403                   (wchar_t *restrict dest,
 404                    const char **restrict srcp, size_t srclen, size_t len,
 405                    mbstate_t *restrict ps));
 406 # endif
 407 _GL_CXXALIASWARN (mbsnrtowcs);
 408 #elif defined GNULIB_POSIXCHECK
 409 # undef mbsnrtowcs
 410 # if HAVE_RAW_DECL_MBSNRTOWCS
 411 _GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - "
 412                  "use gnulib module mbsnrtowcs for portability");
 413 # endif
 414 #endif
 415 
 416 
 417 /* Convert a wide character to a multibyte character.  */
 418 #if @GNULIB_WCRTOMB@
 419 # if @REPLACE_WCRTOMB@
 420 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 421 #   undef wcrtomb
 422 #   define wcrtomb rpl_wcrtomb
 423 #  endif
 424 _GL_FUNCDECL_RPL (wcrtomb, size_t,
 425                   (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
 426 _GL_CXXALIAS_RPL (wcrtomb, size_t,
 427                   (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
 428 # else
 429 #  if !@HAVE_WCRTOMB@
 430 _GL_FUNCDECL_SYS (wcrtomb, size_t,
 431                   (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
 432 #  endif
 433 _GL_CXXALIAS_SYS (wcrtomb, size_t,
 434                   (char *restrict s, wchar_t wc, mbstate_t *restrict ps));
 435 # endif
 436 # if __GLIBC__ >= 2
 437 _GL_CXXALIASWARN (wcrtomb);
 438 # endif
 439 #elif defined GNULIB_POSIXCHECK
 440 # undef wcrtomb
 441 # if HAVE_RAW_DECL_WCRTOMB
 442 _GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - "
 443                  "use gnulib module wcrtomb for portability");
 444 # endif
 445 #endif
 446 
 447 
 448 /* Convert a wide string to a string.  */
 449 #if @GNULIB_WCSRTOMBS@
 450 # if @REPLACE_WCSRTOMBS@
 451 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 452 #   undef wcsrtombs
 453 #   define wcsrtombs rpl_wcsrtombs
 454 #  endif
 455 _GL_FUNCDECL_RPL (wcsrtombs, size_t,
 456                   (char *restrict dest, const wchar_t **restrict srcp,
 457                    size_t len,
 458                    mbstate_t *restrict ps)
 459                   _GL_ARG_NONNULL ((2)));
 460 _GL_CXXALIAS_RPL (wcsrtombs, size_t,
 461                   (char *restrict dest, const wchar_t **restrict srcp,
 462                    size_t len,
 463                    mbstate_t *restrict ps));
 464 # else
 465 #  if !@HAVE_WCSRTOMBS@
 466 _GL_FUNCDECL_SYS (wcsrtombs, size_t,
 467                   (char *restrict dest, const wchar_t **restrict srcp,
 468                    size_t len,
 469                    mbstate_t *restrict ps)
 470                   _GL_ARG_NONNULL ((2)));
 471 #  endif
 472 _GL_CXXALIAS_SYS (wcsrtombs, size_t,
 473                   (char *restrict dest, const wchar_t **restrict srcp,
 474                    size_t len,
 475                    mbstate_t *restrict ps));
 476 # endif
 477 # if __GLIBC__ >= 2
 478 _GL_CXXALIASWARN (wcsrtombs);
 479 # endif
 480 #elif defined GNULIB_POSIXCHECK
 481 # undef wcsrtombs
 482 # if HAVE_RAW_DECL_WCSRTOMBS
 483 _GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - "
 484                  "use gnulib module wcsrtombs for portability");
 485 # endif
 486 #endif
 487 
 488 
 489 /* Convert a wide string to a string.  */
 490 #if @GNULIB_WCSNRTOMBS@
 491 # if @REPLACE_WCSNRTOMBS@
 492 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 493 #   undef wcsnrtombs
 494 #   define wcsnrtombs rpl_wcsnrtombs
 495 #  endif
 496 _GL_FUNCDECL_RPL (wcsnrtombs, size_t,
 497                   (char *restrict dest,
 498                    const wchar_t **restrict srcp, size_t srclen,
 499                    size_t len,
 500                    mbstate_t *restrict ps)
 501                   _GL_ARG_NONNULL ((2)));
 502 _GL_CXXALIAS_RPL (wcsnrtombs, size_t,
 503                   (char *restrict dest,
 504                    const wchar_t **restrict srcp, size_t srclen,
 505                    size_t len,
 506                    mbstate_t *restrict ps));
 507 # else
 508 #  if !@HAVE_WCSNRTOMBS@ || (defined __cplusplus && defined __sun)
 509 _GL_FUNCDECL_SYS (wcsnrtombs, size_t,
 510                   (char *restrict dest,
 511                    const wchar_t **restrict srcp, size_t srclen,
 512                    size_t len,
 513                    mbstate_t *restrict ps)
 514                   _GL_ARG_NONNULL ((2)));
 515 #  endif
 516 _GL_CXXALIAS_SYS (wcsnrtombs, size_t,
 517                   (char *restrict dest,
 518                    const wchar_t **restrict srcp, size_t srclen,
 519                    size_t len,
 520                    mbstate_t *restrict ps));
 521 # endif
 522 # if __GLIBC__ >= 2
 523 _GL_CXXALIASWARN (wcsnrtombs);
 524 # endif
 525 #elif defined GNULIB_POSIXCHECK
 526 # undef wcsnrtombs
 527 # if HAVE_RAW_DECL_WCSNRTOMBS
 528 _GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - "
 529                  "use gnulib module wcsnrtombs for portability");
 530 # endif
 531 #endif
 532 
 533 
 534 /* Return the number of screen columns needed for WC.  */
 535 #if @GNULIB_WCWIDTH@
 536 # if @REPLACE_WCWIDTH@
 537 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 538 #   undef wcwidth
 539 #   define wcwidth rpl_wcwidth
 540 #  endif
 541 _GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
 542 _GL_CXXALIAS_RPL (wcwidth, int, (wchar_t));
 543 # else
 544 #  if !@HAVE_DECL_WCWIDTH@
 545 /* wcwidth exists but is not declared.  */
 546 _GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
 547 #  endif
 548 _GL_CXXALIAS_SYS (wcwidth, int, (wchar_t));
 549 # endif
 550 # if __GLIBC__ >= 2
 551 _GL_CXXALIASWARN (wcwidth);
 552 # endif
 553 #elif defined GNULIB_POSIXCHECK
 554 # undef wcwidth
 555 # if HAVE_RAW_DECL_WCWIDTH
 556 _GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - "
 557                  "use gnulib module wcwidth for portability");
 558 # endif
 559 #endif
 560 
 561 
 562 /* Search N wide characters of S for C.  */
 563 #if @GNULIB_WMEMCHR@
 564 # if !@HAVE_WMEMCHR@
 565 _GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n)
 566                                       _GL_ATTRIBUTE_PURE);
 567 # endif
 568   /* On some systems, this function is defined as an overloaded function:
 569        extern "C++" {
 570          const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t);
 571          wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t);
 572        }  */
 573 _GL_CXXALIAS_SYS_CAST2 (wmemchr,
 574                         wchar_t *, (const wchar_t *, wchar_t, size_t),
 575                         const wchar_t *, (const wchar_t *, wchar_t, size_t));
 576 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
 577      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
 578 _GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
 579 _GL_CXXALIASWARN1 (wmemchr, const wchar_t *,
 580                    (const wchar_t *s, wchar_t c, size_t n));
 581 # elif __GLIBC__ >= 2
 582 _GL_CXXALIASWARN (wmemchr);
 583 # endif
 584 #elif defined GNULIB_POSIXCHECK
 585 # undef wmemchr
 586 # if HAVE_RAW_DECL_WMEMCHR
 587 _GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - "
 588                  "use gnulib module wmemchr for portability");
 589 # endif
 590 #endif
 591 
 592 
 593 /* Compare N wide characters of S1 and S2.  */
 594 #if @GNULIB_WMEMCMP@
 595 # if !@HAVE_WMEMCMP@
 596 _GL_FUNCDECL_SYS (wmemcmp, int,
 597                   (const wchar_t *s1, const wchar_t *s2, size_t n)
 598                   _GL_ATTRIBUTE_PURE);
 599 # endif
 600 _GL_CXXALIAS_SYS (wmemcmp, int,
 601                   (const wchar_t *s1, const wchar_t *s2, size_t n));
 602 # if __GLIBC__ >= 2
 603 _GL_CXXALIASWARN (wmemcmp);
 604 # endif
 605 #elif defined GNULIB_POSIXCHECK
 606 # undef wmemcmp
 607 # if HAVE_RAW_DECL_WMEMCMP
 608 _GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - "
 609                  "use gnulib module wmemcmp for portability");
 610 # endif
 611 #endif
 612 
 613 
 614 /* Copy N wide characters of SRC to DEST.  */
 615 #if @GNULIB_WMEMCPY@
 616 # if !@HAVE_WMEMCPY@
 617 _GL_FUNCDECL_SYS (wmemcpy, wchar_t *,
 618                   (wchar_t *restrict dest,
 619                    const wchar_t *restrict src, size_t n));
 620 # endif
 621 _GL_CXXALIAS_SYS (wmemcpy, wchar_t *,
 622                   (wchar_t *restrict dest,
 623                    const wchar_t *restrict src, size_t n));
 624 # if __GLIBC__ >= 2
 625 _GL_CXXALIASWARN (wmemcpy);
 626 # endif
 627 #elif defined GNULIB_POSIXCHECK
 628 # undef wmemcpy
 629 # if HAVE_RAW_DECL_WMEMCPY
 630 _GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - "
 631                  "use gnulib module wmemcpy for portability");
 632 # endif
 633 #endif
 634 
 635 
 636 /* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for
 637    overlapping memory areas.  */
 638 #if @GNULIB_WMEMMOVE@
 639 # if !@HAVE_WMEMMOVE@
 640 _GL_FUNCDECL_SYS (wmemmove, wchar_t *,
 641                   (wchar_t *dest, const wchar_t *src, size_t n));
 642 # endif
 643 _GL_CXXALIAS_SYS (wmemmove, wchar_t *,
 644                   (wchar_t *dest, const wchar_t *src, size_t n));
 645 # if __GLIBC__ >= 2
 646 _GL_CXXALIASWARN (wmemmove);
 647 # endif
 648 #elif defined GNULIB_POSIXCHECK
 649 # undef wmemmove
 650 # if HAVE_RAW_DECL_WMEMMOVE
 651 _GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - "
 652                  "use gnulib module wmemmove for portability");
 653 # endif
 654 #endif
 655 
 656 
 657 /* Copy N wide characters of SRC to DEST.
 658    Return pointer to wide characters after the last written wide character.  */
 659 #if @GNULIB_WMEMPCPY@
 660 # if !@HAVE_WMEMPCPY@
 661 _GL_FUNCDECL_SYS (wmempcpy, wchar_t *,
 662                   (wchar_t *restrict dest,
 663                    const wchar_t *restrict src, size_t n));
 664 # endif
 665 _GL_CXXALIAS_SYS (wmempcpy, wchar_t *,
 666                   (wchar_t *restrict dest,
 667                    const wchar_t *restrict src, size_t n));
 668 # if __GLIBC__ >= 2
 669 _GL_CXXALIASWARN (wmempcpy);
 670 # endif
 671 #elif defined GNULIB_POSIXCHECK
 672 # undef wmempcpy
 673 # if HAVE_RAW_DECL_WMEMPCPY
 674 _GL_WARN_ON_USE (wmempcpy, "wmempcpy is unportable - "
 675                  "use gnulib module wmempcpy for portability");
 676 # endif
 677 #endif
 678 
 679 
 680 /* Set N wide characters of S to C.  */
 681 #if @GNULIB_WMEMSET@
 682 # if !@HAVE_WMEMSET@
 683 _GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
 684 # endif
 685 _GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
 686 # if __GLIBC__ >= 2
 687 _GL_CXXALIASWARN (wmemset);
 688 # endif
 689 #elif defined GNULIB_POSIXCHECK
 690 # undef wmemset
 691 # if HAVE_RAW_DECL_WMEMSET
 692 _GL_WARN_ON_USE (wmemset, "wmemset is unportable - "
 693                  "use gnulib module wmemset for portability");
 694 # endif
 695 #endif
 696 
 697 
 698 /* Return the number of wide characters in S.  */
 699 #if @GNULIB_WCSLEN@
 700 # if !@HAVE_WCSLEN@
 701 _GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE);
 702 # endif
 703 _GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s));
 704 # if __GLIBC__ >= 2
 705 _GL_CXXALIASWARN (wcslen);
 706 # endif
 707 #elif defined GNULIB_POSIXCHECK
 708 # undef wcslen
 709 # if HAVE_RAW_DECL_WCSLEN
 710 _GL_WARN_ON_USE (wcslen, "wcslen is unportable - "
 711                  "use gnulib module wcslen for portability");
 712 # endif
 713 #endif
 714 
 715 
 716 /* Return the number of wide characters in S, but at most MAXLEN.  */
 717 #if @GNULIB_WCSNLEN@
 718 # if !@HAVE_WCSNLEN@
 719 _GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)
 720                                    _GL_ATTRIBUTE_PURE);
 721 # endif
 722 _GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen));
 723 _GL_CXXALIASWARN (wcsnlen);
 724 #elif defined GNULIB_POSIXCHECK
 725 # undef wcsnlen
 726 # if HAVE_RAW_DECL_WCSNLEN
 727 _GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - "
 728                  "use gnulib module wcsnlen for portability");
 729 # endif
 730 #endif
 731 
 732 
 733 /* Copy SRC to DEST.  */
 734 #if @GNULIB_WCSCPY@
 735 # if !@HAVE_WCSCPY@
 736 _GL_FUNCDECL_SYS (wcscpy, wchar_t *,
 737                   (wchar_t *restrict dest, const wchar_t *restrict src));
 738 # endif
 739 _GL_CXXALIAS_SYS (wcscpy, wchar_t *,
 740                   (wchar_t *restrict dest, const wchar_t *restrict src));
 741 # if __GLIBC__ >= 2
 742 _GL_CXXALIASWARN (wcscpy);
 743 # endif
 744 #elif defined GNULIB_POSIXCHECK
 745 # undef wcscpy
 746 # if HAVE_RAW_DECL_WCSCPY
 747 _GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - "
 748                  "use gnulib module wcscpy for portability");
 749 # endif
 750 #endif
 751 
 752 
 753 /* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST.  */
 754 #if @GNULIB_WCPCPY@
 755 # if !@HAVE_WCPCPY@
 756 _GL_FUNCDECL_SYS (wcpcpy, wchar_t *,
 757                   (wchar_t *restrict dest, const wchar_t *restrict src));
 758 # endif
 759 _GL_CXXALIAS_SYS (wcpcpy, wchar_t *,
 760                   (wchar_t *restrict dest, const wchar_t *restrict src));
 761 _GL_CXXALIASWARN (wcpcpy);
 762 #elif defined GNULIB_POSIXCHECK
 763 # undef wcpcpy
 764 # if HAVE_RAW_DECL_WCPCPY
 765 _GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - "
 766                  "use gnulib module wcpcpy for portability");
 767 # endif
 768 #endif
 769 
 770 
 771 /* Copy no more than N wide characters of SRC to DEST.  */
 772 #if @GNULIB_WCSNCPY@
 773 # if !@HAVE_WCSNCPY@
 774 _GL_FUNCDECL_SYS (wcsncpy, wchar_t *,
 775                   (wchar_t *restrict dest,
 776                    const wchar_t *restrict src, size_t n));
 777 # endif
 778 _GL_CXXALIAS_SYS (wcsncpy, wchar_t *,
 779                   (wchar_t *restrict dest,
 780                    const wchar_t *restrict src, size_t n));
 781 # if __GLIBC__ >= 2
 782 _GL_CXXALIASWARN (wcsncpy);
 783 # endif
 784 #elif defined GNULIB_POSIXCHECK
 785 # undef wcsncpy
 786 # if HAVE_RAW_DECL_WCSNCPY
 787 _GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - "
 788                  "use gnulib module wcsncpy for portability");
 789 # endif
 790 #endif
 791 
 792 
 793 /* Copy no more than N characters of SRC to DEST, returning the address of
 794    the last character written into DEST.  */
 795 #if @GNULIB_WCPNCPY@
 796 # if !@HAVE_WCPNCPY@
 797 _GL_FUNCDECL_SYS (wcpncpy, wchar_t *,
 798                   (wchar_t *restrict dest,
 799                    const wchar_t *restrict src, size_t n));
 800 # endif
 801 _GL_CXXALIAS_SYS (wcpncpy, wchar_t *,
 802                   (wchar_t *restrict dest,
 803                    const wchar_t *restrict src, size_t n));
 804 _GL_CXXALIASWARN (wcpncpy);
 805 #elif defined GNULIB_POSIXCHECK
 806 # undef wcpncpy
 807 # if HAVE_RAW_DECL_WCPNCPY
 808 _GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - "
 809                  "use gnulib module wcpncpy for portability");
 810 # endif
 811 #endif
 812 
 813 
 814 /* Append SRC onto DEST.  */
 815 #if @GNULIB_WCSCAT@
 816 # if !@HAVE_WCSCAT@
 817 _GL_FUNCDECL_SYS (wcscat, wchar_t *,
 818                   (wchar_t *restrict dest, const wchar_t *restrict src));
 819 # endif
 820 _GL_CXXALIAS_SYS (wcscat, wchar_t *,
 821                   (wchar_t *restrict dest, const wchar_t *restrict src));
 822 # if __GLIBC__ >= 2
 823 _GL_CXXALIASWARN (wcscat);
 824 # endif
 825 #elif defined GNULIB_POSIXCHECK
 826 # undef wcscat
 827 # if HAVE_RAW_DECL_WCSCAT
 828 _GL_WARN_ON_USE (wcscat, "wcscat is unportable - "
 829                  "use gnulib module wcscat for portability");
 830 # endif
 831 #endif
 832 
 833 
 834 /* Append no more than N wide characters of SRC onto DEST.  */
 835 #if @GNULIB_WCSNCAT@
 836 # if !@HAVE_WCSNCAT@
 837 _GL_FUNCDECL_SYS (wcsncat, wchar_t *,
 838                   (wchar_t *restrict dest, const wchar_t *restrict src,
 839                    size_t n));
 840 # endif
 841 _GL_CXXALIAS_SYS (wcsncat, wchar_t *,
 842                   (wchar_t *restrict dest, const wchar_t *restrict src,
 843                    size_t n));
 844 # if __GLIBC__ >= 2
 845 _GL_CXXALIASWARN (wcsncat);
 846 # endif
 847 #elif defined GNULIB_POSIXCHECK
 848 # undef wcsncat
 849 # if HAVE_RAW_DECL_WCSNCAT
 850 _GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - "
 851                  "use gnulib module wcsncat for portability");
 852 # endif
 853 #endif
 854 
 855 
 856 /* Compare S1 and S2.  */
 857 #if @GNULIB_WCSCMP@
 858 # if !@HAVE_WCSCMP@
 859 _GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)
 860                                _GL_ATTRIBUTE_PURE);
 861 # endif
 862 _GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2));
 863 # if __GLIBC__ >= 2
 864 _GL_CXXALIASWARN (wcscmp);
 865 # endif
 866 #elif defined GNULIB_POSIXCHECK
 867 # undef wcscmp
 868 # if HAVE_RAW_DECL_WCSCMP
 869 _GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - "
 870                  "use gnulib module wcscmp for portability");
 871 # endif
 872 #endif
 873 
 874 
 875 /* Compare no more than N wide characters of S1 and S2.  */
 876 #if @GNULIB_WCSNCMP@
 877 # if !@HAVE_WCSNCMP@
 878 _GL_FUNCDECL_SYS (wcsncmp, int,
 879                   (const wchar_t *s1, const wchar_t *s2, size_t n)
 880                   _GL_ATTRIBUTE_PURE);
 881 # endif
 882 _GL_CXXALIAS_SYS (wcsncmp, int,
 883                   (const wchar_t *s1, const wchar_t *s2, size_t n));
 884 # if __GLIBC__ >= 2
 885 _GL_CXXALIASWARN (wcsncmp);
 886 # endif
 887 #elif defined GNULIB_POSIXCHECK
 888 # undef wcsncmp
 889 # if HAVE_RAW_DECL_WCSNCMP
 890 _GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - "
 891                  "use gnulib module wcsncmp for portability");
 892 # endif
 893 #endif
 894 
 895 
 896 /* Compare S1 and S2, ignoring case.  */
 897 #if @GNULIB_WCSCASECMP@
 898 # if !@HAVE_WCSCASECMP@
 899 _GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)
 900                                    _GL_ATTRIBUTE_PURE);
 901 # endif
 902 _GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2));
 903 _GL_CXXALIASWARN (wcscasecmp);
 904 #elif defined GNULIB_POSIXCHECK
 905 # undef wcscasecmp
 906 # if HAVE_RAW_DECL_WCSCASECMP
 907 _GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - "
 908                  "use gnulib module wcscasecmp for portability");
 909 # endif
 910 #endif
 911 
 912 
 913 /* Compare no more than N chars of S1 and S2, ignoring case.  */
 914 #if @GNULIB_WCSNCASECMP@
 915 # if !@HAVE_WCSNCASECMP@
 916 _GL_FUNCDECL_SYS (wcsncasecmp, int,
 917                   (const wchar_t *s1, const wchar_t *s2, size_t n)
 918                   _GL_ATTRIBUTE_PURE);
 919 # endif
 920 _GL_CXXALIAS_SYS (wcsncasecmp, int,
 921                   (const wchar_t *s1, const wchar_t *s2, size_t n));
 922 _GL_CXXALIASWARN (wcsncasecmp);
 923 #elif defined GNULIB_POSIXCHECK
 924 # undef wcsncasecmp
 925 # if HAVE_RAW_DECL_WCSNCASECMP
 926 _GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - "
 927                  "use gnulib module wcsncasecmp for portability");
 928 # endif
 929 #endif
 930 
 931 
 932 /* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE
 933    category of the current locale.  */
 934 #if @GNULIB_WCSCOLL@
 935 # if !@HAVE_WCSCOLL@
 936 _GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
 937 # endif
 938 _GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
 939 # if __GLIBC__ >= 2
 940 _GL_CXXALIASWARN (wcscoll);
 941 # endif
 942 #elif defined GNULIB_POSIXCHECK
 943 # undef wcscoll
 944 # if HAVE_RAW_DECL_WCSCOLL
 945 _GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - "
 946                  "use gnulib module wcscoll for portability");
 947 # endif
 948 #endif
 949 
 950 
 951 /* Transform S2 into array pointed to by S1 such that if wcscmp is applied
 952    to two transformed strings the result is the as applying 'wcscoll' to the
 953    original strings.  */
 954 #if @GNULIB_WCSXFRM@
 955 # if !@HAVE_WCSXFRM@
 956 _GL_FUNCDECL_SYS (wcsxfrm, size_t,
 957                   (wchar_t *restrict s1, const wchar_t *restrict s2, size_t n));
 958 # endif
 959 _GL_CXXALIAS_SYS (wcsxfrm, size_t,
 960                   (wchar_t *restrict s1, const wchar_t *restrict s2, size_t n));
 961 # if __GLIBC__ >= 2
 962 _GL_CXXALIASWARN (wcsxfrm);
 963 # endif
 964 #elif defined GNULIB_POSIXCHECK
 965 # undef wcsxfrm
 966 # if HAVE_RAW_DECL_WCSXFRM
 967 _GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - "
 968                  "use gnulib module wcsxfrm for portability");
 969 # endif
 970 #endif
 971 
 972 
 973 /* Duplicate S, returning an identical malloc'd string.  */
 974 #if @GNULIB_WCSDUP@
 975 # if defined _WIN32 && !defined __CYGWIN__
 976 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
 977 #   undef wcsdup
 978 #   define wcsdup _wcsdup
 979 #  endif
 980 _GL_CXXALIAS_MDA (wcsdup, wchar_t *, (const wchar_t *s));
 981 # else
 982 #  if !@HAVE_WCSDUP@ || __GNUC__ >= 11
 983 _GL_FUNCDECL_SYS (wcsdup, wchar_t *,
 984                   (const wchar_t *s)
 985                   _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE);
 986 #  endif
 987 _GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
 988 # endif
 989 _GL_CXXALIASWARN (wcsdup);
 990 #else
 991 # if __GNUC__ >= 11 && !defined wcsdup
 992 /* For -Wmismatched-dealloc: Associate wcsdup with free or rpl_free.  */
 993 _GL_FUNCDECL_SYS (wcsdup, wchar_t *,
 994                   (const wchar_t *s)
 995                   _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE);
 996 # endif
 997 # if defined GNULIB_POSIXCHECK
 998 #  undef wcsdup
 999 #  if HAVE_RAW_DECL_WCSDUP
1000 _GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - "
1001                  "use gnulib module wcsdup for portability");
1002 #  endif
1003 # elif @GNULIB_MDA_WCSDUP@
1004 /* On native Windows, map 'wcsdup' to '_wcsdup', so that -loldnames is not
1005    required.  In C++ with GNULIB_NAMESPACE, avoid differences between
1006    platforms by defining GNULIB_NAMESPACE::wcsdup always.  */
1007 #  if defined _WIN32 && !defined __CYGWIN__
1008 #   if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1009 #    undef wcsdup
1010 #    define wcsdup _wcsdup
1011 #   endif
1012 _GL_CXXALIAS_MDA (wcsdup, wchar_t *, (const wchar_t *s));
1013 #  else
1014 _GL_FUNCDECL_SYS (wcsdup, wchar_t *,
1015                   (const wchar_t *s)
1016                   _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_DEALLOC_FREE);
1017 #   if @HAVE_DECL_WCSDUP@
1018 _GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
1019 #   endif
1020 #  endif
1021 #  if (defined _WIN32 && !defined __CYGWIN__) || @HAVE_DECL_WCSDUP@
1022 _GL_CXXALIASWARN (wcsdup);
1023 #  endif
1024 # endif
1025 #endif
1026 
1027 
1028 /* Find the first occurrence of WC in WCS.  */
1029 #if @GNULIB_WCSCHR@
1030 # if !@HAVE_WCSCHR@
1031 _GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
1032                                      _GL_ATTRIBUTE_PURE);
1033 # endif
1034   /* On some systems, this function is defined as an overloaded function:
1035        extern "C++" {
1036          const wchar_t * std::wcschr (const wchar_t *, wchar_t);
1037          wchar_t * std::wcschr (wchar_t *, wchar_t);
1038        }  */
1039 _GL_CXXALIAS_SYS_CAST2 (wcschr,
1040                         wchar_t *, (const wchar_t *, wchar_t),
1041                         const wchar_t *, (const wchar_t *, wchar_t));
1042 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
1043      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
1044 _GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc));
1045 _GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
1046 # elif __GLIBC__ >= 2
1047 _GL_CXXALIASWARN (wcschr);
1048 # endif
1049 #elif defined GNULIB_POSIXCHECK
1050 # undef wcschr
1051 # if HAVE_RAW_DECL_WCSCHR
1052 _GL_WARN_ON_USE (wcschr, "wcschr is unportable - "
1053                  "use gnulib module wcschr for portability");
1054 # endif
1055 #endif
1056 
1057 
1058 /* Find the last occurrence of WC in WCS.  */
1059 #if @GNULIB_WCSRCHR@
1060 # if !@HAVE_WCSRCHR@
1061 _GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
1062                                       _GL_ATTRIBUTE_PURE);
1063 # endif
1064   /* On some systems, this function is defined as an overloaded function:
1065        extern "C++" {
1066          const wchar_t * std::wcsrchr (const wchar_t *, wchar_t);
1067          wchar_t * std::wcsrchr (wchar_t *, wchar_t);
1068        }  */
1069 _GL_CXXALIAS_SYS_CAST2 (wcsrchr,
1070                         wchar_t *, (const wchar_t *, wchar_t),
1071                         const wchar_t *, (const wchar_t *, wchar_t));
1072 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
1073      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
1074 _GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc));
1075 _GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
1076 # elif __GLIBC__ >= 2
1077 _GL_CXXALIASWARN (wcsrchr);
1078 # endif
1079 #elif defined GNULIB_POSIXCHECK
1080 # undef wcsrchr
1081 # if HAVE_RAW_DECL_WCSRCHR
1082 _GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - "
1083                  "use gnulib module wcsrchr for portability");
1084 # endif
1085 #endif
1086 
1087 
1088 /* Return the length of the initial segmet of WCS which consists entirely
1089    of wide characters not in REJECT.  */
1090 #if @GNULIB_WCSCSPN@
1091 # if !@HAVE_WCSCSPN@
1092 _GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)
1093                                    _GL_ATTRIBUTE_PURE);
1094 # endif
1095 _GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject));
1096 # if __GLIBC__ >= 2
1097 _GL_CXXALIASWARN (wcscspn);
1098 # endif
1099 #elif defined GNULIB_POSIXCHECK
1100 # undef wcscspn
1101 # if HAVE_RAW_DECL_WCSCSPN
1102 _GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - "
1103                  "use gnulib module wcscspn for portability");
1104 # endif
1105 #endif
1106 
1107 
1108 /* Return the length of the initial segmet of WCS which consists entirely
1109    of wide characters in ACCEPT.  */
1110 #if @GNULIB_WCSSPN@
1111 # if !@HAVE_WCSSPN@
1112 _GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)
1113                                   _GL_ATTRIBUTE_PURE);
1114 # endif
1115 _GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept));
1116 # if __GLIBC__ >= 2
1117 _GL_CXXALIASWARN (wcsspn);
1118 # endif
1119 #elif defined GNULIB_POSIXCHECK
1120 # undef wcsspn
1121 # if HAVE_RAW_DECL_WCSSPN
1122 _GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - "
1123                  "use gnulib module wcsspn for portability");
1124 # endif
1125 #endif
1126 
1127 
1128 /* Find the first occurrence in WCS of any character in ACCEPT.  */
1129 #if @GNULIB_WCSPBRK@
1130 # if !@HAVE_WCSPBRK@
1131 _GL_FUNCDECL_SYS (wcspbrk, wchar_t *,
1132                   (const wchar_t *wcs, const wchar_t *accept)
1133                   _GL_ATTRIBUTE_PURE);
1134 # endif
1135   /* On some systems, this function is defined as an overloaded function:
1136        extern "C++" {
1137          const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *);
1138          wchar_t * std::wcspbrk (wchar_t *, const wchar_t *);
1139        }  */
1140 _GL_CXXALIAS_SYS_CAST2 (wcspbrk,
1141                         wchar_t *, (const wchar_t *, const wchar_t *),
1142                         const wchar_t *, (const wchar_t *, const wchar_t *));
1143 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
1144      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
1145 _GL_CXXALIASWARN1 (wcspbrk, wchar_t *,
1146                    (wchar_t *wcs, const wchar_t *accept));
1147 _GL_CXXALIASWARN1 (wcspbrk, const wchar_t *,
1148                    (const wchar_t *wcs, const wchar_t *accept));
1149 # elif __GLIBC__ >= 2
1150 _GL_CXXALIASWARN (wcspbrk);
1151 # endif
1152 #elif defined GNULIB_POSIXCHECK
1153 # undef wcspbrk
1154 # if HAVE_RAW_DECL_WCSPBRK
1155 _GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - "
1156                  "use gnulib module wcspbrk for portability");
1157 # endif
1158 #endif
1159 
1160 
1161 /* Find the first occurrence of NEEDLE in HAYSTACK.  */
1162 #if @GNULIB_WCSSTR@
1163 # if !@HAVE_WCSSTR@
1164 _GL_FUNCDECL_SYS (wcsstr, wchar_t *,
1165                   (const wchar_t *restrict haystack,
1166                    const wchar_t *restrict needle)
1167                   _GL_ATTRIBUTE_PURE);
1168 # endif
1169   /* On some systems, this function is defined as an overloaded function:
1170        extern "C++" {
1171          const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *);
1172          wchar_t * std::wcsstr (wchar_t *, const wchar_t *);
1173        }  */
1174 _GL_CXXALIAS_SYS_CAST2 (wcsstr,
1175                         wchar_t *,
1176                         (const wchar_t *restrict, const wchar_t *restrict),
1177                         const wchar_t *,
1178                         (const wchar_t *restrict, const wchar_t *restrict));
1179 # if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
1180      && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
1181 _GL_CXXALIASWARN1 (wcsstr, wchar_t *,
1182                    (wchar_t *restrict haystack,
1183                     const wchar_t *restrict needle));
1184 _GL_CXXALIASWARN1 (wcsstr, const wchar_t *,
1185                    (const wchar_t *restrict haystack,
1186                     const wchar_t *restrict needle));
1187 # elif __GLIBC__ >= 2
1188 _GL_CXXALIASWARN (wcsstr);
1189 # endif
1190 #elif defined GNULIB_POSIXCHECK
1191 # undef wcsstr
1192 # if HAVE_RAW_DECL_WCSSTR
1193 _GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - "
1194                  "use gnulib module wcsstr for portability");
1195 # endif
1196 #endif
1197 
1198 
1199 /* Divide WCS into tokens separated by characters in DELIM.  */
1200 #if @GNULIB_WCSTOK@
1201 # if @REPLACE_WCSTOK@
1202 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1203 #   undef wcstok
1204 #   define wcstok rpl_wcstok
1205 #  endif
1206 _GL_FUNCDECL_RPL (wcstok, wchar_t *,
1207                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
1208                    wchar_t **restrict ptr));
1209 _GL_CXXALIAS_RPL (wcstok, wchar_t *,
1210                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
1211                    wchar_t **restrict ptr));
1212 # else
1213 #  if !@HAVE_WCSTOK@
1214 _GL_FUNCDECL_SYS (wcstok, wchar_t *,
1215                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
1216                    wchar_t **restrict ptr));
1217 #  endif
1218 _GL_CXXALIAS_SYS (wcstok, wchar_t *,
1219                   (wchar_t *restrict wcs, const wchar_t *restrict delim,
1220                    wchar_t **restrict ptr));
1221 # endif
1222 # if __GLIBC__ >= 2
1223 _GL_CXXALIASWARN (wcstok);
1224 # endif
1225 #elif defined GNULIB_POSIXCHECK
1226 # undef wcstok
1227 # if HAVE_RAW_DECL_WCSTOK
1228 _GL_WARN_ON_USE (wcstok, "wcstok is unportable - "
1229                  "use gnulib module wcstok for portability");
1230 # endif
1231 #endif
1232 
1233 
1234 /* Determine number of column positions required for first N wide
1235    characters (or fewer if S ends before this) in S.  */
1236 #if @GNULIB_WCSWIDTH@
1237 # if @REPLACE_WCSWIDTH@
1238 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1239 #   undef wcswidth
1240 #   define wcswidth rpl_wcswidth
1241 #  endif
1242 _GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n)
1243                                  _GL_ATTRIBUTE_PURE);
1244 _GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n));
1245 # else
1246 #  if !@HAVE_WCSWIDTH@
1247 _GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n)
1248                                  _GL_ATTRIBUTE_PURE);
1249 #  endif
1250 _GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n));
1251 # endif
1252 # if __GLIBC__ >= 2
1253 _GL_CXXALIASWARN (wcswidth);
1254 # endif
1255 #elif defined GNULIB_POSIXCHECK
1256 # undef wcswidth
1257 # if HAVE_RAW_DECL_WCSWIDTH
1258 _GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - "
1259                  "use gnulib module wcswidth for portability");
1260 # endif
1261 #endif
1262 
1263 
1264 /* Convert *TP to a date and time wide string.  See
1265    <https://pubs.opengroup.org/onlinepubs/9699919799/functions/wcsftime.html>.  */
1266 #if @GNULIB_WCSFTIME@
1267 # if @REPLACE_WCSFTIME@
1268 #  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1269 #   undef wcsftime
1270 #   define wcsftime rpl_wcsftime
1271 #  endif
1272 _GL_FUNCDECL_RPL (wcsftime, size_t,
1273                   (wchar_t *restrict __buf, size_t __bufsize,
1274                    const wchar_t *restrict __fmt,
1275                    const struct tm *restrict __tp)
1276                   _GL_ARG_NONNULL ((1, 3, 4)));
1277 _GL_CXXALIAS_RPL (wcsftime, size_t,
1278                   (wchar_t *restrict __buf, size_t __bufsize,
1279                    const wchar_t *restrict __fmt,
1280                    const struct tm *restrict __tp));
1281 # else
1282 #  if !@HAVE_WCSFTIME@
1283 _GL_FUNCDECL_SYS (wcsftime, size_t,
1284                   (wchar_t *restrict __buf, size_t __bufsize,
1285                    const wchar_t *restrict __fmt,
1286                    const struct tm *restrict __tp)
1287                   _GL_ARG_NONNULL ((1, 3, 4)));
1288 #  endif
1289 _GL_CXXALIAS_SYS (wcsftime, size_t,
1290                   (wchar_t *restrict __buf, size_t __bufsize,
1291                    const wchar_t *restrict __fmt,
1292                    const struct tm *restrict __tp));
1293 # endif
1294 # if __GLIBC__ >= 2
1295 _GL_CXXALIASWARN (wcsftime);
1296 # endif
1297 #elif defined GNULIB_POSIXCHECK
1298 # undef wcsftime
1299 # if HAVE_RAW_DECL_WCSFTIME
1300 _GL_WARN_ON_USE (wcsftime, "wcsftime is unportable - "
1301                  "use gnulib module wcsftime for portability");
1302 # endif
1303 #endif
1304 
1305 
1306 #endif /* _@GUARD_PREFIX@_WCHAR_H */
1307 #endif /* _@GUARD_PREFIX@_WCHAR_H */
1308 #endif

/* [previous][next][first][last][top][bottom][index][help] */