wctype_iso.h revision 2270:495db15e43ee
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/*	wctype.h	1.13 89/11/02 SMI; JLE	*/
23/*	from AT&T JAE 2.1			*/
24/*	definitions for international functions	*/
25
26/*
27 * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
28 * Use is subject to license terms.
29 */
30
31/*
32 * An application should not include this header directly.  Instead it
33 * should be included only through the inclusion of other Sun headers.
34 *
35 * The contents of this header is limited to identifiers specified in the
36 * C Standard.  Any new identifiers specified in future amendments to the
37 * C Standard must be placed in this header.  If these new identifiers
38 * are required to also be in the C++ Standard "std" namespace, then for
39 * anything other than macro definitions, corresponding "using" directives
40 * must also be added to <wctype.h>.
41 */
42
43#ifndef	_ISO_WCTYPE_ISO_H
44#define	_ISO_WCTYPE_ISO_H
45
46#pragma ident	"%Z%%M%	%I%	%E% SMI"
47
48#include <sys/feature_tests.h>
49
50#ifdef	__cplusplus
51extern "C" {
52#endif
53
54#if __cplusplus >= 199711L
55namespace std {
56#endif
57
58#if !defined(_WINT_T) || __cplusplus >= 199711L
59#define	_WINT_T
60#if defined(_LP64)
61typedef	int	wint_t;
62#else
63typedef long	wint_t;
64#endif
65#endif  /* !defined(_WINT_T) || __cplusplus >= 199711L */
66
67#if !defined(_WCTYPE_T) || __cplusplus >= 199711L
68#define	_WCTYPE_T
69typedef	int	wctype_t;
70#endif
71
72typedef unsigned int	wctrans_t;
73
74/* not XPG4 and not XPG4v2 */
75#if !defined(_XPG4) || defined(_XPG5)
76#ifndef WEOF
77#if __cplusplus >= 199711L
78#define	WEOF	((std::wint_t)(-1))
79#else
80#define	WEOF	((wint_t)(-1))
81#endif
82#endif /* WEOF */
83#endif /* not XPG4 and not XPG4v2 */
84
85#ifdef __STDC__
86extern	int iswalnum(wint_t);
87extern	int iswalpha(wint_t);
88extern	int iswcntrl(wint_t);
89extern	int iswdigit(wint_t);
90extern	int iswgraph(wint_t);
91extern	int iswlower(wint_t);
92extern	int iswprint(wint_t);
93extern	int iswpunct(wint_t);
94extern	int iswspace(wint_t);
95extern	int iswupper(wint_t);
96extern	int iswxdigit(wint_t);
97/* tow* also become functions */
98extern	wint_t towlower(wint_t);
99extern	wint_t towupper(wint_t);
100extern	wctrans_t wctrans(const char *);
101extern	wint_t towctrans(wint_t, wctrans_t);
102extern  int iswctype(wint_t, wctype_t);
103extern  wctype_t wctype(const char *);
104#else
105extern  int iswalnum();
106extern  int iswalpha();
107extern  int iswcntrl();
108extern  int iswdigit();
109extern  int iswgraph();
110extern  int iswlower();
111extern  int iswprint();
112extern  int iswpunct();
113extern  int iswspace();
114extern  int iswupper();
115extern  int iswxdigit();
116/* tow* also become functions */
117extern  wint_t towlower();
118extern  wint_t towupper();
119extern	wctrans_t wctrans();
120extern	wint_t towctrans();
121extern  int iswctype();
122extern  wctype_t wctype();
123#endif
124
125/* bit definition for character class */
126
127#define	_E1	0x00000100	/* phonogram (international use) */
128#define	_E2	0x00000200	/* ideogram (international use) */
129#define	_E3	0x00000400	/* English (international use) */
130#define	_E4	0x00000800	/* number (international use) */
131#define	_E5	0x00001000	/* special (international use) */
132#define	_E6	0x00002000	/* other characters (international use) */
133#define	_E7	0x00004000	/* reserved (international use) */
134#define	_E8	0x00008000	/* reserved (international use) */
135
136#define	_E9	0x00010000
137#define	_E10	0x00020000
138#define	_E11	0x00040000
139#define	_E12	0x00080000
140#define	_E13	0x00100000
141#define	_E14	0x00200000
142#define	_E15	0x00400000
143#define	_E16	0x00800000
144#define	_E17	0x01000000
145#define	_E18	0x02000000
146#define	_E19	0x04000000
147#define	_E20	0x08000000
148#define	_E21	0x10000000
149#define	_E22	0x20000000
150#define	_E23	0x40000000
151#define	_E24	0x80000000
152
153#if __cplusplus >= 199711L
154}
155#endif /* end of namespace std */
156
157#ifdef	__cplusplus
158}
159#endif
160
161#endif	/* _ISO_WCTYPE_ISO_H */
162