X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/49828363f8186e48468606143820b02b4dbc8a43..e839ce8d9b4f6d696891a1b99507fc1a09b424d7:/include/wx/wxchar.h diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h index 42eb1a76be..d303b6535f 100644 --- a/include/wx/wxchar.h +++ b/include/wx/wxchar.h @@ -12,9 +12,9 @@ #ifndef _WX_WXCHAR_H_ #define _WX_WXCHAR_H_ -#ifdef __GNUG__ -#pragma interface "wxchar.h" -#endif +//#ifdef __GNUG__ +//#pragma interface "wxchar.h" +//#endif // only do SBCS or _UNICODE #if defined (_MBCS ) @@ -195,6 +195,10 @@ typedef _TUCHAR wxUChar; #endif #elif defined(__GNUWIN32__) && !defined(__MINGW32__) // Cygwin (not Mingw32) doesn't have wcslen.h, needed in buffer.h #define wxUSE_WCHAR_T 0 + #elif defined(__BORLANDC__) // WIN16 BC++ + #define wxUSE_WCHAR_T 0 + #elif defined(__WATCOMC__) + #define wxUSE_WCHAR_T 0 #else // add additional compiler checks if this fails #define wxUSE_WCHAR_T 1 @@ -319,7 +323,50 @@ typedef unsigned char wxUChar; #define wxSetlocale setlocale // string.h functions -#define wxStricmp strcasecmp +// #define wxStricmp strcasecmp + +// Taken from string.h since it tests for platform more correctly +// portable strcasecmp/_stricmp +inline int WXDLLEXPORT wxStricmp(const char *psz1, const char *psz2) +{ +#if defined(__VISUALC__) || ( defined(__MWERKS__) && defined(__INTEL__) ) + return _stricmp(psz1, psz2); +#elif defined(__SC__) + return _stricmp(psz1, psz2); +#elif defined(__SALFORDC__) + return stricmp(psz1, psz2); +#elif defined(__BORLANDC__) + return stricmp(psz1, psz2); +#elif defined(__WATCOMC__) + return stricmp(psz1, psz2); +#elif defined(__UNIX__) || defined(__GNUWIN32__) + return strcasecmp(psz1, psz2); +#elif defined(__MWERKS__) && !defined(__INTEL__) + register char c1, c2; + do { + c1 = tolower(*psz1++); + c2 = tolower(*psz2++); + } while ( c1 && (c1 == c2) ); + + return c1 - c2; +#else + // almost all compilers/libraries provide this function (unfortunately under + // different names), that's why we don't implement our own which will surely + // be more efficient than this code (uncomment to use): + /* + register char c1, c2; + do { + c1 = tolower(*psz1++); + c2 = tolower(*psz2++); + } while ( c1 && (c1 == c2) ); + + return c1 - c2; + */ + + #error "Please define string case-insensitive compare for your OS/compiler" +#endif // OS/compiler +} + // #define wxStrtok strtok_r // this needs a configure check // leave the rest to defaults below