Annotation of src/include/wchar.h, Revision 1.8
1.8 ! millert 1: /* $OpenBSD: wchar.h,v 1.7 2005/12/19 17:05:20 millert Exp $ */
1.1 espie 2: /* $NetBSD: wchar.h,v 1.16 2003/03/07 07:11:35 tshiozak Exp $ */
3:
4: /*-
5: * Copyright (c)1999 Citrus Project,
6: * All rights reserved.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: *
17: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
18: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
21: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27: * SUCH DAMAGE.
28: */
29:
30: /*-
31: * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
32: * All rights reserved.
33: *
34: * This code is derived from software contributed to The NetBSD Foundation
35: * by Julian Coleman.
36: *
37: * Redistribution and use in source and binary forms, with or without
38: * modification, are permitted provided that the following conditions
39: * are met:
40: * 1. Redistributions of source code must retain the above copyright
41: * notice, this list of conditions and the following disclaimer.
42: * 2. Redistributions in binary form must reproduce the above copyright
43: * notice, this list of conditions and the following disclaimer in the
44: * documentation and/or other materials provided with the distribution.
45: * 3. All advertising materials mentioning features or use of this software
46: * must display the following acknowledgement:
47: * This product includes software developed by the NetBSD
48: * Foundation, Inc. and its contributors.
49: * 4. Neither the name of The NetBSD Foundation nor the names of its
50: * contributors may be used to endorse or promote products derived
51: * from this software without specific prior written permission.
52: *
53: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
54: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
55: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
56: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
57: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
58: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
59: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
60: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
61: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
62: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
63: * POSSIBILITY OF SUCH DAMAGE.
64: */
65:
66: #ifndef _WCHAR_H_
67: #define _WCHAR_H_
68:
69: #include <sys/cdefs.h>
1.8 ! millert 70: #include <sys/_types.h>
1.1 espie 71:
72: #ifndef NULL
73: #ifdef __GNUG__
74: #define NULL __null
75: #else
76: #define NULL 0L
77: #endif
78: #endif
79:
80: #include <stdio.h> /* for FILE* */
81:
1.8 ! millert 82: #if !defined(_WCHAR_T_DEFINED_) && !defined(__cplusplus)
! 83: #define _WCHAR_T_DEFINED_
! 84: typedef __wchar_t wchar_t;
1.1 espie 85: #endif
86:
1.8 ! millert 87: #ifndef _MBSTATE_T_DEFINED_
! 88: #define _MBSTATE_T_DEFINED_
! 89: typedef __mbstate_t mbstate_t;
1.2 espie 90: #endif
91:
1.8 ! millert 92: #ifndef _WINT_T_DEFINED_
! 93: #define _WINT_T_DEFINED_
! 94: typedef __wint_t wint_t;
1.1 espie 95: #endif
96:
1.8 ! millert 97: #ifndef _SIZE_T_DEFINED_
! 98: #define _SIZE_T_DEFINED_
! 99: typedef __size_t size_t;
1.1 espie 100: #endif
101:
102: #ifndef WEOF
103: #define WEOF ((wint_t)-1)
104: #endif
105:
106: __BEGIN_DECLS
1.2 espie 107: wint_t btowc(int);
108: size_t mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
109: size_t mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
110: mbstate_t * __restrict);
111: int mbsinit(const mbstate_t *);
112: size_t mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
113: mbstate_t * __restrict);
114: size_t wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
1.1 espie 115: wchar_t *wcscat(wchar_t * __restrict, const wchar_t * __restrict);
116: wchar_t *wcschr(const wchar_t *, wchar_t);
117: int wcscmp(const wchar_t *, const wchar_t *);
118: int wcscoll(const wchar_t *, const wchar_t *);
119: wchar_t *wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
120: size_t wcscspn(const wchar_t *, const wchar_t *);
121: size_t wcslen(const wchar_t *);
122: wchar_t *wcsncat(wchar_t * __restrict, const wchar_t * __restrict,
123: size_t);
124: int wcsncmp(const wchar_t *, const wchar_t *, size_t);
125: wchar_t *wcsncpy(wchar_t * __restrict , const wchar_t * __restrict,
126: size_t);
127: wchar_t *wcspbrk(const wchar_t *, const wchar_t *);
128: wchar_t *wcsrchr(const wchar_t *, wchar_t);
1.2 espie 129: size_t wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
130: mbstate_t * __restrict);
1.1 espie 131: size_t wcsspn(const wchar_t *, const wchar_t *);
132: wchar_t *wcsstr(const wchar_t *, const wchar_t *);
133: wchar_t *wcstok(wchar_t * __restrict, const wchar_t * __restrict,
134: wchar_t ** __restrict);
1.6 espie 135: size_t wcsxfrm(wchar_t *, const wchar_t *, size_t);
1.1 espie 136: wchar_t *wcswcs(const wchar_t *, const wchar_t *);
137: wchar_t *wmemchr(const wchar_t *, wchar_t, size_t);
138: int wmemcmp(const wchar_t *, const wchar_t *, size_t);
139: wchar_t *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict,
140: size_t);
141: wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t);
142: wchar_t *wmemset(wchar_t *, wchar_t, size_t);
143:
144: size_t wcslcat(wchar_t *, const wchar_t *, size_t);
145: size_t wcslcpy(wchar_t *, const wchar_t *, size_t);
1.6 espie 146: int wcswidth(const wchar_t *, size_t);
1.2 espie 147: int wctob(wint_t);
1.4 espie 148: int wcscoll(const wchar_t *, const wchar_t *);
1.6 espie 149: int wcwidth(wchar_t);
150:
151: double wcstod(const wchar_t * __restrict, wchar_t ** __restrict);
152: long int wcstol(const wchar_t * __restrict, wchar_t ** __restrict, int base);
153: unsigned long int wcstoul(const wchar_t * __restrict, wchar_t ** __restrict,
154: int base);
155:
1.7 millert 156: #if (defined(__GNUC__) && __GNUC__ >= 2 && !defined(__STRICT_ANSI__)) || \
157: __ISO_C_VISIBLE >= 1999
1.6 espie 158: /* LONGLONG */
159: long long int wcstoll(const wchar_t * __restrict,
160: wchar_t ** __restrict, int base);
161: /* LONGLONG */
162: unsigned long long int wcstoull(const wchar_t * __restrict,
163: wchar_t ** __restrict, int base);
164: #endif
1.4 espie 165:
166: wint_t ungetwc(wint_t, FILE *);
167: wint_t fgetwc(FILE *);
168: wchar_t *fgetws(wchar_t * __restrict, int, FILE * __restrict);
169: wint_t getwc(FILE *);
170: wint_t getwchar(void);
171: wint_t fputwc(wchar_t, FILE *);
172: int fputws(const wchar_t * __restrict, FILE * __restrict);
173: wint_t putwc(wchar_t, FILE *);
174: wint_t putwchar(wchar_t);
175:
176: int fwide(FILE *, int);
177:
178: #define getwc(f) fgetwc(f)
179: #define getwchar() getwc(stdin)
180: #define putwc(wc, f) fputwc((wc), (f))
181: #define putwchar(wc) putwc((wc), stdout)
1.1 espie 182: __END_DECLS
183:
184: #endif /* !_WCHAR_H_ */