Home | History | Annotate | Line # | Download | only in include
wchar.h revision 1.30.4.1
      1  1.30.4.1    martin /*	$NetBSD: wchar.h,v 1.30.4.1 2015/01/16 09:36:12 martin 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.4.1    martin     defined(_NETBSD_SOURCE) || \
    149  1.30.4.1    martin 	(_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.4.1    martin     defined(_NETBSD_SOURCE) || \
    186  1.30.4.1    martin 	(_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.1    kleink #endif /* !_WCHAR_H_ */
    212