Actually MinGW has tchar.h, but it does not include wchar.h
*/
-#if defined(__MWERKS__) || defined(__VISAGECPP__) || defined(__MINGW32__) || defined(__WATCOMC__)
+#if defined(__VISAGECPP__) || defined(__MINGW32__) || defined(__WATCOMC__)
#ifndef HAVE_WCHAR_H
#define HAVE_WCHAR_H
#endif
#endif
-#if defined(__MWERKS__) && !defined(__MACH__)
- #ifndef HAVE_WCSLEN
- #define HAVE_WCSLEN
- #endif
-#endif
#ifdef HAVE_WCHAR_H
/* the current (as of Nov 2002) version of cygwin has a bug in its */
#define wxHAVE_TCHAR_SUPPORT
#elif defined(__DMC__)
#define wxHAVE_TCHAR_SUPPORT
-#elif defined(__WXPALMOS__)
- #include <stddef.h>
#elif defined(__MINGW32__) && wxCHECK_W32API_VERSION( 1, 0 )
#define wxHAVE_TCHAR_SUPPORT
#include <stddef.h>
#if !wxUSE_UNICODE
#define wxT(x) x
#else /* Unicode */
- /* use wxCONCAT_HELPER so that x could be expanded if it's a macro */
- #define wxT(x) wxCONCAT_HELPER(L, x)
+ /*
+ Notice that we use an intermediate macro to allow x to be expanded
+ if it's a macro itself.
+ */
+ #ifndef wxCOMPILER_BROKEN_CONCAT_OPER
+ #define wxT(x) wxCONCAT_HELPER(L, x)
+ #else
+ #define wxT(x) wxPREPEND_L(x)
+ #endif
#endif /* ASCII/Unicode */
#endif /* !defined(wxT) */
+/*
+ wxT_2 exists only for compatibility with wx 2.x and is the same as wxT() in
+ that version but nothing in the newer ones.
+ */
+#define wxT_2(x) x
+
/*
wxS ("wx string") macro can be used to create literals using the same
representation as wxString does internally, i.e. wchar_t in Unicode build
builds everywhere (see wxStringCharType definition above).
*/
#if wxUSE_UNICODE_WCHAR
- #define wxS(x) wxCONCAT_HELPER(L, x)
+ /*
+ As above with wxT(), wxS() argument is expanded if it's a macro.
+ */
+ #ifndef wxCOMPILER_BROKEN_CONCAT_OPER
+ #define wxS(x) wxCONCAT_HELPER(L, x)
+ #else
+ #define wxS(x) wxPREPEND_L(x)
+ #endif
#else /* wxUSE_UNICODE_UTF8 || ANSI */
#define wxS(x) x
#endif