xref: /titanic_52/usr/src/head/wchar.h (revision f64ca10231919db05e806441ccd6186ea9c6e734)
1  /*
2   * CDDL HEADER START
3   *
4   * The contents of this file are subject to the terms of the
5   * Common Development and Distribution License (the "License").
6   * You may not use this file except in compliance with the License.
7   *
8   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9   * or http://www.opensolaris.org/os/licensing.
10   * See the License for the specific language governing permissions
11   * and limitations under the License.
12   *
13   * When distributing Covered Code, include this CDDL HEADER in each
14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15   * If applicable, add the following below this CDDL HEADER, with the
16   * fields enclosed by brackets "[]" replaced with your own identifying
17   * information: Portions Copyright [yyyy] [name of copyright owner]
18   *
19   * CDDL HEADER END
20   */
21  
22  /*
23   * Copyright 2014 Garrett D'Amore <garrett@damore.org>
24   * Copyright (c) 1993, 2010, Oracle and/or its affiliates. All rights reserved.
25   */
26  
27  #ifndef	_WCHAR_H
28  #define	_WCHAR_H
29  
30  #include <sys/feature_tests.h>
31  #include <iso/wchar_iso.h>
32  #include <iso/wchar_c99.h>
33  
34  /*
35   * Allow global visibility for symbols defined in
36   * C++ "std" namespace in <iso/wchar_iso.h>.
37   */
38  #if __cplusplus >= 199711L
39  using std::FILE;
40  using std::wint_t;
41  using std::clock_t;
42  using std::size_t;
43  using std::time_t;
44  using std::tm;
45  using std::mbstate_t;
46  using std::fgetwc;
47  using std::fgetws;
48  using std::fputwc;
49  using std::fputws;
50  using std::ungetwc;
51  using std::getwc;
52  using std::getwchar;
53  using std::putwc;
54  using std::putwchar;
55  using std::wcstod;
56  using std::wcstol;
57  using std::wcstoul;
58  using std::wcscat;
59  using std::wcschr;
60  using std::wcscmp;
61  using std::wcscoll;
62  using std::wcscpy;
63  using std::wcscspn;
64  using std::wcslen;
65  using std::wcsncat;
66  using std::wcsncmp;
67  using std::wcsncpy;
68  using std::wcspbrk;
69  using std::wcsrchr;
70  using std::wcsspn;
71  using std::wcsxfrm;
72  using std::wcstok;
73  using std::wcsftime;
74  /* not XPG4 and not XPG4v2 */
75  #if (!defined(_XPG4) && !defined(_XPG4_2) || defined(_XPG5))
76  using std::btowc;
77  using std::fwprintf;
78  using std::fwscanf;
79  using std::fwide;
80  using std::mbsinit;
81  using std::mbrlen;
82  using std::mbrtowc;
83  using std::mbsrtowcs;
84  using std::swprintf;
85  using std::swscanf;
86  using std::vfwprintf;
87  using std::vwprintf;
88  using std::vswprintf;
89  using std::wcrtomb;
90  using std::wcsrtombs;
91  using std::wcsstr;
92  using std::wctob;
93  using std::wmemchr;
94  using std::wmemcmp;
95  using std::wmemcpy;
96  using std::wmemmove;
97  using std::wmemset;
98  using std::wprintf;
99  using std::wscanf;
100  #endif /* not XPG4 and not XPG4v2 */
101  #endif /* __cplusplus >= 199711L */
102  
103  #ifdef	__cplusplus
104  extern "C" {
105  #endif
106  
107  #if !defined(_STRICT_STDC) || defined(_XOPEN_SOURCE) || defined(__EXTENSIONS__)
108  #if !defined(_WCTYPE_T) || __cplusplus >= 199711L
109  #define	_WCTYPE_T
110  typedef	int	wctype_t;
111  #endif
112  #endif /* !defined(_STRICT_STDC) || defined(_XOPEN_SOURCE)... */
113  
114  /*
115   * XPG6 requires that va_list be defined as defined in <stdarg.h>,
116   * however, inclusion of <stdarg.h> breaks Standard C namespace.
117   */
118  #if defined(_XPG6) && !defined(_VA_LIST)
119  #define	_VA_LIST
120  typedef __va_list va_list;
121  #endif  /* defined(_XPG6) && !defined(_VA_LIST) */
122  
123  #if !defined(_STRICT_STDC) || defined(_XOPEN_SOURCE) || defined(__EXTENSIONS__)
124  #if __cplusplus >= 199711L
125  namespace std {
126  #endif
127  extern int iswalpha(wint_t);
128  extern int iswupper(wint_t);
129  extern int iswlower(wint_t);
130  extern int iswdigit(wint_t);
131  extern int iswxdigit(wint_t);
132  extern int iswalnum(wint_t);
133  extern int iswspace(wint_t);
134  extern int iswpunct(wint_t);
135  extern int iswprint(wint_t);
136  extern int iswgraph(wint_t);
137  extern int iswcntrl(wint_t);
138  extern int iswctype(wint_t, wctype_t);
139  extern wint_t towlower(wint_t);
140  extern wint_t towupper(wint_t);
141  extern wchar_t *wcswcs(const wchar_t *, const wchar_t *);
142  extern int wcswidth(const wchar_t *, size_t);
143  extern int wcwidth(wchar_t);
144  extern wctype_t wctype(const char *);
145  #if __cplusplus >= 199711L
146  } /* namespace std */
147  
148  using std::iswalpha;
149  using std::iswupper;
150  using std::iswlower;
151  using std::iswdigit;
152  using std::iswxdigit;
153  using std::iswalnum;
154  using std::iswspace;
155  using std::iswpunct;
156  using std::iswprint;
157  using std::iswgraph;
158  using std::iswcntrl;
159  using std::iswctype;
160  using std::towlower;
161  using std::towupper;
162  using std::wcswcs;
163  using std::wcswidth;
164  using std::wcwidth;
165  using std::wctype;
166  #endif
167  #endif /* !defined(_STRICT_STDC) || defined(_XOPEN_SOURCE)... */
168  
169  #if defined(_XPG7) || !defined(_STRICT_SYMBOLS)
170  
171  #ifndef _LOCALE_T
172  #define	_LOCALE_T
173  typedef struct _locale *locale_t;
174  #endif
175  
176  extern size_t wcsnlen(const wchar_t *, size_t);
177  extern wchar_t *wcpcpy(wchar_t *_RESTRICT_KYWD, const wchar_t *_RESTRICT_KYWD);
178  extern wchar_t *wcpncpy(wchar_t *_RESTRICT_KYWD, const wchar_t *_RESTRICT_KYWD,
179      size_t);
180  extern size_t wcsxfrm_l(wchar_t *_RESTRICT_KYWD, const wchar_t *_RESTRICT_KYWD,
181      size_t, locale_t);
182  extern int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
183  extern wchar_t *wcsdup(const wchar_t *);
184  extern int wcscasecmp(const wchar_t *, const wchar_t *);
185  extern int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
186  extern int wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
187  extern int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t);
188  extern size_t mbsnrtowcs(wchar_t *_RESTRICT_KYWD, const char **_RESTRICT_KYWD,
189      size_t, size_t, mbstate_t *_RESTRICT_KYWD);
190  
191  #endif	/* defined(_XPG7) || !defined(_STRICT_SYMBOLS) */
192  
193  #ifdef	__cplusplus
194  }
195  #endif
196  
197  #endif	/* _WCHAR_H */
198