version 1.1.2.1, 2000/05/28 22:41:02 |
version 1.25.2.1, 2006/08/27 06:15:47 |
|
|
|
/* $NetBSD$ */ |
|
|
/*- |
/*- |
* Copyright (c)1999 Citrus Project, |
* Copyright (c)1999 Citrus Project, |
* All rights reserved. |
* All rights reserved. |
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
|
*/ |
|
|
|
/*- |
|
* Copyright (c) 1999, 2000 The NetBSD Foundation, Inc. |
|
* All rights reserved. |
|
* |
|
* This code is derived from software contributed to The NetBSD Foundation |
|
* by Julian Coleman. |
|
* |
|
* Redistribution and use in source and binary forms, with or without |
|
* modification, are permitted provided that the following conditions |
|
* are met: |
|
* 1. Redistributions of source code must retain the above copyright |
|
* notice, this list of conditions and the following disclaimer. |
|
* 2. Redistributions in binary form must reproduce the above copyright |
|
* notice, this list of conditions and the following disclaimer in the |
|
* documentation and/or other materials provided with the distribution. |
|
* 3. All advertising materials mentioning features or use of this software |
|
* must display the following acknowledgement: |
|
* This product includes software developed by the NetBSD |
|
* Foundation, Inc. and its contributors. |
|
* 4. Neither the name of The NetBSD Foundation nor the names of its |
|
* contributors may be used to endorse or promote products derived |
|
* from this software without specific prior written permission. |
* |
* |
* $Id$ |
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS |
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS |
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
|
* POSSIBILITY OF SUCH DAMAGE. |
*/ |
*/ |
|
|
#ifndef _WCHAR_H_ |
#ifndef _WCHAR_H_ |
#define _WCHAR_H_ |
#define _WCHAR_H_ |
|
|
#undef __IN_WCHAR_H |
#include <sys/cdefs.h> |
#define __IN_WCHAR_H |
#include <sys/featuretest.h> |
#include <wctype.h> |
#include <machine/ansi.h> |
#undef __IN_WCHAR_H |
#include <machine/wchar_limits.h> |
|
#include <sys/null.h> |
|
|
#ifdef _BSD_SIZE_T_ |
#include <stdio.h> /* for FILE* */ |
typedef _BSD_SIZE_T_ size_t; |
|
#undef _BSD_SIZE_T_ |
|
#endif |
|
|
|
#ifdef _BSD_WCHAR_T_ |
#ifdef _BSD_WCHAR_T_ |
typedef _BSD_WCHAR_T_ wchar_t; |
typedef _BSD_WCHAR_T_ wchar_t; |
#undef _BSD_WCHAR_T_ |
#undef _BSD_WCHAR_T_ |
#endif |
#endif |
|
|
#ifdef _BSD_MBSTATE_T_ |
#ifdef _BSD_MBSTATE_T_ |
typedef _BSD_MBSTATE_T_ mbstate_t; |
typedef _BSD_MBSTATE_T_ mbstate_t; |
#undef _BSD_MBSTATE_T_ |
#undef _BSD_MBSTATE_T_ |
#endif |
#endif |
|
|
#ifndef WCHAR_MAX |
#ifdef _BSD_WINT_T_ |
#define WCHAR_MAX (2147483647) |
typedef _BSD_WINT_T_ wint_t; |
|
#undef _BSD_WINT_T_ |
#endif |
#endif |
|
|
#ifndef WCHAR_MIN |
#ifdef _BSD_SIZE_T_ |
#define WCHAR_MIN (0) |
typedef _BSD_SIZE_T_ size_t; |
|
#undef _BSD_SIZE_T_ |
#endif |
#endif |
|
|
#ifndef NULL |
struct tm; |
#define NULL (0) |
|
#endif |
|
|
|
__BEGIN_DECLS |
__BEGIN_DECLS |
#if 0 /* XXX: not implemented */ |
wint_t btowc(int); |
/* |
size_t mbrlen(const char * __restrict, size_t, mbstate_t * __restrict); |
wint_t btowc __P((int)); |
size_t mbrtowc(wchar_t * __restrict, const char * __restrict, size_t, |
int fwprintf __P((FILE *, const wchar_t *, ...)); |
mbstate_t * __restrict); |
int fwscanf __P((FILE *, const wchar_t *, ...)); |
int mbsinit(const mbstate_t *); |
*/ |
size_t mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t, |
#endif /* XXX: not implemented */ |
mbstate_t * __restrict); |
#if 0 |
size_t wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict); |
/* defined in wctype.h commonly */ |
wchar_t *wcscat(wchar_t * __restrict, const wchar_t * __restrict); |
/* |
wchar_t *wcschr(const wchar_t *, wchar_t); |
int iswalnum __P((wint_t)); |
int wcscmp(const wchar_t *, const wchar_t *); |
int iswalpha __P((wint_t)); |
int wcscoll(const wchar_t *, const wchar_t *); |
int iswcntrl __P((wint_t)); |
wchar_t *wcscpy(wchar_t * __restrict, const wchar_t * __restrict); |
int iswdigit __P((wint_t)); |
size_t wcscspn(const wchar_t *, const wchar_t *); |
int iswgraph __P((wint_t)); |
size_t wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict, |
int iswlower __P((wint_t)); |
const struct tm * __restrict); |
int iswprint __P((wint_t)); |
size_t wcslen(const wchar_t *); |
int iswpunct __P((wint_t)); |
wchar_t *wcsncat(wchar_t * __restrict, const wchar_t * __restrict, size_t); |
int iswspace __P((wint_t)); |
int wcsncmp(const wchar_t *, const wchar_t *, size_t); |
int iswupper __P((wint_t)); |
wchar_t *wcsncpy(wchar_t * __restrict , const wchar_t * __restrict, size_t); |
int iswxdigit __P((wint_t)); |
wchar_t *wcspbrk(const wchar_t *, const wchar_t *); |
*/ |
wchar_t *wcsrchr(const wchar_t *, wchar_t); |
#endif |
size_t wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t, |
#if 0 /* XXX: not implemented */ |
mbstate_t * __restrict); |
/* |
size_t wcsspn(const wchar_t *, const wchar_t *); |
int iswctype __P((wint_t, wctype_t)); |
wchar_t *wcsstr(const wchar_t *, const wchar_t *); |
wint_t fgetwc __P((FILE *)); |
wchar_t *wcstok(wchar_t * __restrict, const wchar_t * __restrict, |
wchar_t *fgetws __P((wchar_t *, int, FILE *)); |
wchar_t ** __restrict); |
wint_t fputwc __P((wchar_t, FILE *)); |
size_t wcsxfrm(wchar_t *, const wchar_t *, size_t); |
int fputws __P((const wchar_t *, FILE *)); |
wchar_t *wcswcs(const wchar_t *, const wchar_t *); |
int fwide __P((FILE *, int)); |
wchar_t *wmemchr(const wchar_t *, wchar_t, size_t); |
wint_t getwc __P((FILE *)); |
int wmemcmp(const wchar_t *, const wchar_t *, size_t); |
wint_t getwchar __P((void)); |
wchar_t *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t); |
*/ |
wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); |
#endif /* XXX: not implemented */ |
wchar_t *wmemset(wchar_t *, wchar_t, size_t); |
int mbsinit __P((const mbstate_t *)); |
|
size_t mbrlen __P((const char *, size_t, mbstate_t *)); |
size_t wcslcat(wchar_t *, const wchar_t *, size_t); |
size_t mbrtowc __P((wchar_t *, const char *, size_t, |
size_t wcslcpy(wchar_t *, const wchar_t *, size_t); |
mbstate_t *)); |
int wcswidth(const wchar_t *, size_t); |
size_t mbsrtowcs __P((wchar_t *, const char **, size_t, |
int wctob(wint_t); |
mbstate_t *)); |
int wcwidth(wchar_t); |
#if 0 /* XXX: not implemented */ |
|
/* |
unsigned long int wcstoul(const wchar_t * __restrict, |
wint_t putwc __P((wchar_t, FILE *)); |
wchar_t ** __restrict, int); |
wint_t putwchar __P((wchar_t)); |
long int wcstol(const wchar_t * __restrict, |
int swprintf __P((wchar_t *, size_t, const wchar_t *, ...)); |
wchar_t ** __restrict, int); |
int swscanf __P((const wchar_t *, const wchar_t *, ...)); |
double wcstod(const wchar_t * __restrict, wchar_t ** __restrict); |
*/ |
|
#endif /* XXX: not implemented */ |
#if defined(_ISOC99_SOURCE) || (__STDC_VERSION__ - 0) > 199901L || \ |
#if 0 /* defined in wctype.h commonly */ |
defined(_NETBSD_SOURCE) |
/* |
float wcstof(const wchar_t * __restrict, wchar_t ** __restrict); |
wint_t towlower __P((wint_t)); |
long double wcstold(const wchar_t * __restrict, wchar_t ** __restrict); |
wint_t towupper __P((wint_t)); |
|
*/ |
/* LONGLONG */ |
#endif |
long long int wcstoll(const wchar_t * __restrict, |
#if 0 /* XXX: not implemented */ |
wchar_t ** __restrict, int); |
/* |
/* LONGLONG */ |
wint_t ungetwc __P((wint_t, FILE *)); |
unsigned long long int wcstoull(const wchar_t * __restrict, |
int vfwprintf __P((FILE *, const wchar_t *, va_list)); |
wchar_t ** __restrict, int); |
int vwprintf __P((const wchar_t *, va_list)); |
#endif |
int vswprintf __P((wchar_t *, size_t, const wchar_t *, |
|
va_list)); |
wint_t ungetwc(wint_t, FILE *); |
*/ |
wint_t fgetwc(FILE *); |
#endif /* XXX: not implemented */ |
wchar_t *fgetws(wchar_t * __restrict, int, FILE * __restrict); |
size_t wcrtomb __P((char *, wchar_t, mbstate_t *)); |
wint_t getwc(FILE *); |
wchar_t *wcscat __P((wchar_t *, const wchar_t *)); |
wint_t getwchar(void); |
wchar_t *wcschr __P((const wchar_t *, wchar_t)); |
wint_t fputwc(wchar_t, FILE *); |
int wcscmp __P((const wchar_t *, const wchar_t *)); |
int fputws(const wchar_t * __restrict, FILE * __restrict); |
#if 0 /* XXX: not implemented */ |
wint_t putwc(wchar_t, FILE *); |
/* |
wint_t putwchar(wchar_t); |
int wcscoll __P((const wchar_t *, const wchar_t *)); |
|
*/ |
int fwide(FILE *, int); |
#endif /* XXX: not implemented */ |
|
wchar_t *wcscpy __P((wchar_t *, const wchar_t *)); |
wchar_t *fgetwln(FILE * __restrict, size_t * __restrict); |
size_t wcscspn __P((const wchar_t *, const wchar_t *)); |
int fwprintf(FILE * __restrict, const wchar_t * __restrict, ...); |
#if 0 /* XXX: not implemented */ |
int fwscanf(FILE * __restrict, const wchar_t * __restrict, ...); |
/* |
int swprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict, ...); |
size_t wcsftime __P((wchar_t *, size_t, const wchar_t *, |
int swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...); |
const struct tm *)); |
int vfwprintf(FILE * __restrict, const wchar_t * __restrict, _BSD_VA_LIST_); |
*/ |
int vswprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict, |
#endif /* XXX: not implemented */ |
_BSD_VA_LIST_); |
size_t wcslen __P((const wchar_t *)); |
int vwprintf(const wchar_t * __restrict, _BSD_VA_LIST_); |
wchar_t *wcsncat __P((wchar_t *, const wchar_t *, size_t)); |
int wprintf(const wchar_t * __restrict, ...); |
int wcsncmp __P((const wchar_t *, const wchar_t *, |
int wscanf(const wchar_t * __restrict, ...); |
size_t)); |
#if defined(_ISOC99_SOURCE) || (__STDC_VERSION__ - 0) > 199901L || \ |
wchar_t *wcsncpy __P((wchar_t *, const wchar_t *, size_t)); |
defined(_NETBSD_SOURCE) |
wchar_t *wcspbrk __P((const wchar_t *, const wchar_t *)); |
int vfwscanf(FILE * __restrict, const wchar_t * __restrict, _BSD_VA_LIST_); |
wchar_t *wcsrchr __P((const wchar_t *, wchar_t)); |
int vswscanf(const wchar_t * __restrict, const wchar_t * __restrict, |
size_t wcsrtombs __P((char *, const wchar_t **, size_t, |
_BSD_VA_LIST_); |
mbstate_t *)); |
int vwscanf(const wchar_t * __restrict, _BSD_VA_LIST_); |
size_t wcsspn __P((const wchar_t *, const wchar_t *)); |
#endif |
wchar_t *wcsstr __P((const wchar_t *, const wchar_t *)); |
#if defined(_NETBSD_SOURCE) |
#if 0 /* XXX: not implemented */ |
struct tinfo; |
/* |
int t_putws(struct tinfo *, const wchar_t *, int, void (*)(wchar_t, void *), |
double wcstod __P((const wchar_t *, wchar_t **)); |
void *); |
wchar_t *wcstok __P((wchar_t *, const wchar_t *, wchar_t **)); |
wchar_t *wcsdup (const wchar_t *); |
long int wcstol __P((const wchar_t *, wchar_t **, int)); |
int wcsncasecmp (const wchar_t *, const wchar_t *, size_t); |
unsigned long int wcstoul __P((const wchar_t *, wchar_t **, int)); |
int wcscasecmp(const wchar_t *, const wchar_t *); |
wchar_t *wcswcs __P((const wchar_t *, const wchar_t *)); |
#endif |
*/ |
|
#endif /* XXX: not implemented */ |
|
int wcswidth __P((const wchar_t *, size_t)); |
|
#if 0 /* XXX: not implemented */ |
|
/* |
|
size_t wcsxfrm __P((wchar_t *, const wchar_t *, size_t)); |
|
int wctob __P((wint_t)); |
|
wctype_t wctype __P((const char *)); |
|
*/ |
|
#endif /* XXX: not implemented */ |
|
int wcwidth __P((wchar_t)); |
|
wchar_t *wmemchr __P((const wchar_t *, wchar_t, size_t)); |
|
int wmemcmp __P((const wchar_t *, const wchar_t *, |
|
size_t)); |
|
wchar_t *wmemcpy __P((wchar_t *, const wchar_t *, size_t)); |
|
wchar_t *wmemmove __P((wchar_t *, const wchar_t *, size_t)); |
|
wchar_t *wmemset __P((wchar_t *, wchar_t, size_t)); |
|
#if 0 /* XXX: not implemented */ |
|
/* |
|
int wprintf __P((const wchar_t *, ...)); |
|
int wscanf __P((const wchar_t *, ...)); |
|
*/ |
|
#endif /* XXX: not implemented */ |
|
__END_DECLS |
__END_DECLS |
|
|
#if defined(__FreeBSD__) |
#ifndef WEOF |
#define wcwidth(c) ((unsigned)__maskrune_w((c), _SWM)>>_SWS) |
#define WEOF ((wint_t)-1) |
#endif |
#endif |
|
|
#endif |
#define getwc(f) fgetwc(f) |
|
#define getwchar() getwc(stdin) |
|
#define putwc(wc, f) fputwc((wc), (f)) |
|
#define putwchar(wc) putwc((wc), stdout) |
|
|
|
#endif /* !_WCHAR_H_ */ |