File: /usr/include/wchar.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: /*-
       2:  * Copyright (c)1999 Citrus Project,
       3:  * All rights reserved.
       4:  *
       5:  * Redistribution and use in source and binary forms, with or without
       6:  * modification, are permitted provided that the following conditions
       7:  * are met:
       8:  * 1. Redistributions of source code must retain the above copyright
       9:  *    notice, this list of conditions and the following disclaimer.
      10:  * 2. Redistributions in binary form must reproduce the above copyright
      11:  *    notice, this list of conditions and the following disclaimer in the
      12:  *    documentation and/or other materials provided with the distribution.
      13:  *
      14:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
      15:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
      16:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
      17:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
      18:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
      19:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
      20:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
      21:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
      22:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
      23:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
      24:  * SUCH DAMAGE.
      25:  *
      26:  * $FreeBSD: /repoman/r/ncvs/src/include/wchar.h,v 1.34 2003/03/13 06:29:53 tjr Exp $
      27:  */
      28: 
      29: /*-
      30:  * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc.
      31:  * All rights reserved.
      32:  *
      33:  * This code is derived from software contributed to The NetBSD Foundation
      34:  * by Julian Coleman.
      35:  *
      36:  * Redistribution and use in source and binary forms, with or without
      37:  * modification, are permitted provided that the following conditions
      38:  * are met:
      39:  * 1. Redistributions of source code must retain the above copyright
      40:  *    notice, this list of conditions and the following disclaimer.
      41:  * 2. Redistributions in binary form must reproduce the above copyright
      42:  *    notice, this list of conditions and the following disclaimer in the
      43:  *    documentation and/or other materials provided with the distribution.
      44:  * 3. All advertising materials mentioning features or use of this software
      45:  *    must display the following acknowledgement:
      46:  *        This product includes software developed by the NetBSD
      47:  *        Foundation, Inc. and its contributors.
      48:  * 4. Neither the name of The NetBSD Foundation nor the names of its
      49:  *    contributors may be used to endorse or promote products derived
      50:  *    from this software without specific prior written permission.
      51:  *
      52:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
      53:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
      54:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
      55:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
      56:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
      57:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
      58:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
      59:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
      60:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
      61:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
      62:  * POSSIBILITY OF SUCH DAMAGE.
      63:  *
      64:  *    $NetBSD: wchar.h,v 1.8 2000/12/22 05:31:42 itojun Exp $
      65:  */
      66: 
      67: #ifndef _WCHAR_H_
      68: #define _WCHAR_H_
      69: 
      70: #include <_types.h>
      71: #include <sys/cdefs.h>
      72: #include <Availability.h>
      73: 
      74: #include <sys/_types/_null.h>
      75: #include <sys/_types/_size_t.h>
      76: #include <sys/_types/_mbstate_t.h>
      77: #include <sys/_types/_ct_rune_t.h>
      78: #include <sys/_types/_rune_t.h>
      79: #include <sys/_types/_wchar_t.h>
      80: 
      81: #ifndef WCHAR_MIN
      82: #define WCHAR_MIN    __DARWIN_WCHAR_MIN
      83: #endif
      84: 
      85: #ifndef WCHAR_MAX
      86: #define WCHAR_MAX    __DARWIN_WCHAR_MAX
      87: #endif
      88: 
      89: #include <stdarg.h>
      90: #include <stdio.h>
      91: #include <time.h>
      92: #include <_wctype.h>
      93: 
      94: 
      95: /* Initially added in Issue 4 */
      96: __BEGIN_DECLS
      97: wint_t    btowc(int);
      98: wint_t    fgetwc(FILE *);
      99: wchar_t    *fgetws(wchar_t * __restrict, int, FILE * __restrict);
     100: wint_t    fputwc(wchar_t, FILE *);
     101: int    fputws(const wchar_t * __restrict, FILE * __restrict);
     102: int    fwide(FILE *, int);
     103: int    fwprintf(FILE * __restrict, const wchar_t * __restrict, ...);
     104: int    fwscanf(FILE * __restrict, const wchar_t * __restrict, ...);
     105: wint_t    getwc(FILE *);
     106: wint_t    getwchar(void);
     107: size_t    mbrlen(const char * __restrict, size_t, mbstate_t * __restrict);
     108: size_t    mbrtowc(wchar_t * __restrict, const char * __restrict, size_t,
     109:         mbstate_t * __restrict);
     110: int    mbsinit(const mbstate_t *);
     111: size_t    mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
     112:         mbstate_t * __restrict);
     113: wint_t    putwc(wchar_t, FILE *);
     114: wint_t    putwchar(wchar_t);
     115: int    swprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict, ...);
     116: int    swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...);
     117: wint_t    ungetwc(wint_t, FILE *);
     118: int    vfwprintf(FILE * __restrict, const wchar_t * __restrict,
     119:         __darwin_va_list);
     120: int    vswprintf(wchar_t * __restrict, size_t, const wchar_t * __restrict,
     121:         __darwin_va_list);
     122: int    vwprintf(const wchar_t * __restrict, __darwin_va_list);
     123: size_t    wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict);
     124: wchar_t    *wcscat(wchar_t * __restrict, const wchar_t * __restrict);
     125: wchar_t    *wcschr(const wchar_t *, wchar_t);
     126: int    wcscmp(const wchar_t *, const wchar_t *);
     127: int    wcscoll(const wchar_t *, const wchar_t *);
     128: wchar_t    *wcscpy(wchar_t * __restrict, const wchar_t * __restrict);
     129: size_t    wcscspn(const wchar_t *, const wchar_t *);
     130: size_t    wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict,
     131:         const struct tm * __restrict) __DARWIN_ALIAS(wcsftime);
     132: size_t    wcslen(const wchar_t *);
     133: wchar_t    *wcsncat(wchar_t * __restrict, const wchar_t * __restrict, size_t);
     134: int    wcsncmp(const wchar_t *, const wchar_t *, size_t);
     135: wchar_t    *wcsncpy(wchar_t * __restrict , const wchar_t * __restrict, size_t);
     136: wchar_t    *wcspbrk(const wchar_t *, const wchar_t *);
     137: wchar_t    *wcsrchr(const wchar_t *, wchar_t);
     138: size_t    wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
     139:         mbstate_t * __restrict);
     140: size_t    wcsspn(const wchar_t *, const wchar_t *);
     141: wchar_t    *wcsstr(const wchar_t * __restrict, const wchar_t * __restrict);
     142: size_t    wcsxfrm(wchar_t * __restrict, const wchar_t * __restrict, size_t);
     143: int    wctob(wint_t);
     144: double    wcstod(const wchar_t * __restrict, wchar_t ** __restrict);
     145: wchar_t    *wcstok(wchar_t * __restrict, const wchar_t * __restrict,
     146:         wchar_t ** __restrict);
     147: long     wcstol(const wchar_t * __restrict, wchar_t ** __restrict, int);
     148: unsigned long
     149:      wcstoul(const wchar_t * __restrict, wchar_t ** __restrict, int);
     150: wchar_t    *wmemchr(const wchar_t *, wchar_t, size_t);
     151: int    wmemcmp(const wchar_t *, const wchar_t *, size_t);
     152: wchar_t    *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t);
     153: wchar_t    *wmemmove(wchar_t *, const wchar_t *, size_t);
     154: wchar_t    *wmemset(wchar_t *, wchar_t, size_t);
     155: int    wprintf(const wchar_t * __restrict, ...);
     156: int    wscanf(const wchar_t * __restrict, ...);
     157: int    wcswidth(const wchar_t *, size_t);
     158: int    wcwidth(wchar_t);
     159: __END_DECLS
     160: 
     161: 
     162: 
     163: /* Additional functionality provided by:
     164:  * POSIX.1-2001
     165:  * ISO C99
     166:  */
     167: 
     168: #if __DARWIN_C_LEVEL >= 200112L || defined(_C99_SOURCE) || defined(__cplusplus)
     169: __BEGIN_DECLS
     170: int    vfwscanf(FILE * __restrict, const wchar_t * __restrict,
     171:         __darwin_va_list);
     172: int    vswscanf(const wchar_t * __restrict, const wchar_t * __restrict,
     173:         __darwin_va_list);
     174: int    vwscanf(const wchar_t * __restrict, __darwin_va_list);
     175: float    wcstof(const wchar_t * __restrict, wchar_t ** __restrict);
     176: long double
     177:     wcstold(const wchar_t * __restrict, wchar_t ** __restrict);
     178: #if !__DARWIN_NO_LONG_LONG
     179: long long
     180:     wcstoll(const wchar_t * __restrict, wchar_t ** __restrict, int);
     181: unsigned long long
     182:     wcstoull(const wchar_t * __restrict, wchar_t ** __restrict, int);
     183: #endif /* !__DARWIN_NO_LONG_LONG */
     184: __END_DECLS
     185: #endif
     186: 
     187: 
     188: 
     189: /* Additional functionality provided by:
     190:  * POSIX.1-2008
     191:  */
     192: 
     193: #if __DARWIN_C_LEVEL >= 200809L
     194: __BEGIN_DECLS
     195: size_t  mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t,
     196:             size_t, mbstate_t * __restrict);
     197: wchar_t *wcpcpy(wchar_t * __restrict, const wchar_t * __restrict) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     198: wchar_t *wcpncpy(wchar_t * __restrict, const wchar_t * __restrict, size_t) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     199: wchar_t *wcsdup(const wchar_t *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     200: int     wcscasecmp(const wchar_t *, const wchar_t *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     201: int     wcsncasecmp(const wchar_t *, const wchar_t *, size_t n) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     202: size_t  wcsnlen(const wchar_t *, size_t) __pure __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     203: size_t  wcsnrtombs(char * __restrict, const wchar_t ** __restrict, size_t,
     204:             size_t, mbstate_t * __restrict);
     205: __END_DECLS
     206: #endif /* __DARWIN_C_LEVEL >= 200809L */
     207: 
     208: 
     209: 
     210: /* Darwin extensions */
     211: 
     212: #if __DARWIN_C_LEVEL >= __DARWIN_C_FULL
     213: __BEGIN_DECLS
     214: wchar_t *fgetwln(FILE * __restrict, size_t *) __OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3);
     215: size_t    wcslcat(wchar_t *, const wchar_t *, size_t);
     216: size_t    wcslcpy(wchar_t *, const wchar_t *, size_t);
     217: __END_DECLS
     218: #endif /* __DARWIN_C_LEVEL >= __DARWIN_C_FULL */
     219: 
     220: 
     221: /* Poison the following routines if -fshort-wchar is set */
     222: #if !defined(__cplusplus) && defined(__WCHAR_MAX__) && __WCHAR_MAX__ <= 0xffffU
     223: #pragma GCC poison fgetwln fgetws fputwc fputws fwprintf fwscanf mbrtowc mbsnrtowcs mbsrtowcs putwc putwchar swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf vwprintf vwscanf wcrtomb wcscat wcschr wcscmp wcscoll wcscpy wcscspn wcsftime wcsftime wcslcat wcslcpy wcslen wcsncat wcsncmp wcsncpy wcsnrtombs wcspbrk wcsrchr wcsrtombs wcsspn wcsstr wcstod wcstof wcstok wcstol wcstold wcstoll wcstoul wcstoull wcswidth wcsxfrm wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset wprintf wscanf
     224: #endif
     225: 
     226: #ifdef _USE_EXTENDED_LOCALES_
     227: #include <xlocale/_wchar.h>
     228: #endif /* _USE_EXTENDED_LOCALES_ */
     229: 
     230: #endif /* !_WCHAR_H_ */
     231: