Home | History | Annotate | Line # | Download | only in include
wchar.h revision 1.30.8.2
      1  1.30.8.1       tls /*	$NetBSD: wchar.h,v 1.30.8.2 2014/08/20 00:02:05 tls 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  *
     45       1.1    kleink  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     46       1.1    kleink  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     47       1.1    kleink  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     48       1.1    kleink  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     49       1.1    kleink  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     50       1.1    kleink  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     51       1.1    kleink  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     52       1.1    kleink  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     53       1.1    kleink  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     54       1.1    kleink  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     55       1.1    kleink  * POSSIBILITY OF SUCH DAMAGE.
     56       1.1    kleink  */
     57       1.1    kleink 
     58       1.1    kleink #ifndef _WCHAR_H_
     59       1.1    kleink #define _WCHAR_H_
     60       1.1    kleink 
     61       1.2    itojun #include <sys/cdefs.h>
     62      1.18     bjh21 #include <sys/featuretest.h>
     63      1.20    kleink #include <machine/wchar_limits.h>
     64      1.29   tnozaki #include <sys/ansi.h>
     65       1.3    itojun #include <sys/null.h>
     66       1.1    kleink 
     67      1.11      yamt #include <stdio.h> /* for FILE* */
     68      1.11      yamt 
     69      1.28  christos #if defined(_BSD_WCHAR_T_) && !defined(__cplusplus)
     70       1.1    kleink typedef	_BSD_WCHAR_T_	wchar_t;
     71       1.1    kleink #undef	_BSD_WCHAR_T_
     72       1.1    kleink #endif
     73       1.1    kleink 
     74       1.5    itojun #ifdef	_BSD_MBSTATE_T_
     75       1.5    itojun typedef	_BSD_MBSTATE_T_	mbstate_t;
     76       1.5    itojun #undef	_BSD_MBSTATE_T_
     77       1.5    itojun #endif
     78       1.5    itojun 
     79       1.1    kleink #ifdef	_BSD_WINT_T_
     80       1.1    kleink typedef	_BSD_WINT_T_	wint_t;
     81       1.1    kleink #undef	_BSD_WINT_T_
     82       1.1    kleink #endif
     83       1.1    kleink 
     84       1.1    kleink #ifdef	_BSD_SIZE_T_
     85       1.1    kleink typedef	_BSD_SIZE_T_	size_t;
     86       1.1    kleink #undef	_BSD_SIZE_T_
     87       1.1    kleink #endif
     88       1.2    itojun 
     89      1.30     joerg #if defined(_POSIX_C_SOURCE)
     90      1.30     joerg #ifndef __VA_LIST_DECLARED
     91      1.30     joerg typedef __va_list va_list;
     92      1.30     joerg #define __VA_LIST_DECLARED
     93      1.30     joerg #endif
     94      1.30     joerg #endif
     95      1.30     joerg 
     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.30.8.2       tls     defined(_NETBSD_SOURCE) || \
    149  1.30.8.2       tls 	(_POSIX_C_SOURCE - 0) >= 200112L || (_XOPEN_SOURCE - 0) >= 600
    150      1.25   tnozaki float wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
    151      1.25   tnozaki long double wcstold(const wchar_t * __restrict, wchar_t ** __restrict);
    152      1.25   tnozaki 
    153      1.17  tshiozak /* LONGLONG */
    154      1.21     perry long long int wcstoll(const wchar_t * __restrict,
    155      1.21     perry 	wchar_t ** __restrict, int);
    156      1.17  tshiozak /* LONGLONG */
    157      1.21     perry unsigned long long int wcstoull(const wchar_t * __restrict,
    158      1.21     perry 	wchar_t ** __restrict, int);
    159      1.17  tshiozak #endif
    160      1.11      yamt 
    161      1.21     perry wint_t ungetwc(wint_t, FILE *);
    162      1.21     perry wint_t fgetwc(FILE *);
    163      1.21     perry wchar_t *fgetws(wchar_t * __restrict, int, FILE * __restrict);
    164      1.21     perry wint_t getwc(FILE *);
    165      1.21     perry wint_t getwchar(void);
    166      1.21     perry wint_t fputwc(wchar_t, FILE *);
    167      1.21     perry int fputws(const wchar_t * __restrict, FILE * __restrict);
    168      1.21     perry wint_t putwc(wchar_t, FILE *);
    169      1.21     perry wint_t putwchar(wchar_t);
    170      1.11      yamt 
    171      1.21     perry int fwide(FILE *, int);
    172      1.23  christos 
    173      1.23  christos wchar_t	*fgetwln(FILE * __restrict, size_t * __restrict);
    174      1.23  christos int fwprintf(FILE * __restrict, const wchar_t * __restrict, ...);
    175      1.23  christos int fwscanf(FILE * __restrict, const wchar_t * __restrict, ...);
    176      1.23  christos int swprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict, ...);
    177      1.23  christos int swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...);
    178      1.30     joerg int vfwprintf(FILE * __restrict, const wchar_t * __restrict, __va_list);
    179      1.23  christos int vswprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
    180      1.30     joerg     __va_list);
    181      1.30     joerg int vwprintf(const wchar_t * __restrict, __va_list);
    182      1.23  christos int wprintf(const wchar_t * __restrict, ...);
    183      1.23  christos int wscanf(const wchar_t * __restrict, ...);
    184      1.23  christos #if defined(_ISOC99_SOURCE) || (__STDC_VERSION__ - 0) > 199901L || \
    185  1.30.8.2       tls     defined(_NETBSD_SOURCE) || \
    186  1.30.8.2       tls 	(_POSIX_C_SOURCE - 0) >= 200112L || (_XOPEN_SOURCE - 0) >= 600
    187      1.30     joerg int vfwscanf(FILE * __restrict, const wchar_t * __restrict, __va_list);
    188      1.23  christos int vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
    189      1.30     joerg     __va_list);
    190      1.30     joerg int vwscanf(const wchar_t * __restrict, __va_list);
    191      1.23  christos #endif
    192      1.24  christos #if defined(_NETBSD_SOURCE)
    193      1.24  christos struct tinfo;
    194      1.24  christos int t_putws(struct tinfo *, const wchar_t *, int, void (*)(wchar_t, void *),
    195      1.24  christos     void *);
    196      1.26  christos wchar_t *wcsdup (const wchar_t *);
    197      1.26  christos int wcsncasecmp (const wchar_t *, const wchar_t *, size_t);
    198      1.26  christos int wcscasecmp(const wchar_t *, const wchar_t *);
    199      1.24  christos #endif
    200       1.2    itojun __END_DECLS
    201       1.1    kleink 
    202      1.21     perry #ifndef WEOF
    203      1.21     perry #define	WEOF 	((wint_t)-1)
    204      1.21     perry #endif
    205      1.21     perry 
    206      1.21     perry #define getwc(f) fgetwc(f)
    207      1.21     perry #define getwchar() getwc(stdin)
    208      1.21     perry #define putwc(wc, f) fputwc((wc), (f))
    209      1.21     perry #define putwchar(wc) putwc((wc), stdout)
    210      1.21     perry 
    211  1.30.8.1       tls #if (_POSIX_C_SOURCE - 0) >= 200809L || defined(_NETBSD_SOURCE)
    212  1.30.8.1       tls #  ifndef __LOCALE_T_DECLARED
    213  1.30.8.1       tls typedef struct _locale		*locale_t;
    214  1.30.8.1       tls #  define __LOCALE_T_DECLARED
    215  1.30.8.1       tls #  endif
    216  1.30.8.1       tls __BEGIN_DECLS
    217  1.30.8.1       tls size_t	mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
    218  1.30.8.1       tls 	    size_t, mbstate_t * __restrict);
    219  1.30.8.1       tls size_t	wcsnrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
    220  1.30.8.1       tls 	    size_t, mbstate_t * __restrict);
    221  1.30.8.1       tls 
    222  1.30.8.1       tls int	wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
    223  1.30.8.1       tls size_t	wcsxfrm_l(wchar_t *, const wchar_t *, size_t, locale_t);
    224  1.30.8.1       tls int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t);
    225  1.30.8.1       tls int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
    226  1.30.8.1       tls 
    227  1.30.8.2       tls size_t	wcsftime_l(wchar_t * __restrict, size_t, const wchar_t * __restrict,
    228  1.30.8.2       tls 	    const struct tm * __restrict, locale_t);
    229  1.30.8.2       tls 
    230  1.30.8.1       tls float wcstof_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t);
    231  1.30.8.1       tls double wcstod_l(const wchar_t * __restrict, wchar_t ** __restrict, locale_t);
    232  1.30.8.1       tls long double wcstold_l(const wchar_t * __restrict, wchar_t ** __restrict,
    233  1.30.8.1       tls     locale_t);
    234  1.30.8.1       tls long int wcstol_l(const wchar_t * __restrict, wchar_t ** __restrict, int,
    235  1.30.8.1       tls 		  locale_t);
    236  1.30.8.1       tls unsigned long int wcstoul_l(const wchar_t * __restrict,
    237  1.30.8.1       tls 	wchar_t ** __restrict, int, locale_t);
    238  1.30.8.1       tls /* LONGLONG */
    239  1.30.8.1       tls long long int wcstoll_l(const wchar_t * __restrict, wchar_t ** __restrict, int,
    240  1.30.8.1       tls 			locale_t);
    241  1.30.8.1       tls /* LONGLONG */
    242  1.30.8.1       tls unsigned long long int wcstoull_l(const wchar_t * __restrict,
    243  1.30.8.1       tls 				  wchar_t ** __restrict, int, locale_t);
    244  1.30.8.1       tls int	wcwidth_l(wchar_t, locale_t);
    245  1.30.8.1       tls int	wcswidth_l(const wchar_t *, size_t, locale_t);
    246  1.30.8.1       tls __END_DECLS
    247  1.30.8.1       tls #endif /* _POSIX_C_SOURCE || _NETBSD_SOURCE */
    248  1.30.8.1       tls 
    249  1.30.8.1       tls #if defined(_NETBSD_SOURCE)
    250  1.30.8.1       tls __BEGIN_DECLS
    251  1.30.8.1       tls wint_t	btowc_l(int, locale_t);
    252  1.30.8.1       tls size_t	mbrlen_l(const char * __restrict, size_t, mbstate_t * __restrict,
    253  1.30.8.1       tls 		locale_t);
    254  1.30.8.1       tls size_t	mbrtowc_l(wchar_t * __restrict, const char * __restrict, size_t,
    255  1.30.8.1       tls 	    mbstate_t * __restrict, locale_t);
    256  1.30.8.1       tls int	mbsinit_l(const mbstate_t *, locale_t);
    257  1.30.8.1       tls size_t	mbsrtowcs_l(wchar_t * __restrict, const char ** __restrict, size_t,
    258  1.30.8.1       tls 	    mbstate_t * __restrict, locale_t);
    259  1.30.8.1       tls size_t	mbsnrtowcs_l(wchar_t * __restrict, const char ** __restrict, size_t,
    260  1.30.8.1       tls 	    size_t, mbstate_t * __restrict, locale_t);
    261  1.30.8.1       tls size_t	wcrtomb_l(char * __restrict, wchar_t, mbstate_t * __restrict, locale_t);
    262  1.30.8.1       tls size_t	wcsrtombs_l(char * __restrict, const wchar_t ** __restrict, size_t,
    263  1.30.8.1       tls 	    mbstate_t * __restrict, locale_t);
    264  1.30.8.1       tls size_t	wcsnrtombs_l(char * __restrict, const wchar_t ** __restrict, size_t,
    265  1.30.8.1       tls 	    size_t, mbstate_t * __restrict, locale_t);
    266  1.30.8.1       tls int	wctob_l(wint_t, locale_t);
    267  1.30.8.1       tls 
    268  1.30.8.1       tls int fwprintf_l(FILE * __restrict, locale_t, const wchar_t * __restrict, ...);
    269  1.30.8.1       tls int swprintf_l(wchar_t * __restrict, size_t n, locale_t,
    270  1.30.8.1       tls     const wchar_t * __restrict, ...);
    271  1.30.8.1       tls int vfwprintf_l(FILE * __restrict, locale_t,
    272  1.30.8.1       tls     const wchar_t * __restrict, __va_list);
    273  1.30.8.1       tls int vswprintf_l(wchar_t * __restrict, size_t, locale_t,
    274  1.30.8.1       tls     const wchar_t * __restrict, __va_list);
    275  1.30.8.1       tls int vwprintf_l(locale_t, const wchar_t * __restrict, __va_list);
    276  1.30.8.1       tls int wprintf_l(locale_t, const wchar_t * __restrict, ...);
    277  1.30.8.1       tls 
    278  1.30.8.1       tls int fwscanf_l(FILE * __restrict, locale_t, const wchar_t * __restrict, ...);
    279  1.30.8.1       tls int swscanf_l(const wchar_t * __restrict, locale_t, const wchar_t *
    280  1.30.8.1       tls     __restrict, ...);
    281  1.30.8.1       tls int wscanf_l(locale_t, const wchar_t * __restrict, ...);
    282  1.30.8.1       tls int vfwscanf_l(FILE * __restrict, locale_t, const wchar_t * __restrict,
    283  1.30.8.1       tls     __va_list);
    284  1.30.8.1       tls int vswscanf_l(const wchar_t * __restrict, locale_t, const wchar_t * __restrict,
    285  1.30.8.1       tls     __va_list);
    286  1.30.8.1       tls int vwscanf_l(locale_t, const wchar_t * __restrict, __va_list);
    287  1.30.8.1       tls __END_DECLS
    288  1.30.8.1       tls #endif /* _NETBSD_SOURCE */
    289  1.30.8.1       tls 
    290       1.1    kleink #endif /* !_WCHAR_H_ */
    291