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