wchar.h revision 130185
176633Stshiozak/*-
276633Stshiozak * Copyright (c)1999 Citrus Project,
376633Stshiozak * All rights reserved.
476633Stshiozak *
576633Stshiozak * Redistribution and use in source and binary forms, with or without
676633Stshiozak * modification, are permitted provided that the following conditions
776633Stshiozak * are met:
876633Stshiozak * 1. Redistributions of source code must retain the above copyright
976633Stshiozak *    notice, this list of conditions and the following disclaimer.
1076633Stshiozak * 2. Redistributions in binary form must reproduce the above copyright
1176633Stshiozak *    notice, this list of conditions and the following disclaimer in the
1276633Stshiozak *    documentation and/or other materials provided with the distribution.
1376633Stshiozak *
1476633Stshiozak * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1576633Stshiozak * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1676633Stshiozak * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1776633Stshiozak * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1876633Stshiozak * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1976633Stshiozak * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2076633Stshiozak * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2176633Stshiozak * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2276633Stshiozak * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2376633Stshiozak * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2476633Stshiozak * SUCH DAMAGE.
2576633Stshiozak *
2676633Stshiozak * $FreeBSD: head/include/wchar.h 130185 2004-06-07 10:31:10Z tjr $
2776633Stshiozak */
2876633Stshiozak
2976633Stshiozak/*-
3076633Stshiozak * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
3176633Stshiozak * All rights reserved.
3276633Stshiozak *
3376633Stshiozak * This code is derived from software contributed to The NetBSD Foundation
3476633Stshiozak * by Julian Coleman.
3576633Stshiozak *
3676633Stshiozak * Redistribution and use in source and binary forms, with or without
3776633Stshiozak * modification, are permitted provided that the following conditions
3876633Stshiozak * are met:
3976633Stshiozak * 1. Redistributions of source code must retain the above copyright
4076633Stshiozak *    notice, this list of conditions and the following disclaimer.
4176633Stshiozak * 2. Redistributions in binary form must reproduce the above copyright
4276633Stshiozak *    notice, this list of conditions and the following disclaimer in the
4376633Stshiozak *    documentation and/or other materials provided with the distribution.
4476633Stshiozak * 3. All advertising materials mentioning features or use of this software
4576633Stshiozak *    must display the following acknowledgement:
4676633Stshiozak *        This product includes software developed by the NetBSD
4776633Stshiozak *        Foundation, Inc. and its contributors.
4876633Stshiozak * 4. Neither the name of The NetBSD Foundation nor the names of its
4976633Stshiozak *    contributors may be used to endorse or promote products derived
5076633Stshiozak *    from this software without specific prior written permission.
5176633Stshiozak *
5276633Stshiozak * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
5376633Stshiozak * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
5476633Stshiozak * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
5576633Stshiozak * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
5676633Stshiozak * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
5776633Stshiozak * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
5876633Stshiozak * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
5976633Stshiozak * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
6076633Stshiozak * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
6176633Stshiozak * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
6276633Stshiozak * POSSIBILITY OF SUCH DAMAGE.
6379555Sobrien *
6479555Sobrien *	$NetBSD: wchar.h,v 1.8 2000/12/22 05:31:42 itojun Exp $
6576633Stshiozak */
6676633Stshiozak
6776633Stshiozak#ifndef _WCHAR_H_
6876633Stshiozak#define _WCHAR_H_
6976633Stshiozak
7076633Stshiozak#include <sys/cdefs.h>
71123257Smarcel#include <sys/_null.h>
72102227Smike#include <sys/_types.h>
73114185Skan#include <machine/_limits.h>
74101776Stjr
75102227Smike#ifndef _MBSTATE_T_DECLARED
76102227Smiketypedef	__mbstate_t	mbstate_t;
77102227Smike#define	_MBSTATE_T_DECLARED
78101409Stjr#endif
79101409Stjr
80102227Smike#ifndef _SIZE_T_DECLARED
81102227Smiketypedef	__size_t	size_t;
82102227Smike#define	_SIZE_T_DECLARED
83101409Stjr#endif
84101409Stjr
8599640Sobrien#ifndef	__cplusplus
86102227Smike#ifndef _WCHAR_T_DECLARED
87102227Smiketypedef	__wchar_t	wchar_t;
88102227Smike#define	_WCHAR_T_DECLARED
8976633Stshiozak#endif
9099640Sobrien#endif
9176633Stshiozak
92102227Smike#ifndef _WINT_T_DECLARED
93102227Smiketypedef	__wint_t	wint_t;
94102227Smike#define	_WINT_T_DECLARED
9576633Stshiozak#endif
9676633Stshiozak
97114185Skan#ifndef	WCHAR_MIN
98114185Skan#define	WCHAR_MIN	__INT_MIN
99114185Skan#define	WCHAR_MAX	__INT_MAX
100114185Skan#endif
101114185Skan
10276633Stshiozak#ifndef WEOF
10376633Stshiozak#define	WEOF 	((wint_t)-1)
10476633Stshiozak#endif
10576633Stshiozak
106103177Stjrstruct __sFILE;
107103218Stjrstruct tm;
108103177Stjr
10976633Stshiozak__BEGIN_DECLS
110101411Stjrwint_t	btowc(int);
111103177Stjrwint_t	fgetwc(struct __sFILE *);
112101776Stjrwchar_t	*
113103177Stjr	fgetws(wchar_t * __restrict, int, struct __sFILE * __restrict);
114103177Stjrwint_t	fputwc(wchar_t, struct __sFILE *);
115103177Stjrint	fputws(const wchar_t * __restrict, struct __sFILE * __restrict);
116103177Stjrint	fwide(struct __sFILE *, int);
117103739Stjrint	fwprintf(struct __sFILE * __restrict, const wchar_t * __restrict, ...);
118103856Stjrint	fwscanf(struct __sFILE * __restrict, const wchar_t * __restrict, ...);
119103177Stjrwint_t	getwc(struct __sFILE *);
120101776Stjrwint_t	getwchar(void);
12193032Simpsize_t	mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
12293032Simpsize_t	mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
12393032Simp	    mbstate_t * __restrict);
12493032Simpint	mbsinit(const mbstate_t *);
12593032Simpsize_t	mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
12693032Simp	    mbstate_t * __restrict);
127103177Stjrwint_t	putwc(wchar_t, struct __sFILE *);
128101776Stjrwint_t	putwchar(wchar_t);
129103739Stjrint	swprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict,
130103739Stjr	    ...);
131103856Stjrint	swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...);
132103177Stjrwint_t	ungetwc(wint_t, struct __sFILE *);
133103739Stjrint	vfwprintf(struct __sFILE * __restrict, const wchar_t * __restrict,
134103739Stjr	    __va_list);
135103739Stjrint	vswprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict,
136103739Stjr	    __va_list);
137103739Stjrint	vwprintf(const wchar_t * __restrict, __va_list);
13893032Simpsize_t	wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
13993032Simpwchar_t	*wcscat(wchar_t * __restrict, const wchar_t * __restrict);
14093032Simpwchar_t	*wcschr(const wchar_t *, wchar_t);
14193032Simpint	wcscmp(const wchar_t *, const wchar_t *);
142104443Stjrint	wcscoll(const wchar_t *, const wchar_t *);
14393032Simpwchar_t	*wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
14493032Simpsize_t	wcscspn(const wchar_t *, const wchar_t *);
145103218Stjrsize_t	wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict,
146103218Stjr	    const struct tm * __restrict);
14793032Simpsize_t	wcslen(const wchar_t *);
14893032Simpwchar_t	*wcsncat(wchar_t * __restrict, const wchar_t * __restrict,
14993032Simp	    size_t);
15093032Simpint	wcsncmp(const wchar_t *, const wchar_t *, size_t);
15193032Simpwchar_t	*wcsncpy(wchar_t * __restrict , const wchar_t * __restrict, size_t);
15293032Simpwchar_t	*wcspbrk(const wchar_t *, const wchar_t *);
15393032Simpwchar_t	*wcsrchr(const wchar_t *, wchar_t);
15493032Simpsize_t	wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
15593032Simp	    mbstate_t * __restrict);
15693032Simpsize_t	wcsspn(const wchar_t *, const wchar_t *);
157103058Stjrwchar_t	*wcsstr(const wchar_t * __restrict, const wchar_t * __restrict);
158104443Stjrsize_t	wcsxfrm(wchar_t * __restrict, const wchar_t * __restrict, size_t);
159102142Sacheint	wctob(wint_t);
160103339Stjrdouble	wcstod(const wchar_t * __restrict, wchar_t ** __restrict);
161103067Stjrwchar_t	*wcstok(wchar_t * __restrict, const wchar_t * __restrict,
162103067Stjr	    wchar_t ** __restrict);
163103097Stjrlong	 wcstol(const wchar_t * __restrict, wchar_t ** __restrict, int);
164103097Stjrunsigned long
165103097Stjr	 wcstoul(const wchar_t * __restrict, wchar_t ** __restrict, int);
166101411Stjrwchar_t	*wmemchr(const wchar_t *, wchar_t, size_t);
167101411Stjrint	wmemcmp(const wchar_t *, const wchar_t *, size_t);
168101411Stjrwchar_t	*wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
169101411Stjrwchar_t	*wmemmove(wchar_t *, const wchar_t *, size_t);
170101411Stjrwchar_t	*wmemset(wchar_t *, wchar_t, size_t);
171103739Stjrint	wprintf(const wchar_t * __restrict, ...);
172103856Stjrint	wscanf(const wchar_t * __restrict, ...);
173102198Stjr
174129774Stjr#ifndef _STDSTREAM_DECLARED
175129774Stjrextern struct __sFILE *__stdinp;
176129774Stjrextern struct __sFILE *__stdoutp;
177129774Stjrextern struct __sFILE *__stderrp;
178129774Stjr#define	_STDSTREAM_DECLARED
179129774Stjr#endif
180129774Stjr
181129774Stjr#define	getwc(fp)	fgetwc(fp)
182129774Stjr#define	getwchar()	fgetwc(__stdinp)
183130185Stjr#define	putwc(wc, fp)	fputwc(wc, fp)
184129774Stjr#define	putwchar(wc)	fputwc(wc, __stdoutp)
185129774Stjr
186106035Stjr#if __ISO_C_VISIBLE >= 1999
187106035Stjrint	vfwscanf(struct __sFILE * __restrict, const wchar_t * __restrict,
188106035Stjr	    __va_list);
189106035Stjrint	vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
190106035Stjr	    __va_list);
191106035Stjrint	vwscanf(const wchar_t * __restrict, __va_list);
192112177Stjrfloat	wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
193112177Stjrlong double
194112177Stjr	wcstold(const wchar_t * __restrict, wchar_t ** __restrict);
195106035Stjr#ifdef __LONG_LONG_SUPPORTED
196106035Stjr/* LONGLONG */
197106035Stjrlong long
198106035Stjr	wcstoll(const wchar_t * __restrict, wchar_t ** __restrict, int);
199106035Stjr/* LONGLONG */
200106035Stjrunsigned long long
201106035Stjr	 wcstoull(const wchar_t * __restrict, wchar_t ** __restrict, int);
202106035Stjr#endif
203106035Stjr#endif	/* __ISO_C_VISIBLE >= 1999 */
204106035Stjr
205102198Stjr#if __XSI_VISIBLE
206102198Stjrint	wcswidth(const wchar_t *, size_t);
207102198Stjrint	wcwidth(wchar_t);
208102198Stjr#endif
209103737Stjr
210103737Stjr#if __BSD_VISIBLE
211103737Stjrsize_t	wcslcat(wchar_t *, const wchar_t *, size_t);
212103737Stjrsize_t	wcslcpy(wchar_t *, const wchar_t *, size_t);
213103737Stjr#endif
21476633Stshiozak__END_DECLS
21576633Stshiozak
21676633Stshiozak#endif /* !_WCHAR_H_ */
217