/**************************************************************************** * include/wchar.h * * Copyright (C) 2014, 2017 Gregory Nutt. All rights reserved. * Author: Gregory Nutt * * 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. Neither the name NuttX nor the names of its contributors may be * used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 * COPYRIGHT OWNER 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 __INCLUDE_WCHAR_H #define __INCLUDE_WCHAR_H /**************************************************************************** * Included Files ****************************************************************************/ /* "Inclusion of the header may make visible all symbols from the * headers , , , , , * and ." * * Reference: Opengroup.org */ #include #include /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ /* defines the following macro names: * * WCHAR_MAX * The maximum value representable by an object of type wchar_t. * * WCHAR_MIN * The minimum value representable by an object of type wchar_t. * * WEOF * Constant expression of type wint_t that is returned by several WP * functions to indicate end-of-file. * * NULL * As described in . * * Reference: Opengroup.org */ #define WCHAR_MAX 0xffff #define WCHAR_MIN 0x0000 #define WEOF ((wint_t)-1) #ifndef NULL # define NULL ((FAR void *)0) #endif /**************************************************************************** * Type Definitions ****************************************************************************/ /* "The header defines the following data types: * * wchar_t * Provided via . * * wint_t * An integral type capable of storing any valid value of wchar_t, or WEOF. * Provided via * * wctype_t * A scalar type of a data object that can hold values which represent * locale-specific character classification. Provided via * * mbstate_t * An object type other than an array type that can hold the conversion * state information necessary to convert between sequences of (possibly * multibyte) characters and wide-characters. If a codeset is being used * such that an mbstate_t needs to preserve more than 2 levels of reserved * state, the results are unspecified. */ struct mbstate_s { int __fill[6]; }; typedef struct mbstate_s mbstate_t; /* FILE * As described in . * * size_t * As described in ." * * Reference: Opengroup.org */ /* "The tag tm is declared as naming an incomplete structure type, the * contents of which are described in the header ." * * Reference: Opengroup.org */ struct tm; /* Forward reference (see ) */ /**************************************************************************** * Public Data ****************************************************************************/ #ifdef __cplusplus #define EXTERN extern "C" extern "C" { #else #define EXTERN extern #endif /**************************************************************************** * Public Function Prototypes ****************************************************************************/ /* "The header declares the following as functions and may also * define them as macros. Function prototypes must be provided for use with * an ISO C compiler." * * Reference: Opengroup.org */ wint_t btowc(int); int fwprintf(FILE *, FAR const wchar_t *, ...); int fwscanf(FILE *, FAR const wchar_t *, ...); int iswalnum(wint_t); int iswalpha(wint_t); int iswcntrl(wint_t); int iswdigit(wint_t); int iswgraph(wint_t); int iswlower(wint_t); int iswprint(wint_t); int iswpunct(wint_t); int iswspace(wint_t); int iswupper(wint_t); int iswxdigit(wint_t); int iswctype(wint_t, wctype_t); wint_t fgetwc(FILE *); FAR wchar_t *fgetws(wchar_t *, int, FILE *); wint_t fputwc(wchar_t, FILE *); int fputws(FAR const wchar_t *, FILE *); int fwide(FILE *, int); wint_t getwc(FILE *); wint_t getwchar(void); int mbsinit(FAR const mbstate_t *); size_t mbrlen(FAR const char *, size_t, FAR mbstate_t *); size_t mbrtowc(wchar_t *, FAR const char *, size_t, mbstate_t *); size_t mbsnrtowcs(FAR wchar_t *, FAR const char **, size_t, size_t, FAR mbstate_t *); size_t mbsrtowcs(wchar_t *, FAR const char **, size_t, FAR mbstate_t *); wint_t putwc(wchar_t, FILE *); wint_t putwchar(wchar_t); int swprintf(FAR wchar_t *, size_t, FAR const wchar_t *, ...); int swscanf(FAR const wchar_t *, FAR const wchar_t *, ...); wint_t towlower(wint_t); wint_t towupper(wint_t); wint_t ungetwc(wint_t, FILE *); int vfwprintf(FILE *, FAR const wchar_t *, va_list); int vwprintf(FAR const wchar_t *, va_list); int vswprintf(wchar_t *, size_t, FAR const wchar_t *, va_list); size_t wcrtomb(FAR char *, wchar_t, FAR mbstate_t *); FAR wchar_t *wcscat(FAR wchar_t *, FAR const wchar_t *); FAR wchar_t *wcschr(FAR const wchar_t *, wchar_t); int wcscmp(FAR const wchar_t *, FAR const wchar_t *); int wcscoll(FAR const wchar_t *, FAR const wchar_t *); FAR wchar_t *wcscpy(FAR wchar_t *, FAR const wchar_t *); size_t wcscspn(FAR const wchar_t *, FAR const wchar_t *); size_t wcsftime(FAR wchar_t *, size_t, FAR const wchar_t *, FAR const struct tm *); size_t wcslen(FAR const wchar_t *); size_t wcslcpy(FAR wchar_t *, FAR const wchar_t *, size_t); size_t wcslcat(FAR wchar_t *, FAR const wchar_t *, size_t); FAR wchar_t *wcsncat(FAR wchar_t *, FAR const wchar_t *, size_t); int wcsncmp(FAR const wchar_t *, FAR const wchar_t *, size_t); FAR wchar_t *wcsncpy(FAR wchar_t *, FAR const wchar_t *, size_t); size_t wcsnrtombs(FAR char *, FAR const wchar_t **, size_t, size_t, FAR mbstate_t *); FAR wchar_t *wcspbrk(FAR const wchar_t *, FAR const wchar_t *); FAR wchar_t *wcsrchr(FAR const wchar_t *, wchar_t); size_t wcsrtombs(FAR char *, FAR const wchar_t **, size_t, FAR mbstate_t *); size_t wcsspn(FAR const wchar_t *, FAR const wchar_t *); FAR wchar_t *wcsstr(FAR const wchar_t *, FAR const wchar_t *); #ifdef CONFIG_HAVE_DOUBLE double wcstod(FAR const wchar_t *, FAR wchar_t **); #endif float wcstof(FAR const wchar_t *, FAR wchar_t **); FAR wchar_t *wcstok(FAR wchar_t *, FAR const wchar_t *, FAR wchar_t **); long int wcstol(FAR const wchar_t *, FAR wchar_t **, int); #ifdef CONFIG_HAVE_LONG_DOUBLE long double wcstold(FAR const wchar_t *, FAR wchar_t **); #endif long long int wcstoll(FAR const wchar_t *, FAR wchar_t **, int); unsigned long int wcstoul(FAR const wchar_t *, FAR wchar_t **, int); unsigned long long int wcstoull(FAR const wchar_t *, FAR wchar_t **, int); FAR wchar_t *wcswcs(FAR const wchar_t *, FAR const wchar_t *); int wcswidth(FAR const wchar_t *, size_t); size_t wcsxfrm(wchar_t *, FAR const wchar_t *, size_t); int wctob(wint_t); wctype_t wctype(FAR const char *); int wcwidth(wchar_t); FAR wchar_t *wmemchr(FAR const wchar_t *, wchar_t, size_t); int wmemcmp(FAR const wchar_t *, FAR const wchar_t *, size_t); FAR wchar_t *wmemcpy(FAR wchar_t *, FAR const wchar_t *, size_t); FAR wchar_t *wmemmove(FAR wchar_t *, FAR const wchar_t *, size_t); FAR wchar_t *wmemset(FAR wchar_t *, wchar_t, size_t); int wprintf(FAR const wchar_t *, ...); int wscanf(FAR const wchar_t *, ...); #undef EXTERN #ifdef __cplusplus } #endif #endif /* __INCLUDE_WCHAR_H */