wchar.h revision 103058
1139825Simp/*-
2139825Simp * Copyright (c)1999 Citrus Project,
344574Sphk * All rights reserved.
475540Sjhay *
544574Sphk * Redistribution and use in source and binary forms, with or without
644574Sphk * modification, are permitted provided that the following conditions
744574Sphk * are met:
844574Sphk * 1. Redistributions of source code must retain the above copyright
944574Sphk *    notice, this list of conditions and the following disclaimer.
1044574Sphk * 2. Redistributions in binary form must reproduce the above copyright
1144574Sphk *    notice, this list of conditions and the following disclaimer in the
1244574Sphk *    documentation and/or other materials provided with the distribution.
1344574Sphk *
1444574Sphk * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1544574Sphk * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1644574Sphk * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1744574Sphk * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1844574Sphk * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
192291Sjkh * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
202291Sjkh * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
212291Sjkh * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
222291Sjkh * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2375540Sjhay * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2465432Sphk * SUCH DAMAGE.
2565432Sphk *
2665432Sphk * $FreeBSD: head/include/wchar.h 103058 2002-09-07 03:38:13Z tjr $
2744574Sphk */
2844574Sphk
2944574Sphk/*-
3021101Sjhay * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
3121101Sjhay * All rights reserved.
3221101Sjhay *
332291Sjkh * This code is derived from software contributed to The NetBSD Foundation
342291Sjkh * by Julian Coleman.
352291Sjkh *
362291Sjkh * Redistribution and use in source and binary forms, with or without
372291Sjkh * modification, are permitted provided that the following conditions
382291Sjkh * are met:
392291Sjkh * 1. Redistributions of source code must retain the above copyright
402291Sjkh *    notice, this list of conditions and the following disclaimer.
412291Sjkh * 2. Redistributions in binary form must reproduce the above copyright
422291Sjkh *    notice, this list of conditions and the following disclaimer in the
432291Sjkh *    documentation and/or other materials provided with the distribution.
442291Sjkh * 3. All advertising materials mentioning features or use of this software
452291Sjkh *    must display the following acknowledgement:
462291Sjkh *        This product includes software developed by the NetBSD
4755205Speter *        Foundation, Inc. and its contributors.
4855205Speter * 4. Neither the name of The NetBSD Foundation nor the names of its
492291Sjkh *    contributors may be used to endorse or promote products derived
502291Sjkh *    from this software without specific prior written permission.
512291Sjkh *
522291Sjkh * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
5344574Sphk * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
542291Sjkh * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
552291Sjkh * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
5644574Sphk * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
5744574Sphk * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
5844574Sphk * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
5944574Sphk * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
6044574Sphk * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
6144574Sphk * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
6244574Sphk * POSSIBILITY OF SUCH DAMAGE.
6344574Sphk *
642291Sjkh *	$NetBSD: wchar.h,v 1.8 2000/12/22 05:31:42 itojun Exp $
652291Sjkh */
662291Sjkh
672291Sjkh#ifndef _WCHAR_H_
682291Sjkh#define _WCHAR_H_
692291Sjkh
7044666Sphk#include <sys/cdefs.h>
712291Sjkh#include <sys/_types.h>
7244574Sphk
7344666Sphk#include <stdio.h>
7444574Sphk
7544574Sphk#ifndef NULL
7644574Sphk#define NULL	0
7744574Sphk#endif
782291Sjkh
792291Sjkh#ifndef _MBSTATE_T_DECLARED
802291Sjkhtypedef	__mbstate_t	mbstate_t;
812291Sjkh#define	_MBSTATE_T_DECLARED
822291Sjkh#endif
832291Sjkh
8444574Sphk#ifndef _SIZE_T_DECLARED
852291Sjkhtypedef	__size_t	size_t;
8644574Sphk#define	_SIZE_T_DECLARED
8744666Sphk#endif
8844574Sphk
892291Sjkh#ifndef	__cplusplus
9044574Sphk#ifndef _WCHAR_T_DECLARED
9144574Sphktypedef	__wchar_t	wchar_t;
9244574Sphk#define	_WCHAR_T_DECLARED
9344574Sphk#endif
9444574Sphk#endif
952291Sjkh
962291Sjkh#ifndef _WCTYPE_T
9745294Sphktypedef	unsigned long	wctype_t;
9865432Sphk#define	_WCTYPE_T
992291Sjkh#endif
100250889Sed
101250889Sed#ifndef _WINT_T_DECLARED
102250889Sedtypedef	__wint_t	wint_t;
1032291Sjkh#define	_WINT_T_DECLARED
1042291Sjkh#endif
1052291Sjkh
1062291Sjkh#ifndef WEOF
1072291Sjkh#define	WEOF 	((wint_t)-1)
10844574Sphk#endif
10944574Sphk
11044574Sphk__BEGIN_DECLS
11144574Sphkwint_t	btowc(int);
11244574Sphkwint_t	fgetwc(FILE *);
11344574Sphkwchar_t	*
11444574Sphk	fgetws(wchar_t * __restrict, int, FILE * __restrict);
1152291Sjkhwint_t	fputwc(wchar_t, FILE *);
11644574Sphkint	fputws(const wchar_t * __restrict, FILE * __restrict);
11744574Sphkint	fwide(FILE *, int);
11844574Sphkwint_t	getwc(FILE *);
11945294Sphkwint_t	getwchar(void);
12044574Sphksize_t	mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
12144574Sphksize_t	mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
12250656Sphk	    mbstate_t * __restrict);
1232291Sjkhint	mbsinit(const mbstate_t *);
1242291Sjkhsize_t	mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
1252291Sjkh	    mbstate_t * __restrict);
12644574Sphkwint_t	putwc(wchar_t, FILE *);
1272291Sjkhwint_t	putwchar(wchar_t);
12845294Sphkwint_t	ungetwc(wint_t, FILE *);
1292291Sjkhsize_t	wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
1302291Sjkhwchar_t	*wcscat(wchar_t * __restrict, const wchar_t * __restrict);
1312291Sjkhwchar_t	*wcschr(const wchar_t *, wchar_t);
1322291Sjkhint	wcscmp(const wchar_t *, const wchar_t *);
1332291Sjkhwchar_t	*wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
1342291Sjkhsize_t	wcscspn(const wchar_t *, const wchar_t *);
13544574Sphksize_t	wcslcat(wchar_t *, const wchar_t *, size_t);
13650656Sphksize_t	wcslcpy(wchar_t *, const wchar_t *, size_t);
13765432Sphksize_t	wcslen(const wchar_t *);
13844574Sphkwchar_t	*wcsncat(wchar_t * __restrict, const wchar_t * __restrict,
13944574Sphk	    size_t);
14044574Sphkint	wcsncmp(const wchar_t *, const wchar_t *, size_t);
14144574Sphkwchar_t	*wcsncpy(wchar_t * __restrict , const wchar_t * __restrict, size_t);
1422291Sjkhwchar_t	*wcspbrk(const wchar_t *, const wchar_t *);
1432291Sjkhwchar_t	*wcsrchr(const wchar_t *, wchar_t);
1442291Sjkhsize_t	wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
1452291Sjkh	    mbstate_t * __restrict);
1462291Sjkhsize_t	wcsspn(const wchar_t *, const wchar_t *);
1472291Sjkhwchar_t	*wcsstr(const wchar_t * __restrict, const wchar_t * __restrict);
1482291Sjkhint	wctob(wint_t);
14944574Sphkwchar_t	*wmemchr(const wchar_t *, wchar_t, size_t);
1502291Sjkhint	wmemcmp(const wchar_t *, const wchar_t *, size_t);
1512291Sjkhwchar_t	*wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
1522291Sjkhwchar_t	*wmemmove(wchar_t *, const wchar_t *, size_t);
15321101Sjhaywchar_t	*wmemset(wchar_t *, wchar_t, size_t);
1542291Sjkh
1552291Sjkh#if __XSI_VISIBLE
1562291Sjkhint	wcswidth(const wchar_t *, size_t);
1572291Sjkhint	wcwidth(wchar_t);
1582291Sjkh#endif
15944574Sphk__END_DECLS
16044574Sphk
16144574Sphk#define	getwc(fp)	fgetwc(fp)
1622291Sjkh#define getwchar()	fgetwc(stdin)
1632291Sjkh#define putwc(wc, fp)	fputwc(wc, fp)
16444574Sphk#define putwchar(wc)	fputwc(wc, stdout)
1652291Sjkh
1662291Sjkh#endif /* !_WCHAR_H_ */
1672291Sjkh