]> git.saurik.com Git - wxWidgets.git/commitdiff
Add wxT_2() macro for compatibility with wxWidgets 2 API.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 19 Feb 2011 13:44:19 +0000 (13:44 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 19 Feb 2011 13:44:19 +0000 (13:44 +0000)
This macro can be used to make the same code compile with both v2 and v3 as it
expands to wxT() in 2.8 and nothing in later versions.

See #12925.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66968 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
include/wx/chartype.h
interface/wx/chartype.h

index d1769863ed3ce7da15ce847f4071c4dab08dd6f9..22af6ab4bf14af5fa09ed668b3ed741a5cf1ecb5 100644 (file)
@@ -46,7 +46,9 @@ changes:
 - Some structure fields which used to be of type "const wxChar *" (such as
   wxCmdLineEntryDesc::shortName, longName and description fields) are now of
   type "const char *", you need to remove wxT() or _T() around the values used
-  to initialize them (which should normally always be ASCII).
+  to initialize them (which should normally always be ASCII). If you want your
+  code to remain compatible with Unicode build of previous wx version, please
+  use the special wxT_2, which is the same as wxT in 2.x only, instead.
 
 - wxIPC classes didn't work correctly in Unicode build before, this was fixed
   but at a price of breaking backwards compatibility: many methods which used
index c0658eaf9711a3ff4815f07cd3deb642a34681d4..3c3944a3608e0daf4d311df077ac71c8a1854e82 100644 (file)
     #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
index cf7e724e38a53da8540eeb4becd479d7f3fb52c8..7678cec9c8a4abfc927e3152a6facd7085b4d72f 100644 (file)
 */
 #define wxT(string)
 
+/**
+    Compatibility macro which expands to wxT() in wxWidgets 2 only.
+
+    This macro can be used in the code which needs to compile with both
+    wxWidgets 2 and 3 versions in places where v2 API requires a Unicode string
+    (in Unicode build) and v3 API only accepts a standard standard narrow
+    string as in e.g. wxCmdLineEntryDesc structure objects initializers.
+
+    Example of use:
+    @code
+    const wxCmdLineEntryDesc cmdLineDesc[] =
+    {
+        { wxCMD_LINE_SWITCH, wxT_2("q"), wxT_2("quiet"),
+          wxT_2("Don't output verbose messages") },
+        wxCMD_LINE_DESC_END
+    };
+    @endcode
+
+    Without @c wxT_2 the code above wouldn't compile with wxWidgets 2, with @c
+    wxT instead of it, it wouldn't compile with wxWidgets 3.
+
+    @see wxT()
+
+    @header{wx/chartype.h}
+ */
+
 /**
     wxS is macro which can be used with character and string literals (in other words,
     @c 'x' or @c "foo") to either convert them to wide characters or wide strings