wchar.h revision 103793
1132718Skan/*-
2169689Skan * Copyright (c)1999 Citrus Project,
3132718Skan * All rights reserved.
4132718Skan *
5132718Skan * Redistribution and use in source and binary forms, with or without
6132718Skan * modification, are permitted provided that the following conditions
7132718Skan * are met:
8132718Skan * 1. Redistributions of source code must retain the above copyright
9132718Skan *    notice, this list of conditions and the following disclaimer.
10132718Skan * 2. Redistributions in binary form must reproduce the above copyright
11132718Skan *    notice, this list of conditions and the following disclaimer in the
12132718Skan *    documentation and/or other materials provided with the distribution.
13132718Skan *
14132718Skan * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15132718Skan * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16132718Skan * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17132718Skan * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18132718Skan * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19169689Skan * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20169689Skan * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21132718Skan * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22132718Skan * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23132718Skan * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24132718Skan * SUCH DAMAGE.
25132718Skan *
26132718Skan * $FreeBSD: head/include/wchar.h 103793 2002-09-22 08:06:45Z tjr $
27169689Skan */
28132718Skan
29169689Skan/*-
30132718Skan * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
31132718Skan * All rights reserved.
32132718Skan *
33132718Skan * This code is derived from software contributed to The NetBSD Foundation
34132718Skan * by Julian Coleman.
35132718Skan *
36169689Skan * Redistribution and use in source and binary forms, with or without
37132718Skan * modification, are permitted provided that the following conditions
38132718Skan * are met:
39132718Skan * 1. Redistributions of source code must retain the above copyright
40132718Skan *    notice, this list of conditions and the following disclaimer.
41132718Skan * 2. Redistributions in binary form must reproduce the above copyright
42132718Skan *    notice, this list of conditions and the following disclaimer in the
43132718Skan *    documentation and/or other materials provided with the distribution.
44132718Skan * 3. All advertising materials mentioning features or use of this software
45132718Skan *    must display the following acknowledgement:
46132718Skan *        This product includes software developed by the NetBSD
47132718Skan *        Foundation, Inc. and its contributors.
48132718Skan * 4. Neither the name of The NetBSD Foundation nor the names of its
49132718Skan *    contributors may be used to endorse or promote products derived
50132718Skan *    from this software without specific prior written permission.
51132718Skan *
52132718Skan * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
53132718Skan * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
54132718Skan * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
55132718Skan * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
56132718Skan * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
57132718Skan * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
58132718Skan * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
59132718Skan * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
60132718Skan * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
61132718Skan * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
62132718Skan * POSSIBILITY OF SUCH DAMAGE.
63132718Skan *
64132718Skan *	$NetBSD: wchar.h,v 1.8 2000/12/22 05:31:42 itojun Exp $
65132718Skan */
66132718Skan
67132718Skan#ifndef _WCHAR_H_
68132718Skan#define _WCHAR_H_
69132718Skan
70132718Skan#include <sys/cdefs.h>
71132718Skan#include <sys/_types.h>
72132718Skan
73132718Skan#ifndef NULL
74132718Skan#define	NULL	0
75132718Skan#endif
76132718Skan
77132718Skan#ifndef _MBSTATE_T_DECLARED
78132718Skantypedef	__mbstate_t	mbstate_t;
79132718Skan#define	_MBSTATE_T_DECLARED
80132718Skan#endif
81132718Skan
82132718Skan#ifndef _SIZE_T_DECLARED
83132718Skantypedef	__size_t	size_t;
84132718Skan#define	_SIZE_T_DECLARED
85132718Skan#endif
86132718Skan
87132718Skan#ifndef	__cplusplus
88132718Skan#ifndef _WCHAR_T_DECLARED
89132718Skantypedef	__wchar_t	wchar_t;
90132718Skan#define	_WCHAR_T_DECLARED
91132718Skan#endif
92132718Skan#endif
93132718Skan
94132718Skan#ifndef _WINT_T_DECLARED
95132718Skantypedef	__wint_t	wint_t;
96169689Skan#define	_WINT_T_DECLARED
97132718Skan#endif
98132718Skan
99132718Skan#ifndef WEOF
100132718Skan#define	WEOF 	((wint_t)-1)
101132718Skan#endif
102132718Skan
103132718Skanstruct __sFILE;
104132718Skanstruct tm;
105132718Skan
106132718Skan__BEGIN_DECLS
107132718Skanwint_t	btowc(int);
108132718Skanwint_t	fgetwc(struct __sFILE *);
109132718Skanwchar_t	*
110132718Skan	fgetws(wchar_t * __restrict, int, struct __sFILE * __restrict);
111132718Skanwint_t	fputwc(wchar_t, struct __sFILE *);
112132718Skanint	fputws(const wchar_t * __restrict, struct __sFILE * __restrict);
113132718Skanint	fwide(struct __sFILE *, int);
114132718Skanint	fwprintf(struct __sFILE * __restrict, const wchar_t * __restrict, ...);
115132718Skanwint_t	getwc(struct __sFILE *);
116132718Skanwint_t	getwchar(void);
117132718Skansize_t	mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
118132718Skansize_t	mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
119132718Skan	    mbstate_t * __restrict);
120132718Skanint	mbsinit(const mbstate_t *);
121132718Skansize_t	mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
122132718Skan	    mbstate_t * __restrict);
123132718Skanwint_t	putwc(wchar_t, struct __sFILE *);
124132718Skanwint_t	putwchar(wchar_t);
125132718Skanint	swprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict,
126132718Skan	    ...);
127132718Skanwint_t	ungetwc(wint_t, struct __sFILE *);
128132718Skanint	vfwprintf(struct __sFILE * __restrict, const wchar_t * __restrict,
129132718Skan	    __va_list);
130132718Skanint	vswprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict,
131132718Skan	    __va_list);
132132718Skanint	vwprintf(const wchar_t * __restrict, __va_list);
133132718Skansize_t	wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
134132718Skanwchar_t	*wcscat(wchar_t * __restrict, const wchar_t * __restrict);
135132718Skanwchar_t	*wcschr(const wchar_t *, wchar_t);
136132718Skanint	wcscmp(const wchar_t *, const wchar_t *);
137132718Skanwchar_t	*wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
138132718Skansize_t	wcscspn(const wchar_t *, const wchar_t *);
139132718Skansize_t	wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict,
140132718Skan	    const struct tm * __restrict);
141132718Skansize_t	wcslen(const wchar_t *);
142132718Skanwchar_t	*wcsncat(wchar_t * __restrict, const wchar_t * __restrict,
143132718Skan	    size_t);
144132718Skanint	wcsncmp(const wchar_t *, const wchar_t *, size_t);
145132718Skanwchar_t	*wcsncpy(wchar_t * __restrict , const wchar_t * __restrict, size_t);
146132718Skanwchar_t	*wcspbrk(const wchar_t *, const wchar_t *);
147132718Skanwchar_t	*wcsrchr(const wchar_t *, wchar_t);
148132718Skansize_t	wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
149132718Skan	    mbstate_t * __restrict);
150132718Skansize_t	wcsspn(const wchar_t *, const wchar_t *);
151132718Skanwchar_t	*wcsstr(const wchar_t * __restrict, const wchar_t * __restrict);
152169689Skanint	wctob(wint_t);
153132718Skandouble	wcstod(const wchar_t * __restrict, wchar_t ** __restrict);
154132718Skanwchar_t	*wcstok(wchar_t * __restrict, const wchar_t * __restrict,
155132718Skan	    wchar_t ** __restrict);
156132718Skanlong	 wcstol(const wchar_t * __restrict, wchar_t ** __restrict, int);
157132718Skanlong long
158132718Skan	wcstoll(const wchar_t * __restrict, wchar_t ** __restrict, int);
159132718Skanunsigned long
160132718Skan	 wcstoul(const wchar_t * __restrict, wchar_t ** __restrict, int);
161132718Skanunsigned long long
162132718Skan	 wcstoull(const wchar_t * __restrict, wchar_t ** __restrict, int);
163132718Skanwchar_t	*wmemchr(const wchar_t *, wchar_t, size_t);
164132718Skanint	wmemcmp(const wchar_t *, const wchar_t *, size_t);
165132718Skanwchar_t	*wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
166132718Skanwchar_t	*wmemmove(wchar_t *, const wchar_t *, size_t);
167132718Skanwchar_t	*wmemset(wchar_t *, wchar_t, size_t);
168132718Skanint	wprintf(const wchar_t * __restrict, ...);
169169689Skan
170132718Skan#if __XSI_VISIBLE
171132718Skanint	wcswidth(const wchar_t *, size_t);
172132718Skanint	wcwidth(wchar_t);
173132718Skan#endif
174132718Skan
175132718Skan#if __BSD_VISIBLE
176132718Skansize_t	wcslcat(wchar_t *, const wchar_t *, size_t);
177132718Skansize_t	wcslcpy(wchar_t *, const wchar_t *, size_t);
178132718Skan#endif
179132718Skan__END_DECLS
180132718Skan
181169689Skan#define	getwc(fp)	fgetwc(fp)
182169689Skan#define	getwchar()	fgetwc(stdin)
183169689Skan#define	putwc(wc, fp)	fputwc((wc), (fp))
184169689Skan#define	putwchar(wc)	fputwc((wc), stdout)
185169689Skan
186169689Skan#endif /* !_WCHAR_H_ */
187169689Skan