Fix comparisons of char and wchar_t with wxUniChar[Ref].
Comparisons didn't work correctly in the other direction as they were not reversed as needed. Fix this by adding wxDEFINE_COMPARISON_REV() macro which defines comparisons in terms of the reverse operations and use it for both wxUniChar and wxUniCharRef. Closes #14547. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72268 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -673,9 +673,13 @@ typedef short int WXTYPE;
|
||||
m(==,x,y,z) m(!=,x,y,z) m(>=,x,y,z) m(<=,x,y,z) m(>,x,y,z) m(<,x,y,z)
|
||||
|
||||
/*
|
||||
This is only used with wxDEFINE_COMPARISON_REV: it passes both the normal
|
||||
and the reversed comparison operators to the macro.
|
||||
These are only used with wxDEFINE_COMPARISON_[BY_]REV: they pass both the
|
||||
normal and the reversed comparison operators to the macro.
|
||||
*/
|
||||
#define wxFOR_ALL_COMPARISONS_2_REV(m, x, y) \
|
||||
m(==,x,y,==) m(!=,x,y,!=) m(>=,x,y,<=) \
|
||||
m(<=,x,y,>=) m(>,x,y,<) m(<,x,y,>)
|
||||
|
||||
#define wxFOR_ALL_COMPARISONS_3_REV(m, x, y, z) \
|
||||
m(==,x,y,z,==) m(!=,x,y,z,!=) m(>=,x,y,z,<=) \
|
||||
m(<=,x,y,z,>=) m(>,x,y,z,<) m(<,x,y,z,>)
|
||||
@@ -687,6 +691,9 @@ typedef short int WXTYPE;
|
||||
#define wxDEFINE_COMPARISON_REV(op, T1, T2, cmp, oprev) \
|
||||
inline bool operator op(T2 y, T1 x) { return cmp(x, y, oprev); }
|
||||
|
||||
#define wxDEFINE_COMPARISON_BY_REV(op, T1, T2, oprev) \
|
||||
inline bool operator op(T1 x, T2 y) { return y oprev x; }
|
||||
|
||||
/*
|
||||
Define all 6 comparison operators (==, !=, <, <=, >, >=) for the given
|
||||
types in the specified order. The implementation is provided by the cmp
|
||||
@@ -696,6 +703,14 @@ typedef short int WXTYPE;
|
||||
#define wxDEFINE_COMPARISONS(T1, T2, cmp) \
|
||||
wxFOR_ALL_COMPARISONS_3(wxDEFINE_COMPARISON, T1, T2, cmp)
|
||||
|
||||
/*
|
||||
Define all 6 comparison operators (==, !=, <, <=, >, >=) for the given
|
||||
types in the specified order, implemented in terms of existing operators
|
||||
for the reverse order.
|
||||
*/
|
||||
#define wxDEFINE_COMPARISONS_BY_REV(T1, T2) \
|
||||
wxFOR_ALL_COMPARISONS_2_REV(wxDEFINE_COMPARISON_BY_REV, T1, T2)
|
||||
|
||||
/*
|
||||
This macro allows to define all 12 comparison operators (6 operators for
|
||||
both orders of arguments) for the given types using the provided "cmp"
|
||||
|
Reference in New Issue
Block a user