X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/585ae8cbc0ba875d2b0e836d5db429e702f0c289..892b89f3b79a756ba3c278c605b79a6fa377d60f:/include/wx/wxchar.h diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h index f764e67eb7..bd91e9bb05 100644 --- a/include/wx/wxchar.h +++ b/include/wx/wxchar.h @@ -47,6 +47,7 @@ # define HAVE_WCSLEN 1 # include + # if wxUSE_UNICODE // temporary - preserve binary compatibility typedef _TCHAR wxChar; typedef _TSCHAR wxSChar; @@ -168,15 +169,130 @@ typedef _TUCHAR wxUChar; # endif // wchar_t is available # undef wxUSE_WCHAR_T +// This test is for C++Builder +#if __BORLANDC__ >= 0x530 +# define wxUSE_WCHAR_T 0 +#else # define wxUSE_WCHAR_T 1 - +# define wxNEED_WCSLEN +#endif # define wxNEED_WX_CTYPE_H // #define wxStrtok strtok_r // Borland C++ 4.52 doesn't have strtok_r # define wxNEED_WX_STRING_H # define wxNEED_WX_STDIO_H # define wxNEED_WX_STDLIB_H # define wxNEED_WX_TIME_H -# define wxNEED_WCSLEN + +// VisualAge C++ V4.0 has broad tchar support +#elif defined(__VISAGECPP__) && __IBMCPP__ >= 400 + +# define HAVE_WCSLEN 1 +# include +# include + +# if wxUSE_UNICODE // temporary - preserve binary compatibility +typedef _TCHAR wxChar; +typedef _TSCHAR wxSChar; +typedef _TUCHAR wxUChar; +# else +# define wxChar char +# define wxSChar signed char +# define wxUChar unsigned char +# endif + // wchar_t is available +# undef wxUSE_WCHAR_T +# define wxUSE_WCHAR_T 1 + + // ctype.h functions +# define wxIsalnum _istalnum +# define wxIsalpha _istalpha +# define wxIsctrl _istcntrl +# define wxIsdigit _istdigit +# define wxIsgraph _istgraph +# define wxIslower _istlower +# define wxIsprint _istprint +# define wxIspunct _istpunct +# define wxIsspace _istspace +# define wxIsupper _istupper +# define wxIsxdigit _istxdigit +# define wxTolower _totlower +# define wxToupper _totupper + + // locale.h functons -- not defined in tchar.h +# define wxSetlocale setlocale + + // string.h functions +# define wxStrcat _tcscat +# define wxStrchr _tcschr +# define wxStrcmp _tcscmp +# define wxStrcoll _tcscoll +# define wxStrcpy _tcscpy +# define wxStrcspn _tcscspn +# define wxStrftime _tcsftime +# define wxStricmp _tcsicmp +# define wxStrlen_ _tcslen // used in wxStrlen inline function +# define wxStrncat _tcsncat +# define wxStrncmp _tcsncmp +# define wxStrncpy _tcsncpy +# define wxStrpbrk _tcspbrk +# define wxStrrchr _tcsrchr +# define wxStrspn _tcsspn +# define wxStrstr _tcsstr +# define wxStrtod _tcstod +// is there a _tcstok[_r] ? +# define wxStrtol _tcstol +# define wxStrtoul _tcstoul +# define wxStrxfrm _tcsxfrm + + // stdio.h functions +# define wxFgetc _fgettc +# define wxFgets _fgetts +# define wxFputc _fputtc +# define wxFprintf _ftprintf +# define wxFscanf _ftscanf +# define wxGetc _gettc +# define wxGetchar _gettchar +# define wxPrintf _tprintf +# define wxPutc _puttc +# define wxPutchar _puttchar +# define wxScanf _tscanf +# define wxSprintf _stprintf +# define wxSscanf _stscanf +# define wxVfprint _vftprintf +# define wxVprintf _vtprintf +# define wxVsprintf _vstprintf +// not defined in tchar.h +# define wxFgetchar fgetchar +# define wxFopen fopen +# define wxFputchar fputchar +# define wxFreopen freopen +# define wxGets gets +# define wxPerror perror +# define wxPuts puts +# define wxRemove remove +# define wxRename rename +# define wxTmpnam tmpnam +# define wxUngetc ungetc +# define wxVsscanf vsscanf + + // stdlib.h functions -- none defined in tchar.h +# if !wxUSE_UNICODE +# define wxAtof atof +# endif +# define wxAtoi atoi +# define wxAtol atol +# define wxGetenv getenv +# define wxSystem system + + // time.h functions -- none defined in tchar.h +# define wxAsctime asctime +# define wxCtime ctime + +// #elif defined(XXX) + // #include XXX-specific files here + // typeddef YYY wxChar; + + // translate wxZZZ names #else//!TCHAR-aware compilers @@ -289,50 +405,57 @@ 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 +# 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 -# ifdef __FreeBSD__ -# undef _T -# endif -# define _T(x) x +# ifdef __FreeBSD__ +# undef _T +# endif + +# if !defined(__MINGW32__) || !defined(_T) +# define _T(x) x +# endif // ctype.h functions -# define wxIsalnum isalnum -# define wxIsalpha isalpha -# define wxIsctrl isctrl -# define wxIsdigit isdigit -# define wxIsgraph isgraph -# define wxIslower islower -# define wxIsprint isprint -# define wxIspunct ispunct -# define wxIsspace isspace -# define wxIsupper isupper -# define wxIsxdigit isxdigit -# define wxTolower tolower -# define wxToupper toupper - - // locale.h functons -# define wxSetlocale setlocale - - // string.h functions - // #define wxStricmp strcasecmp - // wxStricmp is defined below!! - - // #define wxStrtok strtok_r // this needs a configure check +# define wxIsalnum isalnum +# define wxIsalpha isalpha +# define wxIsctrl isctrl +# define wxIsdigit isdigit +# define wxIsgraph isgraph +# define wxIslower islower +# define wxIsprint isprint +# define wxIspunct ispunct +# define wxIsspace isspace +# define wxIsupper isupper +# define wxIsxdigit isxdigit +# define wxTolower tolower +# define wxToupper toupper + + // locale.h functons +# define wxSetlocale setlocale + + // string.h functions + // #define wxStricmp strcasecmp + // wxStricmp is defined below!! + + #ifdef HAVE_STRTOK_R + #define wxStrtok(str, sep, last) strtok_r(str, sep, last) + #else + #define wxStrtok(str, sep, last) strtok(str, sep) + #endif // leave the rest to defaults below -# define wxNEED_WX_STRING_H -# define wxNEED_WX_STDIO_H -# define wxNEED_WX_STDLIB_H -# define wxNEED_WX_TIME_H +# define wxNEED_WX_STRING_H +# define wxNEED_WX_STDIO_H +# define wxNEED_WX_STDLIB_H +# define wxNEED_WX_TIME_H # endif//Unicode #endif//TCHAR-aware compilers @@ -341,10 +464,13 @@ typedef unsigned char wxUChar; #if !defined(wxStricmp) && !wxUSE_UNICODE # if defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__SALFORDC__) || defined(__VISAGECPP__) || defined(__EMX__) # define wxStricmp stricmp +# define wxStrnicmp strnicmp # elif defined(__SC__) || defined(__VISUALC__) || (defined(__MWERKS__) && defined(__INTEL__)) # define wxStricmp _stricmp +# define wxStrnicmp _strnicmp # elif defined(__UNIX__) || defined(__GNUWIN32__) # define wxStricmp strcasecmp +# define wxStrnicmp strncasecmp # elif defined(__MWERKS__) && !defined(__INTEL__) // use wxWindows' implementation # else @@ -557,6 +683,17 @@ WXDLLEXPORT int wxSystem(const wxChar *psz); WXDLLEXPORT size_t wxStrftime(wxChar *s, size_t max, const wxChar *fmt, const struct tm *tm); #endif +// although global macros with such names are really bad, we want to have +// another name for _T() which should be used to avoid confusion between _T() +// and _() in wxWindows sources +#define wxT(x) _T(x) + +// a Unicode-friendly __FILE__ analog +#ifndef __TFILE__ + #define __XFILE__(x) wxT(x) + #define __TFILE__ __XFILE__(__FILE__) +#endif + #endif //_WX_WXCHAR_H_