Allow comparing wxString with wide strings in non-Unicode build
This fixes a compilation error in wxMSW private fonts support implementation, which compares wxString with a wide string but, unlike a local fix there, makes sense more broadly and should reduce the likelihood of similar errors in the future. It also makes comparisons with narrow C strings more efficient in the default, Unicode, build by using wxString::Cmp() method instead of creating a temporary wxString, as was done before. See #18172.
This commit is contained in:
@@ -3839,9 +3839,11 @@ public:
|
|||||||
// wxString comparison functions: operator versions are always case sensitive
|
// wxString comparison functions: operator versions are always case sensitive
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// comparison with C-style narrow and wide strings.
|
||||||
#define wxCMP_WXCHAR_STRING(p, s, op) 0 op s.Cmp(p)
|
#define wxCMP_WXCHAR_STRING(p, s, op) 0 op s.Cmp(p)
|
||||||
|
|
||||||
wxDEFINE_ALL_COMPARISONS(const wxChar *, const wxString&, wxCMP_WXCHAR_STRING)
|
wxDEFINE_ALL_COMPARISONS(const wchar_t *, const wxString&, wxCMP_WXCHAR_STRING)
|
||||||
|
wxDEFINE_ALL_COMPARISONS(const char *, const wxString&, wxCMP_WXCHAR_STRING)
|
||||||
|
|
||||||
#undef wxCMP_WXCHAR_STRING
|
#undef wxCMP_WXCHAR_STRING
|
||||||
|
|
||||||
@@ -3930,17 +3932,6 @@ inline bool wxString::iterator::operator<=(const const_iterator& i) const
|
|||||||
inline bool wxString::iterator::operator>=(const const_iterator& i) const
|
inline bool wxString::iterator::operator>=(const const_iterator& i) const
|
||||||
{ return i <= *this; }
|
{ return i <= *this; }
|
||||||
|
|
||||||
// comparison with C string in Unicode build
|
|
||||||
#if wxUSE_UNICODE
|
|
||||||
|
|
||||||
#define wxCMP_CHAR_STRING(p, s, op) wxString(p) op s
|
|
||||||
|
|
||||||
wxDEFINE_ALL_COMPARISONS(const char *, const wxString&, wxCMP_CHAR_STRING)
|
|
||||||
|
|
||||||
#undef wxCMP_CHAR_STRING
|
|
||||||
|
|
||||||
#endif // wxUSE_UNICODE
|
|
||||||
|
|
||||||
// we also need to provide the operators for comparison with wxCStrData to
|
// we also need to provide the operators for comparison with wxCStrData to
|
||||||
// resolve ambiguity between operator(const wxChar *,const wxString &) and
|
// resolve ambiguity between operator(const wxChar *,const wxString &) and
|
||||||
// operator(const wxChar *, const wxChar *) for "p == s.c_str()"
|
// operator(const wxChar *, const wxChar *) for "p == s.c_str()"
|
||||||
|
Reference in New Issue
Block a user