Provide glthread/lock.h implementation in terms of Guile threads.
[bpt/guile.git] / lib / wchar.in.h
CommitLineData
e65fc94b
LC
1/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
2
5e69ceb7 3 Copyright (C) 2007-2014 Free Software Foundation, Inc.
e65fc94b
LC
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation; either version 2, or (at your option)
8 any later version.
9
10 This program 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
005de2e8 16 along with this program; if not, see <http://www.gnu.org/licenses/>. */
e65fc94b
LC
17
18/* Written by Eric Blake. */
19
20/*
21 * ISO C 99 <wchar.h> for platforms that have issues.
22 * <http://www.opengroup.org/susv3xbd/wchar.h.html>
23 *
24 * For now, this just ensures proper prerequisite inclusion order and
25 * the declaration of wcwidth().
26 */
27
aa7a939c 28#if __GNUC__ >= 3
e65fc94b 29@PRAGMA_SYSTEM_HEADER@
aa7a939c 30#endif
0f00f2c3 31@PRAGMA_COLUMNS@
e65fc94b 32
61cd9dc9 33#if defined __need_mbstate_t || defined __need_wint_t || (defined __hpux && ((defined _INTTYPES_INCLUDED && !defined strtoimax) || defined _GL_JUST_INCLUDE_SYSTEM_WCHAR_H)) || defined _GL_ALREADY_INCLUDING_WCHAR_H
f240aacb 34/* Special invocation convention:
61cd9dc9 35 - Inside glibc and uClibc header files.
f240aacb
LC
36 - On HP-UX 11.00 we have a sequence of nested includes
37 <wchar.h> -> <stdlib.h> -> <stdint.h>, and the latter includes <wchar.h>,
38 once indirectly <stdint.h> -> <sys/types.h> -> <inttypes.h> -> <wchar.h>
39 and once directly. In both situations 'wint_t' is not yet defined,
40 therefore we cannot provide the function overrides; instead include only
41 the system's <wchar.h>.
42 - On IRIX 6.5, similarly, we have an include <wchar.h> -> <wctype.h>, and
43 the latter includes <wchar.h>. But here, we have no way to detect whether
44 <wctype.h> is completely included or is still being included. */
e65fc94b
LC
45
46#@INCLUDE_NEXT@ @NEXT_WCHAR_H@
47
48#else
49/* Normal invocation convention. */
50
3d458a81 51#ifndef _@GUARD_PREFIX@_WCHAR_H
e65fc94b 52
f240aacb
LC
53#define _GL_ALREADY_INCLUDING_WCHAR_H
54
0f00f2c3
LC
55#if @HAVE_FEATURES_H@
56# include <features.h> /* for __GLIBC__ */
57#endif
58
e65fc94b
LC
59/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
60 <wchar.h>.
61 BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
61cd9dc9 62 included before <wchar.h>.
dd7d0148
LC
63 In some builds of uClibc, <wchar.h> is nonexistent and wchar_t is defined
64 by <stddef.h>.
61cd9dc9 65 But avoid namespace pollution on glibc systems. */
dd7d0148 66#if !(defined __GLIBC__ && !defined __UCLIBC__)
61cd9dc9 67# include <stddef.h>
dd7d0148
LC
68#endif
69#ifndef __GLIBC__
61cd9dc9
LC
70# include <stdio.h>
71# include <time.h>
72#endif
e65fc94b
LC
73
74/* Include the original <wchar.h> if it exists.
75 Some builds of uClibc lack it. */
76/* The include_next requires a split double-inclusion guard. */
77#if @HAVE_WCHAR_H@
78# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
79#endif
80
f240aacb
LC
81#undef _GL_ALREADY_INCLUDING_WCHAR_H
82
3d458a81
AW
83#ifndef _@GUARD_PREFIX@_WCHAR_H
84#define _@GUARD_PREFIX@_WCHAR_H
e65fc94b 85
005de2e8
LC
86/* The __attribute__ feature is available in gcc versions 2.5 and later.
87 The attribute __pure__ was added in gcc 2.96. */
88#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
89# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
90#else
91# define _GL_ATTRIBUTE_PURE /* empty */
92#endif
93
f4c79b3c
LC
94/* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */
95
1cd4fffc
LC
96/* The definition of _GL_ARG_NONNULL is copied here. */
97
61cd9dc9
LC
98/* The definition of _GL_WARN_ON_USE is copied here. */
99
e65fc94b 100
a927b6c1 101/* Define wint_t and WEOF. (Also done in wctype.in.h.) */
aa7a939c
LC
102#if !@HAVE_WINT_T@ && !defined wint_t
103# define wint_t int
4a462e35
NJ
104# ifndef WEOF
105# define WEOF -1
106# endif
a927b6c1 107#else
35428fb6
LC
108/* MSVC defines wint_t as 'unsigned short' in <crtdefs.h>.
109 This is too small: ISO C 99 section 7.24.1.(2) says that wint_t must be
110 "unchanged by default argument promotions". Override it. */
111# if defined _MSC_VER
112# if !GNULIB_defined_wint_t
113# include <crtdefs.h>
114typedef unsigned int rpl_wint_t;
115# undef wint_t
116# define wint_t rpl_wint_t
117# define GNULIB_defined_wint_t 1
118# endif
119# endif
a927b6c1
LC
120# ifndef WEOF
121# define WEOF ((wint_t) -1)
122# endif
4a462e35
NJ
123#endif
124
125
126/* Override mbstate_t if it is too small.
127 On IRIX 6.5, sizeof (mbstate_t) == 1, which is not sufficient for
128 implementing mbrtowc for encodings like UTF-8. */
129#if !(@HAVE_MBSINIT@ && @HAVE_MBRTOWC@) || @REPLACE_MBSTATE_T@
49114fd4 130# if !GNULIB_defined_mbstate_t
4a462e35 131typedef int rpl_mbstate_t;
49114fd4
LC
132# undef mbstate_t
133# define mbstate_t rpl_mbstate_t
134# define GNULIB_defined_mbstate_t 1
135# endif
4a462e35
NJ
136#endif
137
138
139/* Convert a single-byte character to a wide character. */
140#if @GNULIB_BTOWC@
141# if @REPLACE_BTOWC@
f4c79b3c
LC
142# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
143# undef btowc
144# define btowc rpl_btowc
145# endif
005de2e8 146_GL_FUNCDECL_RPL (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
f4c79b3c
LC
147_GL_CXXALIAS_RPL (btowc, wint_t, (int c));
148# else
149# if !@HAVE_BTOWC@
005de2e8 150_GL_FUNCDECL_SYS (btowc, wint_t, (int c) _GL_ATTRIBUTE_PURE);
f4c79b3c
LC
151# endif
152_GL_CXXALIAS_SYS (btowc, wint_t, (int c));
4a462e35 153# endif
f4c79b3c 154_GL_CXXALIASWARN (btowc);
4a462e35
NJ
155#elif defined GNULIB_POSIXCHECK
156# undef btowc
61cd9dc9
LC
157# if HAVE_RAW_DECL_BTOWC
158_GL_WARN_ON_USE (btowc, "btowc is unportable - "
159 "use gnulib module btowc for portability");
160# endif
4a462e35
NJ
161#endif
162
163
164/* Convert a wide character to a single-byte character. */
165#if @GNULIB_WCTOB@
166# if @REPLACE_WCTOB@
f4c79b3c
LC
167# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
168# undef wctob
169# define wctob rpl_wctob
170# endif
005de2e8 171_GL_FUNCDECL_RPL (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
f4c79b3c
LC
172_GL_CXXALIAS_RPL (wctob, int, (wint_t wc));
173# else
174# if !defined wctob && !@HAVE_DECL_WCTOB@
4a462e35 175/* wctob is provided by gnulib, or wctob exists but is not declared. */
005de2e8 176_GL_FUNCDECL_SYS (wctob, int, (wint_t wc) _GL_ATTRIBUTE_PURE);
f4c79b3c
LC
177# endif
178_GL_CXXALIAS_SYS (wctob, int, (wint_t wc));
4a462e35 179# endif
f4c79b3c 180_GL_CXXALIASWARN (wctob);
4a462e35
NJ
181#elif defined GNULIB_POSIXCHECK
182# undef wctob
61cd9dc9
LC
183# if HAVE_RAW_DECL_WCTOB
184_GL_WARN_ON_USE (wctob, "wctob is unportable - "
185 "use gnulib module wctob for portability");
186# endif
4a462e35
NJ
187#endif
188
189
190/* Test whether *PS is in the initial state. */
191#if @GNULIB_MBSINIT@
192# if @REPLACE_MBSINIT@
f4c79b3c
LC
193# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
194# undef mbsinit
195# define mbsinit rpl_mbsinit
196# endif
197_GL_FUNCDECL_RPL (mbsinit, int, (const mbstate_t *ps));
198_GL_CXXALIAS_RPL (mbsinit, int, (const mbstate_t *ps));
199# else
200# if !@HAVE_MBSINIT@
201_GL_FUNCDECL_SYS (mbsinit, int, (const mbstate_t *ps));
202# endif
203_GL_CXXALIAS_SYS (mbsinit, int, (const mbstate_t *ps));
4a462e35 204# endif
f4c79b3c 205_GL_CXXALIASWARN (mbsinit);
4a462e35
NJ
206#elif defined GNULIB_POSIXCHECK
207# undef mbsinit
61cd9dc9
LC
208# if HAVE_RAW_DECL_MBSINIT
209_GL_WARN_ON_USE (mbsinit, "mbsinit is unportable - "
210 "use gnulib module mbsinit for portability");
211# endif
4a462e35
NJ
212#endif
213
214
215/* Convert a multibyte character to a wide character. */
216#if @GNULIB_MBRTOWC@
217# if @REPLACE_MBRTOWC@
f4c79b3c
LC
218# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
219# undef mbrtowc
220# define mbrtowc rpl_mbrtowc
221# endif
222_GL_FUNCDECL_RPL (mbrtowc, size_t,
223 (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
224_GL_CXXALIAS_RPL (mbrtowc, size_t,
225 (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
226# else
227# if !@HAVE_MBRTOWC@
228_GL_FUNCDECL_SYS (mbrtowc, size_t,
229 (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
230# endif
231_GL_CXXALIAS_SYS (mbrtowc, size_t,
232 (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps));
4a462e35 233# endif
f4c79b3c 234_GL_CXXALIASWARN (mbrtowc);
4a462e35
NJ
235#elif defined GNULIB_POSIXCHECK
236# undef mbrtowc
61cd9dc9
LC
237# if HAVE_RAW_DECL_MBRTOWC
238_GL_WARN_ON_USE (mbrtowc, "mbrtowc is unportable - "
239 "use gnulib module mbrtowc for portability");
240# endif
4a462e35
NJ
241#endif
242
243
244/* Recognize a multibyte character. */
245#if @GNULIB_MBRLEN@
246# if @REPLACE_MBRLEN@
f4c79b3c
LC
247# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
248# undef mbrlen
249# define mbrlen rpl_mbrlen
250# endif
251_GL_FUNCDECL_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
252_GL_CXXALIAS_RPL (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
253# else
254# if !@HAVE_MBRLEN@
255_GL_FUNCDECL_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
256# endif
257_GL_CXXALIAS_SYS (mbrlen, size_t, (const char *s, size_t n, mbstate_t *ps));
4a462e35 258# endif
f4c79b3c 259_GL_CXXALIASWARN (mbrlen);
4a462e35
NJ
260#elif defined GNULIB_POSIXCHECK
261# undef mbrlen
61cd9dc9
LC
262# if HAVE_RAW_DECL_MBRLEN
263_GL_WARN_ON_USE (mbrlen, "mbrlen is unportable - "
264 "use gnulib module mbrlen for portability");
265# endif
4a462e35
NJ
266#endif
267
268
269/* Convert a string to a wide string. */
270#if @GNULIB_MBSRTOWCS@
271# if @REPLACE_MBSRTOWCS@
f4c79b3c
LC
272# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
273# undef mbsrtowcs
274# define mbsrtowcs rpl_mbsrtowcs
275# endif
276_GL_FUNCDECL_RPL (mbsrtowcs, size_t,
277 (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
278 _GL_ARG_NONNULL ((2)));
279_GL_CXXALIAS_RPL (mbsrtowcs, size_t,
280 (wchar_t *dest, const char **srcp, size_t len,
281 mbstate_t *ps));
282# else
283# if !@HAVE_MBSRTOWCS@
284_GL_FUNCDECL_SYS (mbsrtowcs, size_t,
285 (wchar_t *dest, const char **srcp, size_t len, mbstate_t *ps)
286 _GL_ARG_NONNULL ((2)));
287# endif
288_GL_CXXALIAS_SYS (mbsrtowcs, size_t,
289 (wchar_t *dest, const char **srcp, size_t len,
290 mbstate_t *ps));
4a462e35 291# endif
f4c79b3c 292_GL_CXXALIASWARN (mbsrtowcs);
4a462e35
NJ
293#elif defined GNULIB_POSIXCHECK
294# undef mbsrtowcs
61cd9dc9
LC
295# if HAVE_RAW_DECL_MBSRTOWCS
296_GL_WARN_ON_USE (mbsrtowcs, "mbsrtowcs is unportable - "
297 "use gnulib module mbsrtowcs for portability");
298# endif
4a462e35
NJ
299#endif
300
301
302/* Convert a string to a wide string. */
303#if @GNULIB_MBSNRTOWCS@
304# if @REPLACE_MBSNRTOWCS@
f4c79b3c
LC
305# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
306# undef mbsnrtowcs
307# define mbsnrtowcs rpl_mbsnrtowcs
308# endif
309_GL_FUNCDECL_RPL (mbsnrtowcs, size_t,
310 (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
311 mbstate_t *ps)
312 _GL_ARG_NONNULL ((2)));
313_GL_CXXALIAS_RPL (mbsnrtowcs, size_t,
314 (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
315 mbstate_t *ps));
316# else
317# if !@HAVE_MBSNRTOWCS@
318_GL_FUNCDECL_SYS (mbsnrtowcs, size_t,
319 (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
320 mbstate_t *ps)
321 _GL_ARG_NONNULL ((2)));
322# endif
323_GL_CXXALIAS_SYS (mbsnrtowcs, size_t,
324 (wchar_t *dest, const char **srcp, size_t srclen, size_t len,
325 mbstate_t *ps));
4a462e35 326# endif
f4c79b3c 327_GL_CXXALIASWARN (mbsnrtowcs);
4a462e35
NJ
328#elif defined GNULIB_POSIXCHECK
329# undef mbsnrtowcs
61cd9dc9
LC
330# if HAVE_RAW_DECL_MBSNRTOWCS
331_GL_WARN_ON_USE (mbsnrtowcs, "mbsnrtowcs is unportable - "
332 "use gnulib module mbsnrtowcs for portability");
333# endif
4a462e35
NJ
334#endif
335
336
337/* Convert a wide character to a multibyte character. */
338#if @GNULIB_WCRTOMB@
339# if @REPLACE_WCRTOMB@
f4c79b3c
LC
340# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
341# undef wcrtomb
342# define wcrtomb rpl_wcrtomb
343# endif
344_GL_FUNCDECL_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
345_GL_CXXALIAS_RPL (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
346# else
347# if !@HAVE_WCRTOMB@
348_GL_FUNCDECL_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
349# endif
350_GL_CXXALIAS_SYS (wcrtomb, size_t, (char *s, wchar_t wc, mbstate_t *ps));
4a462e35 351# endif
f4c79b3c 352_GL_CXXALIASWARN (wcrtomb);
4a462e35
NJ
353#elif defined GNULIB_POSIXCHECK
354# undef wcrtomb
61cd9dc9
LC
355# if HAVE_RAW_DECL_WCRTOMB
356_GL_WARN_ON_USE (wcrtomb, "wcrtomb is unportable - "
357 "use gnulib module wcrtomb for portability");
358# endif
4a462e35
NJ
359#endif
360
361
362/* Convert a wide string to a string. */
363#if @GNULIB_WCSRTOMBS@
364# if @REPLACE_WCSRTOMBS@
f4c79b3c
LC
365# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
366# undef wcsrtombs
367# define wcsrtombs rpl_wcsrtombs
368# endif
369_GL_FUNCDECL_RPL (wcsrtombs, size_t,
370 (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
371 _GL_ARG_NONNULL ((2)));
372_GL_CXXALIAS_RPL (wcsrtombs, size_t,
373 (char *dest, const wchar_t **srcp, size_t len,
374 mbstate_t *ps));
375# else
376# if !@HAVE_WCSRTOMBS@
377_GL_FUNCDECL_SYS (wcsrtombs, size_t,
378 (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
379 _GL_ARG_NONNULL ((2)));
380# endif
381_GL_CXXALIAS_SYS (wcsrtombs, size_t,
382 (char *dest, const wchar_t **srcp, size_t len,
383 mbstate_t *ps));
4a462e35 384# endif
f4c79b3c 385_GL_CXXALIASWARN (wcsrtombs);
4a462e35
NJ
386#elif defined GNULIB_POSIXCHECK
387# undef wcsrtombs
61cd9dc9
LC
388# if HAVE_RAW_DECL_WCSRTOMBS
389_GL_WARN_ON_USE (wcsrtombs, "wcsrtombs is unportable - "
390 "use gnulib module wcsrtombs for portability");
391# endif
4a462e35
NJ
392#endif
393
394
395/* Convert a wide string to a string. */
396#if @GNULIB_WCSNRTOMBS@
f240aacb 397# if @REPLACE_WCSNRTOMBS@
f4c79b3c
LC
398# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
399# undef wcsnrtombs
400# define wcsnrtombs rpl_wcsnrtombs
401# endif
402_GL_FUNCDECL_RPL (wcsnrtombs, size_t,
403 (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
404 mbstate_t *ps)
405 _GL_ARG_NONNULL ((2)));
406_GL_CXXALIAS_RPL (wcsnrtombs, size_t,
407 (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
408 mbstate_t *ps));
409# else
410# if !@HAVE_WCSNRTOMBS@
411_GL_FUNCDECL_SYS (wcsnrtombs, size_t,
412 (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
413 mbstate_t *ps)
414 _GL_ARG_NONNULL ((2)));
415# endif
416_GL_CXXALIAS_SYS (wcsnrtombs, size_t,
417 (char *dest, const wchar_t **srcp, size_t srclen, size_t len,
418 mbstate_t *ps));
4a462e35 419# endif
f4c79b3c 420_GL_CXXALIASWARN (wcsnrtombs);
4a462e35
NJ
421#elif defined GNULIB_POSIXCHECK
422# undef wcsnrtombs
61cd9dc9
LC
423# if HAVE_RAW_DECL_WCSNRTOMBS
424_GL_WARN_ON_USE (wcsnrtombs, "wcsnrtombs is unportable - "
425 "use gnulib module wcsnrtombs for portability");
426# endif
aa7a939c
LC
427#endif
428
429
e65fc94b
LC
430/* Return the number of screen columns needed for WC. */
431#if @GNULIB_WCWIDTH@
432# if @REPLACE_WCWIDTH@
f4c79b3c
LC
433# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
434# undef wcwidth
435# define wcwidth rpl_wcwidth
436# endif
005de2e8 437_GL_FUNCDECL_RPL (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
f4c79b3c 438_GL_CXXALIAS_RPL (wcwidth, int, (wchar_t));
e65fc94b 439# else
a927b6c1 440# if !@HAVE_DECL_WCWIDTH@
e65fc94b 441/* wcwidth exists but is not declared. */
005de2e8 442_GL_FUNCDECL_SYS (wcwidth, int, (wchar_t) _GL_ATTRIBUTE_PURE);
e65fc94b 443# endif
f4c79b3c 444_GL_CXXALIAS_SYS (wcwidth, int, (wchar_t));
e65fc94b 445# endif
f4c79b3c 446_GL_CXXALIASWARN (wcwidth);
e65fc94b
LC
447#elif defined GNULIB_POSIXCHECK
448# undef wcwidth
61cd9dc9
LC
449# if HAVE_RAW_DECL_WCWIDTH
450_GL_WARN_ON_USE (wcwidth, "wcwidth is unportable - "
451 "use gnulib module wcwidth for portability");
452# endif
e65fc94b
LC
453#endif
454
455
49114fd4
LC
456/* Search N wide characters of S for C. */
457#if @GNULIB_WMEMCHR@
458# if !@HAVE_WMEMCHR@
005de2e8
LC
459_GL_FUNCDECL_SYS (wmemchr, wchar_t *, (const wchar_t *s, wchar_t c, size_t n)
460 _GL_ATTRIBUTE_PURE);
49114fd4 461# endif
dd7d0148
LC
462 /* On some systems, this function is defined as an overloaded function:
463 extern "C++" {
464 const wchar_t * std::wmemchr (const wchar_t *, wchar_t, size_t);
465 wchar_t * std::wmemchr (wchar_t *, wchar_t, size_t);
466 } */
467_GL_CXXALIAS_SYS_CAST2 (wmemchr,
468 wchar_t *, (const wchar_t *, wchar_t, size_t),
469 const wchar_t *, (const wchar_t *, wchar_t, size_t));
470# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
471 && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
472_GL_CXXALIASWARN1 (wmemchr, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
473_GL_CXXALIASWARN1 (wmemchr, const wchar_t *,
474 (const wchar_t *s, wchar_t c, size_t n));
475# else
49114fd4 476_GL_CXXALIASWARN (wmemchr);
dd7d0148 477# endif
49114fd4
LC
478#elif defined GNULIB_POSIXCHECK
479# undef wmemchr
480# if HAVE_RAW_DECL_WMEMCHR
481_GL_WARN_ON_USE (wmemchr, "wmemchr is unportable - "
482 "use gnulib module wmemchr for portability");
483# endif
484#endif
485
486
487/* Compare N wide characters of S1 and S2. */
488#if @GNULIB_WMEMCMP@
489# if !@HAVE_WMEMCMP@
490_GL_FUNCDECL_SYS (wmemcmp, int,
005de2e8
LC
491 (const wchar_t *s1, const wchar_t *s2, size_t n)
492 _GL_ATTRIBUTE_PURE);
49114fd4
LC
493# endif
494_GL_CXXALIAS_SYS (wmemcmp, int,
495 (const wchar_t *s1, const wchar_t *s2, size_t n));
496_GL_CXXALIASWARN (wmemcmp);
497#elif defined GNULIB_POSIXCHECK
498# undef wmemcmp
499# if HAVE_RAW_DECL_WMEMCMP
500_GL_WARN_ON_USE (wmemcmp, "wmemcmp is unportable - "
501 "use gnulib module wmemcmp for portability");
502# endif
503#endif
504
505
506/* Copy N wide characters of SRC to DEST. */
507#if @GNULIB_WMEMCPY@
508# if !@HAVE_WMEMCPY@
509_GL_FUNCDECL_SYS (wmemcpy, wchar_t *,
510 (wchar_t *dest, const wchar_t *src, size_t n));
511# endif
512_GL_CXXALIAS_SYS (wmemcpy, wchar_t *,
513 (wchar_t *dest, const wchar_t *src, size_t n));
514_GL_CXXALIASWARN (wmemcpy);
515#elif defined GNULIB_POSIXCHECK
516# undef wmemcpy
517# if HAVE_RAW_DECL_WMEMCPY
518_GL_WARN_ON_USE (wmemcpy, "wmemcpy is unportable - "
519 "use gnulib module wmemcpy for portability");
520# endif
521#endif
522
523
524/* Copy N wide characters of SRC to DEST, guaranteeing correct behavior for
525 overlapping memory areas. */
526#if @GNULIB_WMEMMOVE@
527# if !@HAVE_WMEMMOVE@
528_GL_FUNCDECL_SYS (wmemmove, wchar_t *,
529 (wchar_t *dest, const wchar_t *src, size_t n));
530# endif
531_GL_CXXALIAS_SYS (wmemmove, wchar_t *,
532 (wchar_t *dest, const wchar_t *src, size_t n));
533_GL_CXXALIASWARN (wmemmove);
534#elif defined GNULIB_POSIXCHECK
535# undef wmemmove
536# if HAVE_RAW_DECL_WMEMMOVE
537_GL_WARN_ON_USE (wmemmove, "wmemmove is unportable - "
538 "use gnulib module wmemmove for portability");
539# endif
540#endif
541
542
543/* Set N wide characters of S to C. */
544#if @GNULIB_WMEMSET@
545# if !@HAVE_WMEMSET@
546_GL_FUNCDECL_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
547# endif
548_GL_CXXALIAS_SYS (wmemset, wchar_t *, (wchar_t *s, wchar_t c, size_t n));
549_GL_CXXALIASWARN (wmemset);
550#elif defined GNULIB_POSIXCHECK
551# undef wmemset
552# if HAVE_RAW_DECL_WMEMSET
553_GL_WARN_ON_USE (wmemset, "wmemset is unportable - "
554 "use gnulib module wmemset for portability");
555# endif
556#endif
557
558
559/* Return the number of wide characters in S. */
560#if @GNULIB_WCSLEN@
561# if !@HAVE_WCSLEN@
005de2e8 562_GL_FUNCDECL_SYS (wcslen, size_t, (const wchar_t *s) _GL_ATTRIBUTE_PURE);
49114fd4
LC
563# endif
564_GL_CXXALIAS_SYS (wcslen, size_t, (const wchar_t *s));
565_GL_CXXALIASWARN (wcslen);
566#elif defined GNULIB_POSIXCHECK
567# undef wcslen
568# if HAVE_RAW_DECL_WCSLEN
569_GL_WARN_ON_USE (wcslen, "wcslen is unportable - "
570 "use gnulib module wcslen for portability");
571# endif
572#endif
573
574
575/* Return the number of wide characters in S, but at most MAXLEN. */
576#if @GNULIB_WCSNLEN@
577# if !@HAVE_WCSNLEN@
005de2e8
LC
578_GL_FUNCDECL_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen)
579 _GL_ATTRIBUTE_PURE);
49114fd4
LC
580# endif
581_GL_CXXALIAS_SYS (wcsnlen, size_t, (const wchar_t *s, size_t maxlen));
582_GL_CXXALIASWARN (wcsnlen);
583#elif defined GNULIB_POSIXCHECK
584# undef wcsnlen
585# if HAVE_RAW_DECL_WCSNLEN
586_GL_WARN_ON_USE (wcsnlen, "wcsnlen is unportable - "
587 "use gnulib module wcsnlen for portability");
588# endif
589#endif
590
591
592/* Copy SRC to DEST. */
593#if @GNULIB_WCSCPY@
594# if !@HAVE_WCSCPY@
595_GL_FUNCDECL_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
596# endif
597_GL_CXXALIAS_SYS (wcscpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
598_GL_CXXALIASWARN (wcscpy);
599#elif defined GNULIB_POSIXCHECK
600# undef wcscpy
601# if HAVE_RAW_DECL_WCSCPY
602_GL_WARN_ON_USE (wcscpy, "wcscpy is unportable - "
603 "use gnulib module wcscpy for portability");
604# endif
605#endif
606
607
608/* Copy SRC to DEST, returning the address of the terminating L'\0' in DEST. */
609#if @GNULIB_WCPCPY@
610# if !@HAVE_WCPCPY@
611_GL_FUNCDECL_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
612# endif
613_GL_CXXALIAS_SYS (wcpcpy, wchar_t *, (wchar_t *dest, const wchar_t *src));
614_GL_CXXALIASWARN (wcpcpy);
615#elif defined GNULIB_POSIXCHECK
616# undef wcpcpy
617# if HAVE_RAW_DECL_WCPCPY
618_GL_WARN_ON_USE (wcpcpy, "wcpcpy is unportable - "
619 "use gnulib module wcpcpy for portability");
620# endif
621#endif
622
623
624/* Copy no more than N wide characters of SRC to DEST. */
625#if @GNULIB_WCSNCPY@
626# if !@HAVE_WCSNCPY@
627_GL_FUNCDECL_SYS (wcsncpy, wchar_t *,
628 (wchar_t *dest, const wchar_t *src, size_t n));
629# endif
630_GL_CXXALIAS_SYS (wcsncpy, wchar_t *,
631 (wchar_t *dest, const wchar_t *src, size_t n));
632_GL_CXXALIASWARN (wcsncpy);
633#elif defined GNULIB_POSIXCHECK
634# undef wcsncpy
635# if HAVE_RAW_DECL_WCSNCPY
636_GL_WARN_ON_USE (wcsncpy, "wcsncpy is unportable - "
637 "use gnulib module wcsncpy for portability");
638# endif
639#endif
640
641
642/* Copy no more than N characters of SRC to DEST, returning the address of
643 the last character written into DEST. */
644#if @GNULIB_WCPNCPY@
645# if !@HAVE_WCPNCPY@
646_GL_FUNCDECL_SYS (wcpncpy, wchar_t *,
647 (wchar_t *dest, const wchar_t *src, size_t n));
648# endif
649_GL_CXXALIAS_SYS (wcpncpy, wchar_t *,
650 (wchar_t *dest, const wchar_t *src, size_t n));
651_GL_CXXALIASWARN (wcpncpy);
652#elif defined GNULIB_POSIXCHECK
653# undef wcpncpy
654# if HAVE_RAW_DECL_WCPNCPY
655_GL_WARN_ON_USE (wcpncpy, "wcpncpy is unportable - "
656 "use gnulib module wcpncpy for portability");
657# endif
658#endif
659
660
661/* Append SRC onto DEST. */
662#if @GNULIB_WCSCAT@
663# if !@HAVE_WCSCAT@
664_GL_FUNCDECL_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
665# endif
666_GL_CXXALIAS_SYS (wcscat, wchar_t *, (wchar_t *dest, const wchar_t *src));
667_GL_CXXALIASWARN (wcscat);
668#elif defined GNULIB_POSIXCHECK
669# undef wcscat
670# if HAVE_RAW_DECL_WCSCAT
671_GL_WARN_ON_USE (wcscat, "wcscat is unportable - "
672 "use gnulib module wcscat for portability");
673# endif
674#endif
675
676
677/* Append no more than N wide characters of SRC onto DEST. */
678#if @GNULIB_WCSNCAT@
679# if !@HAVE_WCSNCAT@
680_GL_FUNCDECL_SYS (wcsncat, wchar_t *,
681 (wchar_t *dest, const wchar_t *src, size_t n));
682# endif
683_GL_CXXALIAS_SYS (wcsncat, wchar_t *,
684 (wchar_t *dest, const wchar_t *src, size_t n));
685_GL_CXXALIASWARN (wcsncat);
686#elif defined GNULIB_POSIXCHECK
687# undef wcsncat
688# if HAVE_RAW_DECL_WCSNCAT
689_GL_WARN_ON_USE (wcsncat, "wcsncat is unportable - "
690 "use gnulib module wcsncat for portability");
691# endif
692#endif
693
694
695/* Compare S1 and S2. */
696#if @GNULIB_WCSCMP@
697# if !@HAVE_WCSCMP@
005de2e8
LC
698_GL_FUNCDECL_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2)
699 _GL_ATTRIBUTE_PURE);
49114fd4
LC
700# endif
701_GL_CXXALIAS_SYS (wcscmp, int, (const wchar_t *s1, const wchar_t *s2));
702_GL_CXXALIASWARN (wcscmp);
703#elif defined GNULIB_POSIXCHECK
704# undef wcscmp
705# if HAVE_RAW_DECL_WCSCMP
706_GL_WARN_ON_USE (wcscmp, "wcscmp is unportable - "
707 "use gnulib module wcscmp for portability");
708# endif
709#endif
710
711
712/* Compare no more than N wide characters of S1 and S2. */
713#if @GNULIB_WCSNCMP@
714# if !@HAVE_WCSNCMP@
715_GL_FUNCDECL_SYS (wcsncmp, int,
005de2e8
LC
716 (const wchar_t *s1, const wchar_t *s2, size_t n)
717 _GL_ATTRIBUTE_PURE);
49114fd4
LC
718# endif
719_GL_CXXALIAS_SYS (wcsncmp, int,
720 (const wchar_t *s1, const wchar_t *s2, size_t n));
721_GL_CXXALIASWARN (wcsncmp);
722#elif defined GNULIB_POSIXCHECK
723# undef wcsncmp
724# if HAVE_RAW_DECL_WCSNCMP
725_GL_WARN_ON_USE (wcsncmp, "wcsncmp is unportable - "
726 "use gnulib module wcsncmp for portability");
727# endif
728#endif
729
730
731/* Compare S1 and S2, ignoring case. */
732#if @GNULIB_WCSCASECMP@
733# if !@HAVE_WCSCASECMP@
005de2e8
LC
734_GL_FUNCDECL_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2)
735 _GL_ATTRIBUTE_PURE);
49114fd4
LC
736# endif
737_GL_CXXALIAS_SYS (wcscasecmp, int, (const wchar_t *s1, const wchar_t *s2));
738_GL_CXXALIASWARN (wcscasecmp);
739#elif defined GNULIB_POSIXCHECK
740# undef wcscasecmp
741# if HAVE_RAW_DECL_WCSCASECMP
742_GL_WARN_ON_USE (wcscasecmp, "wcscasecmp is unportable - "
743 "use gnulib module wcscasecmp for portability");
744# endif
745#endif
746
747
748/* Compare no more than N chars of S1 and S2, ignoring case. */
749#if @GNULIB_WCSNCASECMP@
750# if !@HAVE_WCSNCASECMP@
751_GL_FUNCDECL_SYS (wcsncasecmp, int,
005de2e8
LC
752 (const wchar_t *s1, const wchar_t *s2, size_t n)
753 _GL_ATTRIBUTE_PURE);
49114fd4
LC
754# endif
755_GL_CXXALIAS_SYS (wcsncasecmp, int,
756 (const wchar_t *s1, const wchar_t *s2, size_t n));
757_GL_CXXALIASWARN (wcsncasecmp);
758#elif defined GNULIB_POSIXCHECK
759# undef wcsncasecmp
760# if HAVE_RAW_DECL_WCSNCASECMP
761_GL_WARN_ON_USE (wcsncasecmp, "wcsncasecmp is unportable - "
762 "use gnulib module wcsncasecmp for portability");
763# endif
764#endif
765
766
767/* Compare S1 and S2, both interpreted as appropriate to the LC_COLLATE
768 category of the current locale. */
769#if @GNULIB_WCSCOLL@
770# if !@HAVE_WCSCOLL@
771_GL_FUNCDECL_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
772# endif
773_GL_CXXALIAS_SYS (wcscoll, int, (const wchar_t *s1, const wchar_t *s2));
774_GL_CXXALIASWARN (wcscoll);
775#elif defined GNULIB_POSIXCHECK
776# undef wcscoll
777# if HAVE_RAW_DECL_WCSCOLL
778_GL_WARN_ON_USE (wcscoll, "wcscoll is unportable - "
779 "use gnulib module wcscoll for portability");
780# endif
781#endif
782
783
784/* Transform S2 into array pointed to by S1 such that if wcscmp is applied
785 to two transformed strings the result is the as applying 'wcscoll' to the
786 original strings. */
787#if @GNULIB_WCSXFRM@
788# if !@HAVE_WCSXFRM@
789_GL_FUNCDECL_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
790# endif
791_GL_CXXALIAS_SYS (wcsxfrm, size_t, (wchar_t *s1, const wchar_t *s2, size_t n));
792_GL_CXXALIASWARN (wcsxfrm);
793#elif defined GNULIB_POSIXCHECK
794# undef wcsxfrm
795# if HAVE_RAW_DECL_WCSXFRM
796_GL_WARN_ON_USE (wcsxfrm, "wcsxfrm is unportable - "
797 "use gnulib module wcsxfrm for portability");
798# endif
799#endif
800
801
802/* Duplicate S, returning an identical malloc'd string. */
803#if @GNULIB_WCSDUP@
804# if !@HAVE_WCSDUP@
805_GL_FUNCDECL_SYS (wcsdup, wchar_t *, (const wchar_t *s));
806# endif
807_GL_CXXALIAS_SYS (wcsdup, wchar_t *, (const wchar_t *s));
808_GL_CXXALIASWARN (wcsdup);
809#elif defined GNULIB_POSIXCHECK
810# undef wcsdup
811# if HAVE_RAW_DECL_WCSDUP
812_GL_WARN_ON_USE (wcsdup, "wcsdup is unportable - "
813 "use gnulib module wcsdup for portability");
814# endif
815#endif
816
817
818/* Find the first occurrence of WC in WCS. */
819#if @GNULIB_WCSCHR@
820# if !@HAVE_WCSCHR@
005de2e8
LC
821_GL_FUNCDECL_SYS (wcschr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
822 _GL_ATTRIBUTE_PURE);
49114fd4 823# endif
dd7d0148
LC
824 /* On some systems, this function is defined as an overloaded function:
825 extern "C++" {
826 const wchar_t * std::wcschr (const wchar_t *, wchar_t);
827 wchar_t * std::wcschr (wchar_t *, wchar_t);
828 } */
829_GL_CXXALIAS_SYS_CAST2 (wcschr,
830 wchar_t *, (const wchar_t *, wchar_t),
831 const wchar_t *, (const wchar_t *, wchar_t));
832# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
833 && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
834_GL_CXXALIASWARN1 (wcschr, wchar_t *, (wchar_t *wcs, wchar_t wc));
835_GL_CXXALIASWARN1 (wcschr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
836# else
49114fd4 837_GL_CXXALIASWARN (wcschr);
dd7d0148 838# endif
49114fd4
LC
839#elif defined GNULIB_POSIXCHECK
840# undef wcschr
841# if HAVE_RAW_DECL_WCSCHR
842_GL_WARN_ON_USE (wcschr, "wcschr is unportable - "
843 "use gnulib module wcschr for portability");
844# endif
845#endif
846
847
848/* Find the last occurrence of WC in WCS. */
849#if @GNULIB_WCSRCHR@
850# if !@HAVE_WCSRCHR@
005de2e8
LC
851_GL_FUNCDECL_SYS (wcsrchr, wchar_t *, (const wchar_t *wcs, wchar_t wc)
852 _GL_ATTRIBUTE_PURE);
49114fd4 853# endif
dd7d0148
LC
854 /* On some systems, this function is defined as an overloaded function:
855 extern "C++" {
856 const wchar_t * std::wcsrchr (const wchar_t *, wchar_t);
857 wchar_t * std::wcsrchr (wchar_t *, wchar_t);
858 } */
859_GL_CXXALIAS_SYS_CAST2 (wcsrchr,
860 wchar_t *, (const wchar_t *, wchar_t),
861 const wchar_t *, (const wchar_t *, wchar_t));
862# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
863 && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
864_GL_CXXALIASWARN1 (wcsrchr, wchar_t *, (wchar_t *wcs, wchar_t wc));
865_GL_CXXALIASWARN1 (wcsrchr, const wchar_t *, (const wchar_t *wcs, wchar_t wc));
866# else
49114fd4 867_GL_CXXALIASWARN (wcsrchr);
dd7d0148 868# endif
49114fd4
LC
869#elif defined GNULIB_POSIXCHECK
870# undef wcsrchr
871# if HAVE_RAW_DECL_WCSRCHR
872_GL_WARN_ON_USE (wcsrchr, "wcsrchr is unportable - "
873 "use gnulib module wcsrchr for portability");
874# endif
875#endif
876
877
878/* Return the length of the initial segmet of WCS which consists entirely
879 of wide characters not in REJECT. */
880#if @GNULIB_WCSCSPN@
881# if !@HAVE_WCSCSPN@
005de2e8
LC
882_GL_FUNCDECL_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject)
883 _GL_ATTRIBUTE_PURE);
49114fd4
LC
884# endif
885_GL_CXXALIAS_SYS (wcscspn, size_t, (const wchar_t *wcs, const wchar_t *reject));
886_GL_CXXALIASWARN (wcscspn);
887#elif defined GNULIB_POSIXCHECK
888# undef wcscspn
889# if HAVE_RAW_DECL_WCSCSPN
890_GL_WARN_ON_USE (wcscspn, "wcscspn is unportable - "
891 "use gnulib module wcscspn for portability");
892# endif
893#endif
894
895
896/* Return the length of the initial segmet of WCS which consists entirely
897 of wide characters in ACCEPT. */
898#if @GNULIB_WCSSPN@
899# if !@HAVE_WCSSPN@
005de2e8
LC
900_GL_FUNCDECL_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept)
901 _GL_ATTRIBUTE_PURE);
49114fd4
LC
902# endif
903_GL_CXXALIAS_SYS (wcsspn, size_t, (const wchar_t *wcs, const wchar_t *accept));
904_GL_CXXALIASWARN (wcsspn);
905#elif defined GNULIB_POSIXCHECK
906# undef wcsspn
907# if HAVE_RAW_DECL_WCSSPN
908_GL_WARN_ON_USE (wcsspn, "wcsspn is unportable - "
909 "use gnulib module wcsspn for portability");
910# endif
911#endif
912
913
914/* Find the first occurrence in WCS of any character in ACCEPT. */
915#if @GNULIB_WCSPBRK@
916# if !@HAVE_WCSPBRK@
917_GL_FUNCDECL_SYS (wcspbrk, wchar_t *,
005de2e8
LC
918 (const wchar_t *wcs, const wchar_t *accept)
919 _GL_ATTRIBUTE_PURE);
49114fd4 920# endif
dd7d0148
LC
921 /* On some systems, this function is defined as an overloaded function:
922 extern "C++" {
923 const wchar_t * std::wcspbrk (const wchar_t *, const wchar_t *);
924 wchar_t * std::wcspbrk (wchar_t *, const wchar_t *);
925 } */
926_GL_CXXALIAS_SYS_CAST2 (wcspbrk,
927 wchar_t *, (const wchar_t *, const wchar_t *),
928 const wchar_t *, (const wchar_t *, const wchar_t *));
929# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
930 && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
931_GL_CXXALIASWARN1 (wcspbrk, wchar_t *,
932 (wchar_t *wcs, const wchar_t *accept));
933_GL_CXXALIASWARN1 (wcspbrk, const wchar_t *,
934 (const wchar_t *wcs, const wchar_t *accept));
935# else
49114fd4 936_GL_CXXALIASWARN (wcspbrk);
dd7d0148 937# endif
49114fd4
LC
938#elif defined GNULIB_POSIXCHECK
939# undef wcspbrk
940# if HAVE_RAW_DECL_WCSPBRK
941_GL_WARN_ON_USE (wcspbrk, "wcspbrk is unportable - "
942 "use gnulib module wcspbrk for portability");
943# endif
944#endif
945
946
947/* Find the first occurrence of NEEDLE in HAYSTACK. */
948#if @GNULIB_WCSSTR@
949# if !@HAVE_WCSSTR@
950_GL_FUNCDECL_SYS (wcsstr, wchar_t *,
005de2e8
LC
951 (const wchar_t *haystack, const wchar_t *needle)
952 _GL_ATTRIBUTE_PURE);
49114fd4 953# endif
dd7d0148
LC
954 /* On some systems, this function is defined as an overloaded function:
955 extern "C++" {
956 const wchar_t * std::wcsstr (const wchar_t *, const wchar_t *);
957 wchar_t * std::wcsstr (wchar_t *, const wchar_t *);
958 } */
959_GL_CXXALIAS_SYS_CAST2 (wcsstr,
960 wchar_t *, (const wchar_t *, const wchar_t *),
961 const wchar_t *, (const wchar_t *, const wchar_t *));
962# if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 10) && !defined __UCLIBC__) \
963 && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
964_GL_CXXALIASWARN1 (wcsstr, wchar_t *,
965 (wchar_t *haystack, const wchar_t *needle));
966_GL_CXXALIASWARN1 (wcsstr, const wchar_t *,
967 (const wchar_t *haystack, const wchar_t *needle));
968# else
49114fd4 969_GL_CXXALIASWARN (wcsstr);
dd7d0148 970# endif
49114fd4
LC
971#elif defined GNULIB_POSIXCHECK
972# undef wcsstr
973# if HAVE_RAW_DECL_WCSSTR
974_GL_WARN_ON_USE (wcsstr, "wcsstr is unportable - "
975 "use gnulib module wcsstr for portability");
976# endif
977#endif
978
979
980/* Divide WCS into tokens separated by characters in DELIM. */
981#if @GNULIB_WCSTOK@
982# if !@HAVE_WCSTOK@
983_GL_FUNCDECL_SYS (wcstok, wchar_t *,
984 (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
985# endif
986_GL_CXXALIAS_SYS (wcstok, wchar_t *,
987 (wchar_t *wcs, const wchar_t *delim, wchar_t **ptr));
988_GL_CXXALIASWARN (wcstok);
989#elif defined GNULIB_POSIXCHECK
990# undef wcstok
991# if HAVE_RAW_DECL_WCSTOK
992_GL_WARN_ON_USE (wcstok, "wcstok is unportable - "
993 "use gnulib module wcstok for portability");
994# endif
995#endif
996
997
998/* Determine number of column positions required for first N wide
999 characters (or fewer if S ends before this) in S. */
1000#if @GNULIB_WCSWIDTH@
1001# if @REPLACE_WCSWIDTH@
1002# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
1003# undef wcswidth
1004# define wcswidth rpl_wcswidth
1005# endif
005de2e8
LC
1006_GL_FUNCDECL_RPL (wcswidth, int, (const wchar_t *s, size_t n)
1007 _GL_ATTRIBUTE_PURE);
49114fd4
LC
1008_GL_CXXALIAS_RPL (wcswidth, int, (const wchar_t *s, size_t n));
1009# else
1010# if !@HAVE_WCSWIDTH@
005de2e8
LC
1011_GL_FUNCDECL_SYS (wcswidth, int, (const wchar_t *s, size_t n)
1012 _GL_ATTRIBUTE_PURE);
49114fd4
LC
1013# endif
1014_GL_CXXALIAS_SYS (wcswidth, int, (const wchar_t *s, size_t n));
1015# endif
1016_GL_CXXALIASWARN (wcswidth);
1017#elif defined GNULIB_POSIXCHECK
1018# undef wcswidth
1019# if HAVE_RAW_DECL_WCSWIDTH
1020_GL_WARN_ON_USE (wcswidth, "wcswidth is unportable - "
1021 "use gnulib module wcswidth for portability");
1022# endif
1023#endif
1024
1025
3d458a81
AW
1026#endif /* _@GUARD_PREFIX@_WCHAR_H */
1027#endif /* _@GUARD_PREFIX@_WCHAR_H */
e65fc94b 1028#endif