Fex search in wxSortedArrayString with custom compare function in STL build

This commit is contained in:
Pavel Tyunin
2021-02-26 11:52:44 +02:00
parent 2451f8085b
commit 00fec01308
2 changed files with 7 additions and 3 deletions

View File

@@ -255,6 +255,9 @@ public:
Add(item); Add(item);
} }
protected:
SCMPFUNC GetCompareFunction() const wxNOEXCEPT { return m_fnCompare; }
private: private:
SCMPFUNC m_fnCompare; SCMPFUNC m_fnCompare;
}; };

View File

@@ -198,15 +198,16 @@ int wxSortedArrayString::Index(const wxString& str,
wxASSERT_MSG( bCase && !bFromEnd, wxASSERT_MSG( bCase && !bFromEnd,
"search parameters ignored for sorted array" ); "search parameters ignored for sorted array" );
SCMPFUNC function = GetCompareFunction();
wxSortedArrayString::const_iterator wxSortedArrayString::const_iterator
it = std::lower_bound(begin(), end(), str, it = std::lower_bound(begin(), end(), str,
#if __cplusplus >= 201103L || wxCHECK_VISUALC_VERSION(14) #if __cplusplus >= 201103L || wxCHECK_VISUALC_VERSION(14)
[](const wxString& s1, const wxString& s2) [function](const wxString& s1, const wxString& s2)
{ {
return s1 < s2; return function(s1, s2) < 0;
} }
#else // C++98 version #else // C++98 version
wxStringCompare(wxStringCmp()) wxStringCompare(function)
#endif // C++11/C++98 #endif // C++11/C++98
); );