xref: /illumos-gate/usr/src/head/iso/wctype_iso.h (revision 168c213023b7f347f11abfc72f448b0c621ab718)
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
51 extern "C" {
52 #endif
53 
54 #if __cplusplus >= 199711L
55 namespace std {
56 #endif
57 
58 #if !defined(_WINT_T) || __cplusplus >= 199711L
59 #define	_WINT_T
60 #if defined(_LP64)
61 typedef	int	wint_t;
62 #else
63 typedef long	wint_t;
64 #endif
65 #endif  /* !defined(_WINT_T) || __cplusplus >= 199711L */
66 
67 #if !defined(_WCTYPE_T) || __cplusplus >= 199711L
68 #define	_WCTYPE_T
69 typedef	int	wctype_t;
70 #endif
71 
72 typedef 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__
86 extern	int iswalnum(wint_t);
87 extern	int iswalpha(wint_t);
88 extern	int iswcntrl(wint_t);
89 extern	int iswdigit(wint_t);
90 extern	int iswgraph(wint_t);
91 extern	int iswlower(wint_t);
92 extern	int iswprint(wint_t);
93 extern	int iswpunct(wint_t);
94 extern	int iswspace(wint_t);
95 extern	int iswupper(wint_t);
96 extern	int iswxdigit(wint_t);
97 /* tow* also become functions */
98 extern	wint_t towlower(wint_t);
99 extern	wint_t towupper(wint_t);
100 extern	wctrans_t wctrans(const char *);
101 extern	wint_t towctrans(wint_t, wctrans_t);
102 extern  int iswctype(wint_t, wctype_t);
103 extern  wctype_t wctype(const char *);
104 #else
105 extern  int iswalnum();
106 extern  int iswalpha();
107 extern  int iswcntrl();
108 extern  int iswdigit();
109 extern  int iswgraph();
110 extern  int iswlower();
111 extern  int iswprint();
112 extern  int iswpunct();
113 extern  int iswspace();
114 extern  int iswupper();
115 extern  int iswxdigit();
116 /* tow* also become functions */
117 extern  wint_t towlower();
118 extern  wint_t towupper();
119 extern	wctrans_t wctrans();
120 extern	wint_t towctrans();
121 extern  int iswctype();
122 extern  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