X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/79af3d3898308751f7ea34cc498b1776b8048bb7..43330cc9deda567a4713d42fb05bffb624781fb3:/include/wx/wxchar.h diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h index cd4a4957ac..21afa7f864 100644 --- a/include/wx/wxchar.h +++ b/include/wx/wxchar.h @@ -57,19 +57,22 @@ // wide-character functions // ---------------------------------------------------------------------------- -#ifdef __WIN32__ - // VC++ and BC++ starting with 5.2 have TCHAR support - #ifdef __VISUALC__ - #define wxHAVE_TCHAR_FUNCTIONS - #elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x520) - #define wxHAVE_TCHAR_FUNCTIONS - // w32api isn't yet tchar safe, will be soon, this is a placeholder - #elif defined(__GNUWIN32__) && wxCHECK_W32API_VERSION( 10, 0 ) - #define wxHAVE_TCHAR_FUNCTIONS - #include - #include - #include - #endif +// VC++ and BC++ starting with 5.2 have TCHAR support +#ifdef __VISUALC__ + #define wxHAVE_TCHAR_FUNCTIONS +#elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x520) + #define wxHAVE_TCHAR_FUNCTIONS +#elif defined(__MINGW32__) && wxCHECK_W32API_VERSION( 1, 0 ) + #define wxHAVE_TCHAR_FUNCTIONS + #include + #include + #include +#elif defined(__CYGWIN__) + #ifndef HAVE_WCSLEN + #define HAVE_WCSLEN + #endif // !HAVE_WCSLEN + #include + #include #elif defined(__VISAGECPP__) && (__IBMCPP__ >= 400) // VisualAge 4.0+ supports TCHAR #define wxHAVE_TCHAR_FUNCTIONS @@ -114,6 +117,11 @@ // time.h functions -- none defined in tchar.h #define wxAsctime asctime #define wxCtime ctime +#elif defined(__MWERKS__) + // for wcslen + #if wxUSE_WCHAR_T + #include + #endif #endif // compilers with (good) TCHAR support #ifdef wxHAVE_TCHAR_FUNCTIONS @@ -177,6 +185,7 @@ typedef _TUCHAR wxUChar; # define wxStrcspn _tcscspn # define wxStrftime _tcsftime # define wxStricmp _tcsicmp +# define wxStrnicmp _tcsnicmp # define wxStrlen_ _tcslen // used in wxStrlen inline function # define wxStrncat _tcsncat # define wxStrncmp _tcsncmp @@ -193,6 +202,13 @@ typedef _TUCHAR wxUChar; // stdio.h functions #ifndef wxNO_TCHAR_STDIO +# if wxUSE_UNICODE_MSLU +# define wxRemove wxMSLU__tremove +# define wxRename wxMSLU__trename +# else +# define wxRemove _tremove +# define wxRename _trename +# endif # define wxFgetc _fgettc # define wxFgetchar _fgettchar # define wxFgets _fgetts @@ -210,8 +226,6 @@ typedef _TUCHAR wxUChar; # define wxPutc _puttc # define wxPutchar _puttchar # define wxPuts _putts -# define wxRemove _tremove -# define wxRename _trename # define wxScanf _tscanf # define wxSprintf _stprintf # define wxSscanf _stscanf @@ -265,7 +279,7 @@ typedef _TUCHAR wxUChar; # if defined(__VISUALC__) && (__VISUALC__ < 900) # define wxUSE_WCHAR_T 0 // wchar_t is not available for MSVC++ 1.5 # elif defined(__UNIX__) -# if defined(HAVE_WCSTR_H) || defined(HAVE_WCHAR_H) || defined(__FreeBSD__) +# if defined(HAVE_WCSTR_H) || defined(HAVE_WCHAR_H) || defined(__FreeBSD__) || defined(__DARWIN__) # define wxUSE_WCHAR_T 1 # else # define wxUSE_WCHAR_T 0 @@ -276,26 +290,29 @@ typedef _TUCHAR wxUChar; # define wxUSE_WCHAR_T 0 # elif defined(__WATCOMC__) # define wxUSE_WCHAR_T 0 -# elif defined(__VISAGECPP__) && (__IBMCPP__ >= 400) -# define wxUSE_WCHAR_T 1 +# elif defined(__VISAGECPP__) && (__IBMCPP__ < 400) +# define wxUSE_WCHAR_T 0 # else - // add additional compiler checks if this fails + // add additional compiler checks if this fails # define wxUSE_WCHAR_T 1 # endif # endif // !defined(wxUSE_WCHAR_T) -# if wxUSE_WCHAR_T -# ifdef HAVE_WCSTR_H -# include -# else -# if defined(__FreeBSD__) || (defined(__APPLE__) && defined(__UNIX__)) -# include -# define wxNEED_WCSLEN -# else -# include -# endif -# endif -# endif +# if wxUSE_WCHAR_T +# ifdef HAVE_WCHAR_H + // include wchar.h to get wcslen() declaration used by wx/buffer.h + // stddef.h is needed for Cygwin +# include +# include +# elif defined(HAVE_WCSTR_H) + // old compilers have wcslen() here +# include +# elif defined(__FreeBSD__) || defined(__DARWIN__) || defined(__EMX__) + // include stdlib.h for wchar_t, wcslen is provided in wxchar.cpp +# include + size_t WXDLLEXPORT wcslen(const wchar_t *s); +# endif // HAVE_WCHAR_H +# endif // wxUSE_WCHAR_T // check whether we are doing Unicode # if wxUSE_UNICODE @@ -355,6 +372,29 @@ typedef unsigned __WCHAR_TYPE__ wxUChar; # define wxStrtoul wcstoul # define wxStrxfrm wcsxfrm +# define wxFgetc fgetwc +# define wxFgetchar fgetwchar +# define wxFgets fgetws +# define wxFputc fputwc +# define wxFputchar fputwchar +# define wxFprintf fwprintf +# define wxFscanf fwscanf +# define wxGetc getwc +# define wxGetchar getwchar +# define wxGets getws +# define wxPrintf wprintf +# define wxPutc wputc +# define wxPutchar wputchar +# define wxPuts putws +# define wxScanf wscanf +# define wxSnprintf swprintf +# define wxSscanf swscanf +# define wxUngetc ungetwc +# define wxVfprint vfwprintf +# define wxVprintf vwprintf +# define wxVsscanf vswscanf +# define wxVsnprintf vswprintf + // glibc doesn't have wc equivalents of the other stuff # define wxNEED_WX_STDIO_H # define wxNEED_WX_STDLIB_H @@ -368,17 +408,11 @@ typedef unsigned __WCHAR_TYPE__ wxUChar; # include # include -# if 0 // temporary - preserve binary compatibilty - typedef char wxChar; - typedef signed char wxSChar; - typedef unsigned char wxUChar; -# else -# define wxChar char -# define wxSChar signed char -# define wxUChar unsigned char -# endif + typedef char wxChar; + typedef signed char wxSChar; + typedef unsigned char wxUChar; -# if defined(__FreeBSD__) || (defined(__APPLE__) && defined(__UNIX__)) +# if defined(__FreeBSD__) || defined(__DARWIN__) # undef _T # endif @@ -425,7 +459,7 @@ typedef unsigned __WCHAR_TYPE__ wxUChar; // define wxStricmp for various compilers without Unicode possibilities #if !defined(wxStricmp) && !wxUSE_UNICODE -# if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__SALFORDC__) || defined(__VISAGECPP__) || defined(__EMX__) +# if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__SALFORDC__) || defined(__VISAGECPP__) || defined(__EMX__) || defined(__DJGPP__) # define wxStricmp stricmp # define wxStrnicmp strnicmp # elif defined(__SC__) || defined(__VISUALC__) || (defined(__MWERKS__) && defined(__INTEL__)) @@ -452,7 +486,9 @@ typedef unsigned __WCHAR_TYPE__ wxUChar; # define wxStrcoll strcoll # define wxStrcpy strcpy # define wxStrcspn strcspn +#if !defined(__MWERKS__) || !defined(__WXMAC__) # define wxStrdup strdup +#endif # define wxStrlen_ strlen // used in wxStrlen inline function # define wxStrncat strncat # define wxStrncmp strncmp @@ -469,29 +505,30 @@ typedef unsigned __WCHAR_TYPE__ wxUChar; # endif # ifdef wxNEED_WX_STDIO_H +# define wxFopen fopen +# define wxFreopen freopen +# define wxPerror perror +# define wxRemove remove +# define wxRename rename +# define wxTmpnam tmpnam + # define wxFgetc fgetc # define wxFgetchar fgetchar # define wxFgets fgets -# define wxFopen fopen # define wxFputc fputc # define wxFputchar fputchar # define wxFprintf fprintf -# define wxFreopen freopen # define wxFscanf fscanf # define wxGetc getc # define wxGetchar getchar # define wxGets gets -# define wxPerror perror # define wxPrintf printf # define wxPutc putc # define wxPutchar putchar # define wxPuts puts -# define wxRemove remove -# define wxRename rename # define wxScanf scanf # define wxSprintf sprintf # define wxSscanf sscanf -# define wxTmpnam tmpnam # define wxUngetc ungetc # define wxVfprint vfprintf # define wxVprintf vprintf @@ -500,6 +537,7 @@ typedef unsigned __WCHAR_TYPE__ wxUChar; # undef wxNEED_WX_STDIO_H # endif + # ifdef wxNEED_WX_STDLIB_H # define wxAtof atof # define wxAtoi atoi @@ -517,11 +555,6 @@ typedef unsigned __WCHAR_TYPE__ wxUChar; # endif #endif //!Unicode -#if defined(wxNEED_WCSLEN) && wxUSE_UNICODE -# define wcslen wxStrlen -# undef wxNEED_WCSLEN -#endif - // checks whether the passed in pointer is NULL and if the string is empty inline bool wxIsEmpty(const wxChar *p) { return !p || !*p; } @@ -567,6 +600,10 @@ WXDLLEXPORT wxChar * wxStrdup(const wxChar *psz); WXDLLEXPORT int wxStricmp(const wxChar *psz1, const wxChar *psz2); #endif +#ifndef wxStrnicmp +WXDLLEXPORT int wxStrnicmp(const wxChar *psz1, const wxChar *psz2, size_t len); +#endif + #ifndef wxStrtok WXDLLEXPORT wxChar * wxStrtok(wxChar *psz, const wxChar *delim, wxChar **save_ptr); #endif @@ -576,10 +613,6 @@ class wxWCharBuffer; WXDLLEXPORT wxWCharBuffer wxSetlocale(int category, const wxChar *locale); #endif -#ifdef wxNEED_WCSLEN // for use in buffer.h -WXDLLEXPORT size_t wcslen(const wchar_t *s); -#endif - #ifdef wxNEED_WX_CTYPE_H WXDLLEXPORT int wxIsalnum(wxChar ch); WXDLLEXPORT int wxIsalpha(wxChar ch); @@ -598,7 +631,9 @@ WXDLLEXPORT int wxToupper(wxChar ch); #ifdef wxNEED_WX_STRING_H WXDLLEXPORT wxChar * wxStrcat(wxChar *dest, const wxChar *src); -WXDLLEXPORT wxChar * wxStrchr(const wxChar *s, wxChar c); +WXDLLEXPORT const wxChar * wxStrchr(const wxChar *s, wxChar c); +WXDLLEXPORT wxChar * wxStrchr(wxChar *s, wxChar c) + { return (wxChar *)wxStrchr((const wxChar *)s, c); } WXDLLEXPORT int wxStrcmp(const wxChar *s1, const wxChar *s2); WXDLLEXPORT int wxStrcoll(const wxChar *s1, const wxChar *s2); WXDLLEXPORT wxChar * wxStrcpy(wxChar *dest, const wxChar *src); @@ -607,10 +642,16 @@ WXDLLEXPORT size_t wxStrlen(const wxChar *s); WXDLLEXPORT wxChar * wxStrncat(wxChar *dest, const wxChar *src, size_t n); WXDLLEXPORT int wxStrncmp(const wxChar *s1, const wxChar *s2, size_t n); WXDLLEXPORT wxChar * wxStrncpy(wxChar *dest, const wxChar *src, size_t n); -WXDLLEXPORT wxChar * wxStrpbrk(const wxChar *s, const wxChar *accept); -WXDLLEXPORT wxChar * wxStrrchr(const wxChar *s, wxChar c); +WXDLLEXPORT const wxChar * wxStrpbrk(const wxChar *s, const wxChar *accept); +WXDLLEXPORT wxChar * wxStrpbrk(wxChar *s, const wxChar *accept) + { return (wxChar *)wxStrpbrk((const wxChar *)s, accept); } +WXDLLEXPORT const wxChar * wxStrrchr(const wxChar *s, wxChar c); +WXDLLEXPORT wxChar * wxStrrchr(wxChar *s, wxChar c) + { return (wxChar *)wxStrrchr((const wxChar *)s, c); } WXDLLEXPORT size_t wxStrspn(const wxChar *s, const wxChar *accept); -WXDLLEXPORT wxChar * wxStrstr(const wxChar *haystack, const wxChar *needle); +WXDLLEXPORT const wxChar * wxStrstr(const wxChar *haystack, const wxChar *needle); +WXDLLEXPORT wxChar *wxStrstr(wxChar *haystack, const wxChar *needle) + { return (wxChar *)wxStrstr((const wxChar *)haystack, needle); } WXDLLEXPORT double wxStrtod(const wxChar *nptr, wxChar **endptr); WXDLLEXPORT long int wxStrtol(const wxChar *nptr, wxChar **endptr, int base); WXDLLEXPORT unsigned long int wxStrtoul(const wxChar *nptr, wxChar **endptr, int base); @@ -624,14 +665,6 @@ WXDLLEXPORT FILE * wxFopen(const wxChar *path, const wxChar *mode); WXDLLEXPORT FILE * wxFreopen(const wxChar *path, const wxChar *mode, FILE *stream); WXDLLEXPORT int wxRemove(const wxChar *path); WXDLLEXPORT int wxRename(const wxChar *oldpath, const wxChar *newpath); -WXDLLEXPORT int wxPrintf(const wxChar *fmt, ...); -WXDLLEXPORT int wxVprintf(const wxChar *fmt, va_list argptr); -WXDLLEXPORT int wxFprintf(FILE *stream, const wxChar *fmt, ...); -WXDLLEXPORT int wxVfprintf(FILE *stream, const wxChar *fmt, va_list argptr); -WXDLLEXPORT int wxSprintf(wxChar *buf, const wxChar *fmt, ...); -WXDLLEXPORT int wxVsprintf(wxChar *buf, const wxChar *fmt, va_list argptr); -WXDLLEXPORT int wxSscanf(const wxChar *buf, const wxChar *fmt, ...); -WXDLLEXPORT int wxVsscanf(const wxChar *buf, const wxChar *fmt, va_list argptr); #endif #ifndef wxAtof @@ -665,12 +698,22 @@ WXDLLEXPORT size_t wxStrftime(wxChar *s, size_t max, const wxChar *fmt, const // and _() in wxWindows sources #define wxT(x) _T(x) -// a Unicode-friendly __FILE__ analog +// Unicode-friendly __FILE__, __DATE__ and __TIME__ analogs #ifndef __TFILE__ #define __XFILE__(x) wxT(x) #define __TFILE__ __XFILE__(__FILE__) #endif +#ifndef __TDATE__ + #define __XDATE__(x) wxT(x) + #define __TDATE__ __XDATE__(__DATE__) +#endif + +#ifndef __TTIME__ + #define __XTIME__(x) wxT(x) + #define __TTIME__ __XTIME__(__TIME__) +#endif + #endif //_WX_WXCHAR_H_