Home | History | Annotate | Line # | Download | only in include
wchar.h revision 1.25.2.1
      1  1.25.2.1       riz /*	$NetBSD: wchar.h,v 1.25.2.1 2006/08/27 06:15:47 riz Exp $	*/
      2       1.2    itojun 
      3       1.2    itojun /*-
      4       1.2    itojun  * Copyright (c)1999 Citrus Project,
      5       1.2    itojun  * All rights reserved.
      6       1.2    itojun  *
      7       1.2    itojun  * Redistribution and use in source and binary forms, with or without
      8       1.2    itojun  * modification, are permitted provided that the following conditions
      9       1.2    itojun  * are met:
     10       1.2    itojun  * 1. Redistributions of source code must retain the above copyright
     11       1.2    itojun  *    notice, this list of conditions and the following disclaimer.
     12       1.2    itojun  * 2. Redistributions in binary form must reproduce the above copyright
     13       1.2    itojun  *    notice, this list of conditions and the following disclaimer in the
     14       1.2    itojun  *    documentation and/or other materials provided with the distribution.
     15       1.2    itojun  *
     16       1.2    itojun  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
     17       1.2    itojun  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     18       1.2    itojun  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     19       1.2    itojun  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
     20       1.2    itojun  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     21       1.2    itojun  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     22       1.2    itojun  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     23       1.2    itojun  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     24       1.2    itojun  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     25       1.2    itojun  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     26       1.2    itojun  * SUCH DAMAGE.
     27       1.2    itojun  */
     28       1.1    kleink 
     29       1.1    kleink /*-
     30       1.1    kleink  * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
     31       1.1    kleink  * All rights reserved.
     32       1.1    kleink  *
     33       1.1    kleink  * This code is derived from software contributed to The NetBSD Foundation
     34       1.1    kleink  * by Julian Coleman.
     35       1.1    kleink  *
     36       1.1    kleink  * Redistribution and use in source and binary forms, with or without
     37       1.1    kleink  * modification, are permitted provided that the following conditions
     38       1.1    kleink  * are met:
     39       1.1    kleink  * 1. Redistributions of source code must retain the above copyright
     40       1.1    kleink  *    notice, this list of conditions and the following disclaimer.
     41       1.1    kleink  * 2. Redistributions in binary form must reproduce the above copyright
     42       1.1    kleink  *    notice, this list of conditions and the following disclaimer in the
     43       1.1    kleink  *    documentation and/or other materials provided with the distribution.
     44       1.1    kleink  * 3. All advertising materials mentioning features or use of this software
     45       1.1    kleink  *    must display the following acknowledgement:
     46       1.1    kleink  *        This product includes software developed by the NetBSD
     47       1.1    kleink  *        Foundation, Inc. and its contributors.
     48       1.1    kleink  * 4. Neither the name of The NetBSD Foundation nor the names of its
     49       1.1    kleink  *    contributors may be used to endorse or promote products derived
     50       1.1    kleink  *    from this software without specific prior written permission.
     51       1.1    kleink  *
     52       1.1    kleink  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     53       1.1    kleink  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     54       1.1    kleink  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     55       1.1    kleink  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     56       1.1    kleink  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     57       1.1    kleink  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     58       1.1    kleink  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     59       1.1    kleink  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     60       1.1    kleink  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     61       1.1    kleink  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     62       1.1    kleink  * POSSIBILITY OF SUCH DAMAGE.
     63       1.1    kleink  */
     64       1.1    kleink 
     65       1.1    kleink #ifndef _WCHAR_H_
     66       1.1    kleink #define _WCHAR_H_
     67       1.1    kleink 
     68       1.2    itojun #include <sys/cdefs.h>
     69      1.18     bjh21 #include <sys/featuretest.h>
     70       1.1    kleink #include <machine/ansi.h>
     71      1.20    kleink #include <machine/wchar_limits.h>
     72       1.3    itojun #include <sys/null.h>
     73       1.1    kleink 
     74      1.11      yamt #include <stdio.h> /* for FILE* */
     75      1.11      yamt 
     76       1.1    kleink #ifdef	_BSD_WCHAR_T_
     77       1.1    kleink typedef	_BSD_WCHAR_T_	wchar_t;
     78       1.1    kleink #undef	_BSD_WCHAR_T_
     79       1.1    kleink #endif
     80       1.1    kleink 
     81       1.5    itojun #ifdef	_BSD_MBSTATE_T_
     82       1.5    itojun typedef	_BSD_MBSTATE_T_	mbstate_t;
     83       1.5    itojun #undef	_BSD_MBSTATE_T_
     84       1.5    itojun #endif
     85       1.5    itojun 
     86       1.1    kleink #ifdef	_BSD_WINT_T_
     87       1.1    kleink typedef	_BSD_WINT_T_	wint_t;
     88       1.1    kleink #undef	_BSD_WINT_T_
     89       1.1    kleink #endif
     90       1.1    kleink 
     91       1.1    kleink #ifdef	_BSD_SIZE_T_
     92       1.1    kleink typedef	_BSD_SIZE_T_	size_t;
     93       1.1    kleink #undef	_BSD_SIZE_T_
     94       1.1    kleink #endif
     95       1.2    itojun 
     96      1.22  christos struct tm;
     97      1.22  christos 
     98       1.2    itojun __BEGIN_DECLS
     99      1.21     perry wint_t	btowc(int);
    100      1.21     perry size_t	mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
    101      1.21     perry size_t	mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
    102      1.21     perry 	    mbstate_t * __restrict);
    103      1.21     perry int	mbsinit(const mbstate_t *);
    104      1.21     perry size_t	mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
    105      1.21     perry 	    mbstate_t * __restrict);
    106      1.21     perry size_t	wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
    107      1.21     perry wchar_t	*wcscat(wchar_t * __restrict, const wchar_t * __restrict);
    108      1.21     perry wchar_t	*wcschr(const wchar_t *, wchar_t);
    109      1.21     perry int	wcscmp(const wchar_t *, const wchar_t *);
    110      1.21     perry int	wcscoll(const wchar_t *, const wchar_t *);
    111      1.21     perry wchar_t	*wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
    112      1.21     perry size_t	wcscspn(const wchar_t *, const wchar_t *);
    113      1.22  christos size_t	wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict,
    114      1.22  christos 	    const struct tm * __restrict);
    115      1.21     perry size_t	wcslen(const wchar_t *);
    116      1.21     perry wchar_t	*wcsncat(wchar_t * __restrict, const wchar_t * __restrict, size_t);
    117      1.21     perry int	wcsncmp(const wchar_t *, const wchar_t *, size_t);
    118      1.21     perry wchar_t	*wcsncpy(wchar_t * __restrict , const wchar_t * __restrict, size_t);
    119      1.21     perry wchar_t	*wcspbrk(const wchar_t *, const wchar_t *);
    120      1.21     perry wchar_t	*wcsrchr(const wchar_t *, wchar_t);
    121      1.21     perry size_t	wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
    122      1.21     perry 	    mbstate_t * __restrict);
    123      1.21     perry size_t	wcsspn(const wchar_t *, const wchar_t *);
    124      1.21     perry wchar_t	*wcsstr(const wchar_t *, const wchar_t *);
    125      1.21     perry wchar_t *wcstok(wchar_t * __restrict, const wchar_t * __restrict,
    126      1.21     perry 		     wchar_t ** __restrict);
    127      1.21     perry size_t	wcsxfrm(wchar_t *, const wchar_t *, size_t);
    128      1.21     perry wchar_t	*wcswcs(const wchar_t *, const wchar_t *);
    129      1.21     perry wchar_t	*wmemchr(const wchar_t *, wchar_t, size_t);
    130      1.21     perry int	wmemcmp(const wchar_t *, const wchar_t *, size_t);
    131      1.21     perry wchar_t	*wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
    132      1.21     perry wchar_t	*wmemmove(wchar_t *, const wchar_t *, size_t);
    133      1.21     perry wchar_t	*wmemset(wchar_t *, wchar_t, size_t);
    134      1.21     perry 
    135      1.21     perry size_t	wcslcat(wchar_t *, const wchar_t *, size_t);
    136      1.21     perry size_t	wcslcpy(wchar_t *, const wchar_t *, size_t);
    137      1.21     perry int	wcswidth(const wchar_t *, size_t);
    138      1.21     perry int	wctob(wint_t);
    139      1.21     perry int	wcwidth(wchar_t);
    140      1.21     perry 
    141      1.21     perry unsigned long int wcstoul(const wchar_t * __restrict,
    142      1.21     perry 	wchar_t ** __restrict, int);
    143      1.21     perry long int wcstol(const wchar_t * __restrict,
    144      1.21     perry 	wchar_t ** __restrict, int);
    145      1.21     perry double wcstod(const wchar_t * __restrict, wchar_t ** __restrict);
    146      1.17  tshiozak 
    147      1.18     bjh21 #if defined(_ISOC99_SOURCE) || (__STDC_VERSION__ - 0) > 199901L || \
    148      1.18     bjh21     defined(_NETBSD_SOURCE)
    149      1.25   tnozaki float wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
    150      1.25   tnozaki long double wcstold(const wchar_t * __restrict, wchar_t ** __restrict);
    151      1.25   tnozaki 
    152      1.17  tshiozak /* LONGLONG */
    153      1.21     perry long long int wcstoll(const wchar_t * __restrict,
    154      1.21     perry 	wchar_t ** __restrict, int);
    155      1.17  tshiozak /* LONGLONG */
    156      1.21     perry unsigned long long int wcstoull(const wchar_t * __restrict,
    157      1.21     perry 	wchar_t ** __restrict, int);
    158      1.17  tshiozak #endif
    159      1.11      yamt 
    160      1.21     perry wint_t ungetwc(wint_t, FILE *);
    161      1.21     perry wint_t fgetwc(FILE *);
    162      1.21     perry wchar_t *fgetws(wchar_t * __restrict, int, FILE * __restrict);
    163      1.21     perry wint_t getwc(FILE *);
    164      1.21     perry wint_t getwchar(void);
    165      1.21     perry wint_t fputwc(wchar_t, FILE *);
    166      1.21     perry int fputws(const wchar_t * __restrict, FILE * __restrict);
    167      1.21     perry wint_t putwc(wchar_t, FILE *);
    168      1.21     perry wint_t putwchar(wchar_t);
    169      1.11      yamt 
    170      1.21     perry int fwide(FILE *, int);
    171      1.23  christos 
    172      1.23  christos wchar_t	*fgetwln(FILE * __restrict, size_t * __restrict);
    173      1.23  christos int fwprintf(FILE * __restrict, const wchar_t * __restrict, ...);
    174      1.23  christos int fwscanf(FILE * __restrict, const wchar_t * __restrict, ...);
    175      1.23  christos int swprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict, ...);
    176      1.23  christos int swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...);
    177      1.23  christos int vfwprintf(FILE * __restrict, const wchar_t * __restrict, _BSD_VA_LIST_);
    178      1.23  christos int vswprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
    179      1.23  christos     _BSD_VA_LIST_);
    180      1.23  christos int vwprintf(const wchar_t * __restrict, _BSD_VA_LIST_);
    181      1.23  christos int wprintf(const wchar_t * __restrict, ...);
    182      1.23  christos int wscanf(const wchar_t * __restrict, ...);
    183      1.23  christos #if defined(_ISOC99_SOURCE) || (__STDC_VERSION__ - 0) > 199901L || \
    184      1.23  christos     defined(_NETBSD_SOURCE)
    185      1.23  christos int vfwscanf(FILE * __restrict, const wchar_t * __restrict, _BSD_VA_LIST_);
    186      1.23  christos int vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
    187      1.23  christos     _BSD_VA_LIST_);
    188      1.23  christos int vwscanf(const wchar_t * __restrict, _BSD_VA_LIST_);
    189      1.23  christos #endif
    190      1.24  christos #if defined(_NETBSD_SOURCE)
    191      1.24  christos struct tinfo;
    192      1.24  christos int t_putws(struct tinfo *, const wchar_t *, int, void (*)(wchar_t, void *),
    193      1.24  christos     void *);
    194  1.25.2.1       riz wchar_t *wcsdup (const wchar_t *);
    195  1.25.2.1       riz int wcsncasecmp (const wchar_t *, const wchar_t *, size_t);
    196  1.25.2.1       riz int wcscasecmp(const wchar_t *, const wchar_t *);
    197      1.24  christos #endif
    198       1.2    itojun __END_DECLS
    199       1.1    kleink 
    200      1.21     perry #ifndef WEOF
    201      1.21     perry #define	WEOF 	((wint_t)-1)
    202      1.21     perry #endif
    203      1.21     perry 
    204      1.21     perry #define getwc(f) fgetwc(f)
    205      1.21     perry #define getwchar() getwc(stdin)
    206      1.21     perry #define putwc(wc, f) fputwc((wc), (f))
    207      1.21     perry #define putwchar(wc) putwc((wc), stdout)
    208      1.21     perry 
    209       1.1    kleink #endif /* !_WCHAR_H_ */
    210