#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 )
+ #elif defined(__MINGW32__) && wxCHECK_W32API_VERSION( 1, 0 )
#define wxHAVE_TCHAR_FUNCTIONS
#include <stddef.h>
#include <string.h>
#include <ctype.h>
+ #elif defined(__CYGWIN__)
+ #include <stddef.h>
+ #include <wchar.h>
#endif
#elif defined(__VISAGECPP__) && (__IBMCPP__ >= 400)
// VisualAge 4.0+ supports TCHAR
// time.h functions -- none defined in tchar.h
#define wxAsctime asctime
#define wxCtime ctime
+#elif defined(__MWERKS__)
+ // for wcslen
+ #if wxUSE_WCHAR_T
+ #include <wchar.h>
+ #endif
#endif // compilers with (good) TCHAR support
#ifdef wxHAVE_TCHAR_FUNCTIONS
# 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
# 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
# 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
# define wxUSE_WCHAR_T 1
# ifdef HAVE_WCSTR_H
# include <wcstr.h>
# else
-# if defined(__FreeBSD__) || (defined(__APPLE__) && defined(__UNIX__))
-# include <stdlib.h>
-# define wxNEED_WCSLEN
-# else
+# if defined(HAVE_WCHAR_H)
+
+// include wchar.h to get wcslen() declaration used by wx/buffer.h
# include <wchar.h>
+
+# elif defined(__FreeBSD__) || defined(__DARWIN__)
+
+// include stdlib.h for wchar_t, wcslen is provided in wxchar.cpp
+# include <stdlib.h>
+size_t WXDLLEXPORT wcslen(const wchar_t *s);
+
# endif
# endif
# endif
# define wxUChar unsigned char
# endif
-# if defined(__FreeBSD__) || (defined(__APPLE__) && defined(__UNIX__))
+# if defined(__FreeBSD__) || defined(__DARWIN__)
# undef _T
# endif
# 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; }
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
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);