sl@0: /*- sl@0: * Copyright (c)1999 Citrus Project, sl@0: * All rights reserved. sl@0: * sl@0: * Redistribution and use in source and binary forms, with or without sl@0: * modification, are permitted provided that the following conditions sl@0: * are met: sl@0: * 1. Redistributions of source code must retain the above copyright sl@0: * notice, this list of conditions and the following disclaimer. sl@0: * 2. Redistributions in binary form must reproduce the above copyright sl@0: * notice, this list of conditions and the following disclaimer in the sl@0: * documentation and/or other materials provided with the distribution. sl@0: * sl@0: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND sl@0: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE sl@0: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE sl@0: * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE sl@0: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL sl@0: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS sl@0: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) sl@0: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT sl@0: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY sl@0: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF sl@0: * SUCH DAMAGE. sl@0: * sl@0: * $FreeBSD: src/include/wchar.h,v 1.45 2004/08/12 12:19:10 tjr Exp $ sl@0: * sl@0: * © Portions Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. sl@0: */ sl@0: sl@0: /*- sl@0: * Copyright (c) 1999, 2000 The NetBSD Foundation, Inc. sl@0: * All rights reserved. sl@0: * sl@0: * This code is derived from software contributed to The NetBSD Foundation sl@0: * by Julian Coleman. sl@0: * sl@0: * Redistribution and use in source and binary forms, with or without sl@0: * modification, are permitted provided that the following conditions sl@0: * are met: sl@0: * 1. Redistributions of source code must retain the above copyright sl@0: * notice, this list of conditions and the following disclaimer. sl@0: * 2. Redistributions in binary form must reproduce the above copyright sl@0: * notice, this list of conditions and the following disclaimer in the sl@0: * documentation and/or other materials provided with the distribution. sl@0: * 4. Neither the name of The NetBSD Foundation nor the names of its sl@0: * contributors may be used to endorse or promote products derived sl@0: * from this software without specific prior written permission. sl@0: * sl@0: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS sl@0: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED sl@0: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR sl@0: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS sl@0: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR sl@0: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF sl@0: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS sl@0: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN sl@0: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) sl@0: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE sl@0: * POSSIBILITY OF SUCH DAMAGE. sl@0: * sl@0: * $NetBSD: wchar.h,v 1.8 2000/12/22 05:31:42 itojun Exp $ sl@0: */ sl@0: sl@0: #ifndef _WCHAR_H_ sl@0: #define _WCHAR_H_ sl@0: sl@0: #ifdef __cplusplus sl@0: extern "C" sl@0: { sl@0: #endif //__cplusplus sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include <_ctype.h> sl@0: #include <_ansi.h> sl@0: #include sl@0: #include sl@0: #ifdef __SYMBIAN32__ sl@0: #include sl@0: #ifdef __WINSCW__ sl@0: #ifndef __SOFTFP sl@0: #define __SOFTFP sl@0: #endif /* __SOFTFP */ sl@0: #endif//__WINSCW__ sl@0: #endif //__SYMBIAN32__ sl@0: sl@0: #ifndef _MBSTATE_T_DECLARED sl@0: typedef __mbstate_t mbstate_t; sl@0: #define _MBSTATE_T_DECLARED sl@0: #endif sl@0: sl@0: #ifndef _SIZE_T_DECLARED sl@0: typedef __size_t size_t; sl@0: #define _SIZE_T_DECLARED sl@0: #endif sl@0: sl@0: #ifndef __SYMBIAN32__ sl@0: #ifndef __cplusplus sl@0: #ifndef _WCHAR_T_DECLARED sl@0: typedef __wchar_t wchar_t; sl@0: #define _WCHAR_T_DECLARED sl@0: #endif //_WCHAR_T_DECLARED sl@0: #endif //__cplusplus sl@0: #else //__SYMBIAN32__ sl@0: //C++ built-in wchar data type which doesn't clash with the definition of wchar sl@0: #if !defined _WCHAR_T_DECLARED && defined __cplusplus && defined __WINSCW__ sl@0: #if __option(wchar_type) sl@0: #define _WCHAR_T_DECLARED sl@0: #endif //__option (wchar_type) sl@0: #endif //__WINSCW__ sl@0: sl@0: #if !defined _WCHAR_T_DECLARED && !defined __wchar_t_defined sl@0: #if defined __cplusplus sl@0: #if defined __WINSCW__ sl@0: typedef unsigned short int wchar_t; sl@0: #define _WCHAR_T_DECLARED sl@0: #endif // __WINSCW__ sl@0: #else sl@0: typedef unsigned short int wchar_t; sl@0: #define _WCHAR_T_DECLARED sl@0: #endif // __cplusplus sl@0: #endif // __wchar_t_defined sl@0: #endif //__SYMBIAN32__ sl@0: sl@0: #ifndef _WINT_T_DECLARED sl@0: typedef __wint_t wint_t; sl@0: #define _WINT_T_DECLARED sl@0: #endif sl@0: sl@0: #ifndef WCHAR_MIN sl@0: #define WCHAR_MIN (wchar_t)__INT_MIN sl@0: #define WCHAR_MAX (wchar_t)__INT_MAX sl@0: #endif sl@0: sl@0: #ifndef WEOF sl@0: #define WEOF ((wint_t)-1) sl@0: #endif sl@0: sl@0: struct __sFILE; sl@0: struct tm; sl@0: sl@0: __BEGIN_DECLS sl@0: IMPORT_C wint_t btowc(int); sl@0: IMPORT_C wint_t fgetwc(struct __sFILE *); sl@0: IMPORT_C wchar_t * sl@0: fgetws(wchar_t * __restrict, int, struct __sFILE * __restrict); sl@0: IMPORT_C wint_t fputwc(wchar_t, struct __sFILE *); sl@0: IMPORT_C int fputws(const wchar_t * __restrict, struct __sFILE * __restrict); sl@0: IMPORT_C int fwide(struct __sFILE *, int); sl@0: IMPORT_C int fwprintf(struct __sFILE * __restrict, const wchar_t * __restrict, ...); sl@0: IMPORT_C int fwscanf(struct __sFILE * __restrict, const wchar_t * __restrict, ...); sl@0: IMPORT_C wint_t getwc(struct __sFILE *); sl@0: IMPORT_C wint_t getwchar(void); sl@0: IMPORT_C size_t mbrlen(const char * __restrict, size_t, mbstate_t * __restrict); sl@0: IMPORT_C size_t mbrtowc(wchar_t * __restrict, const char * __restrict, size_t, sl@0: mbstate_t * __restrict); sl@0: IMPORT_C int mbsinit(const mbstate_t *); sl@0: IMPORT_C size_t mbsrtowcs(wchar_t * __restrict, const char ** __restrict, size_t, sl@0: mbstate_t * __restrict); sl@0: IMPORT_C wint_t putwc(wchar_t, struct __sFILE *); sl@0: IMPORT_C wint_t putwchar(wchar_t); sl@0: IMPORT_C int swprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict, sl@0: ...); sl@0: IMPORT_C int swscanf(const wchar_t * __restrict, const wchar_t * __restrict, ...); sl@0: IMPORT_C wint_t ungetwc(wint_t, struct __sFILE *); sl@0: IMPORT_C int vfwprintf(struct __sFILE * __restrict, const wchar_t * __restrict, sl@0: va_list); sl@0: IMPORT_C int vswprintf(wchar_t * __restrict, size_t n, const wchar_t * __restrict, sl@0: va_list); sl@0: IMPORT_C int vwprintf(const wchar_t * __restrict, va_list); sl@0: IMPORT_C size_t wcrtomb(char * __restrict, wchar_t, mbstate_t * __restrict); sl@0: IMPORT_C wchar_t *wcscat(wchar_t * __restrict, const wchar_t * __restrict); sl@0: IMPORT_C wchar_t *wcschr(const wchar_t *, wchar_t) __pure; sl@0: IMPORT_C int wcscmp(const wchar_t *, const wchar_t *) __pure; sl@0: IMPORT_C int wcscoll(const wchar_t *, const wchar_t *); sl@0: IMPORT_C wchar_t *wcscpy(wchar_t * __restrict, const wchar_t * __restrict); sl@0: IMPORT_C size_t wcscspn(const wchar_t *, const wchar_t *) __pure; sl@0: IMPORT_C size_t wcsftime(wchar_t * __restrict, size_t, const wchar_t * __restrict, sl@0: const struct tm * __restrict); sl@0: IMPORT_C size_t wcslen(const wchar_t *) __pure; sl@0: IMPORT_C wchar_t *wcsncat(wchar_t * __restrict, const wchar_t * __restrict, sl@0: size_t); sl@0: IMPORT_C int wcsncmp(const wchar_t *, const wchar_t *, size_t) __pure; sl@0: IMPORT_C wchar_t *wcsncpy(wchar_t * __restrict , const wchar_t * __restrict, size_t); sl@0: IMPORT_C wchar_t *wcspbrk(const wchar_t *, const wchar_t *) __pure; sl@0: IMPORT_C wchar_t *wcsrchr(const wchar_t *, wchar_t) __pure; sl@0: IMPORT_C size_t wcsrtombs(char * __restrict, const wchar_t ** __restrict, size_t, sl@0: mbstate_t * __restrict); sl@0: IMPORT_C size_t wcsspn(const wchar_t *, const wchar_t *) __pure; sl@0: IMPORT_C wchar_t *wcsstr(const wchar_t * __restrict, const wchar_t * __restrict) sl@0: __pure; sl@0: IMPORT_C size_t wcsxfrm(wchar_t * __restrict, const wchar_t * __restrict, size_t); sl@0: IMPORT_C int wctob(wint_t); sl@0: IMPORT_C double wcstod(const wchar_t * __restrict, wchar_t ** __restrict) __SOFTFP; sl@0: IMPORT_C wchar_t *wcstok(wchar_t * __restrict, const wchar_t * __restrict, sl@0: wchar_t ** __restrict); sl@0: IMPORT_C long wcstol(const wchar_t * __restrict, wchar_t ** __restrict, int); sl@0: IMPORT_C unsigned long sl@0: wcstoul(const wchar_t * __restrict, wchar_t ** __restrict, int); sl@0: IMPORT_C wchar_t *wmemchr(const wchar_t *, wchar_t, size_t) __pure; sl@0: IMPORT_C int wmemcmp(const wchar_t *, const wchar_t *, size_t) __pure; sl@0: IMPORT_C wchar_t *wmemcpy(wchar_t * __restrict, const wchar_t * __restrict, size_t); sl@0: IMPORT_C wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); sl@0: IMPORT_C wchar_t *wmemset(wchar_t *, wchar_t, size_t); sl@0: IMPORT_C int wprintf(const wchar_t * __restrict, ...); sl@0: IMPORT_C int wscanf(const wchar_t * __restrict, ...); sl@0: #ifdef __SYMBIAN32__ sl@0: IMPORT_C long long wcstoq(const wchar_t * __restrict, wchar_t ** __restrict, int); sl@0: IMPORT_C unsigned long long wcstouq(const wchar_t * __restrict, wchar_t ** __restrict, int); sl@0: IMPORT_C wchar_t *wcswcs(const wchar_t * __restrict s, const wchar_t * __restrict find); sl@0: IMPORT_C int wpopen3 (const wchar_t* file, const wchar_t* cmd, wchar_t** env, int fids[3]); sl@0: #endif //__SYMBIAN32__ sl@0: sl@0: #ifndef _STDSTREAM_DECLARED sl@0: extern struct __sFILE *__stdinp; sl@0: extern struct __sFILE *__stdoutp; sl@0: extern struct __sFILE *__stderrp; sl@0: #define _STDSTREAM_DECLARED sl@0: #endif sl@0: sl@0: #ifndef __SYMBIAN32__ sl@0: #define getwc(fp) fgetwc(fp) sl@0: #define getwchar() fgetwc(__stdinp) sl@0: #define putwc(wc, fp) fputwc(wc, fp) sl@0: #define putwchar(wc) fputwc(wc, __stdoutp) sl@0: #else //__SYMBIAN32__ sl@0: IMPORT_C wint_t getwc(struct __sFILE *); sl@0: IMPORT_C wint_t getwchar(void); sl@0: IMPORT_C wint_t putwc(wchar_t, struct __sFILE *); sl@0: IMPORT_C wint_t putwchar(wchar_t); sl@0: #endif //__SYMBIAN32__ sl@0: sl@0: sl@0: #if __ISO_C_VISIBLE >= 1999 sl@0: IMPORT_C int vfwscanf(struct __sFILE * __restrict, const wchar_t * __restrict, sl@0: va_list); sl@0: IMPORT_C int vswscanf(const wchar_t * __restrict, const wchar_t * __restrict, sl@0: va_list); sl@0: IMPORT_C int vwscanf(const wchar_t * __restrict, va_list); sl@0: IMPORT_C float wcstof(const wchar_t * __restrict, wchar_t ** __restrict) __SOFTFP; sl@0: IMPORT_C long double sl@0: wcstold(const wchar_t * __restrict, wchar_t ** __restrict) __SOFTFP; sl@0: #ifdef __LONG_LONG_SUPPORTED sl@0: /* LONGLONG */ sl@0: IMPORT_C long long sl@0: wcstoll(const wchar_t * __restrict, wchar_t ** __restrict, int); sl@0: /* LONGLONG */ sl@0: IMPORT_C unsigned long long sl@0: wcstoull(const wchar_t * __restrict, wchar_t ** __restrict, int); sl@0: #endif sl@0: #endif /* __ISO_C_VISIBLE >= 1999 */ sl@0: sl@0: #if __XSI_VISIBLE sl@0: IMPORT_C int wcswidth(const wchar_t *, size_t); sl@0: IMPORT_C int wcwidth(wchar_t); sl@0: #ifndef __SYMBIAN32__ sl@0: #define wcwidth(_c) __wcwidth(_c) sl@0: #endif //__SYMBIAN32__ sl@0: #endif sl@0: sl@0: #if __BSD_VISIBLE sl@0: sl@0: #ifdef __SYMBIAN_COMPILE_UNUSED__ sl@0: wchar_t *fgetwln(struct __sFILE * __restrict, size_t * __restrict); sl@0: #endif sl@0: sl@0: IMPORT_C size_t mbsnrtowcs(wchar_t * __restrict, const char ** __restrict, size_t, sl@0: size_t, mbstate_t * __restrict); sl@0: IMPORT_C size_t wcsnrtombs(char * __restrict, const wchar_t ** __restrict, size_t, sl@0: size_t, mbstate_t * __restrict); sl@0: #endif sl@0: #ifdef __SYMBIAN32__ sl@0: IMPORT_C wchar_t *wcpcpy(wchar_t *dst, const wchar_t *src); sl@0: IMPORT_C wchar_t *wcpncpy(wchar_t * dst, const wchar_t * src, size_t n); sl@0: IMPORT_C int wcscasecmp(const wchar_t *s1, const wchar_t *s2); sl@0: IMPORT_C wchar_t *wcsdup (const wchar_t *srcwcs); sl@0: IMPORT_C int wcsncasecmp(const wchar_t *s1, const wchar_t *s2, size_t n); sl@0: IMPORT_C size_t wcsnlen(const wchar_t *s, size_t maxlen); sl@0: sl@0: IMPORT_C wchar_t* wrealpath (const wchar_t* , wchar_t* ); sl@0: IMPORT_C int wrmdir (const wchar_t *); sl@0: IMPORT_C int wstat (const wchar_t *name, struct stat *st); sl@0: IMPORT_C int wsystem (const wchar_t* ); sl@0: IMPORT_C int wunlink (const wchar_t *); sl@0: IMPORT_C FILE* wpopen( const wchar_t* command, const wchar_t* mode ); sl@0: sl@0: IMPORT_C int wopen(const wchar_t *, int, ...); sl@0: IMPORT_C FILE *wfopen(const wchar_t * __restrict, const wchar_t * __restrict); sl@0: IMPORT_C int wrename (const wchar_t *oldpath, const wchar_t *newpath); sl@0: IMPORT_C int wchdir (const wchar_t *_path); sl@0: IMPORT_C int wchmod (const wchar_t *_path, mode_t _mode); sl@0: IMPORT_C wchar_t* wgetcwd (wchar_t *_buf, size_t _size); sl@0: IMPORT_C int wmkdir (const wchar_t *_path, mode_t _mode); sl@0: IMPORT_C int wclosedir (WDIR *dp); sl@0: IMPORT_C struct wdirent *wreaddir (WDIR *dp); sl@0: IMPORT_C void wrewinddir (WDIR *dp); sl@0: IMPORT_C int waccess(const wchar_t *fn, int flags); sl@0: IMPORT_C int wcreat(const wchar_t* file, mode_t mode); sl@0: IMPORT_C void wseekdir(WDIR *dp,off_t index); sl@0: IMPORT_C off_t wtelldir(const WDIR *dp); sl@0: IMPORT_C WDIR *wopendir (const wchar_t *_path); sl@0: sl@0: #define _wcsupr(wcs) wcsupr(wcs) sl@0: #define _wcslwr(wcs) wcslwr(wcs) sl@0: #define _wcsset(wcs, wc) wcsset(wcs,wc) sl@0: #define _wcsnset(wcs, wc, size) wcsnset(wcs, wc, size) sl@0: #define _wcsrev(wcs) wcsrev(wcs) sl@0: #define _wcsicmp(wcs1, wcs2) wcsicmp(wcs1, wcs2) sl@0: #define _wstrdate(datestr) wstrdate(datestr) sl@0: #define _wstrtime(timestr) wstrtime(timestr) sl@0: sl@0: IMPORT_C wchar_t* wcsupr(wchar_t *wcs); sl@0: IMPORT_C wchar_t* wcslwr(wchar_t *wcs); sl@0: IMPORT_C wchar_t* wcsset (wchar_t* wcs, wchar_t wc); sl@0: IMPORT_C wchar_t* wcsnset (wchar_t* wcs, wchar_t wc, size_t maxSize); sl@0: IMPORT_C wchar_t* wcsrev(wchar_t *wcs); sl@0: IMPORT_C int wcsicmp(const wchar_t* wcs1,const wchar_t * wcs2); sl@0: IMPORT_C wchar_t* wstrdate( const wchar_t *dateStr ); sl@0: IMPORT_C wchar_t* wstrtime(const wchar_t *timeStr); sl@0: IMPORT_C FILE * wfdopen (int fd, const wchar_t *mode); sl@0: IMPORT_C FILE * wfreopen(const wchar_t * file,const wchar_t * mode,FILE *fp); sl@0: IMPORT_C wchar_t* getws(wchar_t* str); sl@0: IMPORT_C int wremove(const wchar_t *file); sl@0: IMPORT_C int putws(wchar_t* str); sl@0: sl@0: struct _wfinddata_t sl@0: { sl@0: unsigned attrib; sl@0: time_t time_create; /* -1 for symbian */ sl@0: time_t time_access; /* -1 for symbian*/ sl@0: time_t time_write; sl@0: size_t size; sl@0: wchar_t name[260]; sl@0: }; sl@0: sl@0: #define _A_ARCH 0x0020 //Archive. Set whenever the file is changed and cleared by the BACKUP command. Value: 0x20. sl@0: #define _A_HIDDEN 0x0002 //Hidden file. Not normally seen with the DIR command, unless the /AH option is used. Returns information about normal files and files with this attribute. Value: 0x02. sl@0: #define _A_NORMAL 0x0000 //Normal. File has no other attributes set and can be read or written to without restriction. Value: 0x00. sl@0: #define _A_RDONLY 0x0001 //Read-only. File cannot be opened for writing and a file with the same name cannot be created. Value: 0x01. sl@0: #define _A_SYSTEM 0x0004 //System file. Not normally seen with the DIR command, unless the /A or /A:S option is used sl@0: #define _A_SUBDIR 0x0010 // Subdirectory. sl@0: sl@0: IMPORT_C size_t wcslcat(wchar_t *, const wchar_t *, size_t); sl@0: IMPORT_C size_t wcslcpy(wchar_t *, const wchar_t *, size_t); sl@0: IMPORT_C wchar_t *wasctime(const struct tm *); sl@0: IMPORT_C wchar_t *wctime(const time_t *); sl@0: IMPORT_C wchar_t *wsetlocale(int, const wchar_t *); sl@0: IMPORT_C void wperror(const wchar_t *); sl@0: IMPORT_C wchar_t* wcserror(int num); sl@0: IMPORT_C int wfindnext(intptr_t, struct _wfinddata_t *); sl@0: IMPORT_C intptr_t wfindfirst(const wchar_t* , struct _wfinddata_t* ); sl@0: IMPORT_C int findclose( intptr_t handle); sl@0: sl@0: #define snwprintf swprintf sl@0: #define vsnwprintf vswprintf sl@0: sl@0: IMPORT_C int wcsnicmp (const wchar_t *wcs1, const wchar_t *wcs2, size_t n); sl@0: IMPORT_C int wcsicoll(const wchar_t *wcs1, const wchar_t *wcs2); sl@0: IMPORT_C int wcsncoll(const wchar_t* wcs1, const wchar_t* wcs2, size_t n); sl@0: IMPORT_C int wcsnicoll(const wchar_t* wcs1, const wchar_t* wcs2, size_t n); sl@0: IMPORT_C wchar_t* wtmpnam(wchar_t *s); sl@0: sl@0: #if defined(SYMBIAN_OE_LARGE_FILE_SUPPORT) && !defined(SYMBIAN_OE_NO_LFS) sl@0: #define wfopen64 wfopen sl@0: #define wfreopen64 wfreopen sl@0: #define wstat64 wstat sl@0: #define wcreat64 wcreat sl@0: #define wopen64 wopen sl@0: #define wreaddir64 wreaddir sl@0: #endif /* SYMBIAN_OE_LARGE_FILE_SUPPORT && !SYMBIAN_OE_NO_LFS */ sl@0: sl@0: sl@0: #endif //__SYMBIAN32__ sl@0: __END_DECLS sl@0: sl@0: #ifdef __cplusplus sl@0: } sl@0: #endif //__cplusplus sl@0: #endif /* !_WCHAR_H_ */