#endif /* !defined(wxUSE_WCHAR_T) */
/* Unicode support requires wchar_t */
-#if wxUSE_UNICODE && !wxUSE_WCHAR_T
- #error "wchar_t must be available in Unicode build"
+#if !wxUSE_WCHAR_T
+ #error "wchar_t must be available"
#endif /* Unicode */
/*
/* depending on the platform, Unicode build can either store wxStrings as
wchar_t* or UTF-8 encoded char*: */
#if wxUSE_UNICODE
- // FIXME-UTF8: what would be better place for this?
+ /* FIXME-UTF8: what would be better place for this? */
#if defined(wxUSE_UTF8_LOCALE_ONLY) && !defined(wxUSE_UNICODE_UTF8)
#error "wxUSE_UTF8_LOCALE_ONLY only makes sense with wxUSE_UNICODE_UTF8"
#endif
#endif
/* define char type used by wxString internal representation: */
-#if wxUSE_UNICODE_UTF8
- typedef char wxStringCharType;
-#elif wxUSE_UNICODE_WCHAR
+#if wxUSE_UNICODE_WCHAR
typedef wchar_t wxStringCharType;
-#else
+#else /* wxUSE_UNICODE_UTF8 || ANSI */
typedef char wxStringCharType;
#endif
#endif /* ASCII/Unicode */
#endif /* !defined(_T) */
+/*
+ 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
+ under Windows or char in UTF-8-based Unicode builds and (deprecated) ANSI
+ builds everywhere (see wxStringCharType definition above).
+ */
+#if wxUSE_UNICODE_WCHAR
+ #define wxS(x) wxCONCAT_HELPER(L, x)
+#else /* wxUSE_UNICODE_UTF8 || ANSI */
+ #define wxS(x) x
+#endif
+
/* although global macros with such names are normally bad, we want to have */
/* another name for _T() which should be used to avoid confusion between */
/* _T() and _() in wxWidgets sources */