Add Gnulib `strftime' module, update Gnulib files.
[bpt/guile.git] / lib / wchar.in.h
CommitLineData
e65fc94b
LC
1/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
2
3 Copyright (C) 2007-2008 Free Software Foundation, Inc.
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
16 along with this program; if not, write to the Free Software Foundation,
17 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
18
19/* Written by Eric Blake. */
20
21/*
22 * ISO C 99 <wchar.h> for platforms that have issues.
23 * <http://www.opengroup.org/susv3xbd/wchar.h.html>
24 *
25 * For now, this just ensures proper prerequisite inclusion order and
26 * the declaration of wcwidth().
27 */
28
29@PRAGMA_SYSTEM_HEADER@
30
31#ifdef __need_mbstate_t
32/* Special invocation convention inside uClibc header files. */
33
34#@INCLUDE_NEXT@ @NEXT_WCHAR_H@
35
36#else
37/* Normal invocation convention. */
38
39#ifndef _GL_WCHAR_H
40
41/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
42 <wchar.h>.
43 BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
44 included before <wchar.h>. */
45#include <stddef.h>
46#include <stdio.h>
47#include <time.h>
48
49/* Include the original <wchar.h> if it exists.
50 Some builds of uClibc lack it. */
51/* The include_next requires a split double-inclusion guard. */
52#if @HAVE_WCHAR_H@
53# @INCLUDE_NEXT@ @NEXT_WCHAR_H@
54#endif
55
56#ifndef _GL_WCHAR_H
57#define _GL_WCHAR_H
58
59/* The definition of GL_LINK_WARNING is copied here. */
60
61#ifdef __cplusplus
62extern "C" {
63#endif
64
65
66/* Return the number of screen columns needed for WC. */
67#if @GNULIB_WCWIDTH@
68# if @REPLACE_WCWIDTH@
69# undef wcwidth
70# define wcwidth rpl_wcwidth
71extern int wcwidth (wchar_t);
72# else
73# if !defined wcwidth && !@HAVE_DECL_WCWIDTH@
74/* wcwidth exists but is not declared. */
75extern int wcwidth (int /* actually wchar_t */);
76# endif
77# endif
78#elif defined GNULIB_POSIXCHECK
79# undef wcwidth
80# define wcwidth(w) \
81 (GL_LINK_WARNING ("wcwidth is unportable - " \
82 "use gnulib module wcwidth for portability"), \
83 wcwidth (w))
84#endif
85
86
87#ifdef __cplusplus
88}
89#endif
90
91#endif /* _GL_WCHAR_H */
92#endif /* _GL_WCHAR_H */
93#endif