X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/360b63dd328617a32752f61b45d347963c6c5ee1..f74172ab4256c9e7c665e44e2f94ce12bf84a37f:/src/common/dynarray.cpp?ds=sidebyside diff --git a/src/common/dynarray.cpp b/src/common/dynarray.cpp index 39db10d384..63d9e7b5ca 100644 --- a/src/common/dynarray.cpp +++ b/src/common/dynarray.cpp @@ -78,28 +78,29 @@ int name::Index(T lItem, bool bFromEnd) const \ } \ \ /* add item assuming the array is sorted with fnCompare function */ \ -void name::Add(T lItem, CMPFUNC fnCompare) \ +size_t name::Add(T lItem, CMPFUNC fnCompare) \ { \ - Insert(lItem, IndexForInsert(lItem, fnCompare)); \ -} \ - \ + size_t idx = IndexForInsert(lItem, fnCompare); \ + Insert(lItem, idx); \ + return idx; \ +} #if wxUSE_STL #define _WX_DEFINE_BASEARRAY_NOCOMMON(T, name) \ size_t name::IndexForInsert(T lItem, CMPFUNC fnCompare) const \ { \ - Predicate p(fnCompare); \ + Predicate p((SCMPFUNC)fnCompare); \ const_iterator it = std::lower_bound(begin(), end(), lItem, p); \ return it - begin(); \ } \ \ int name::Index(T lItem, CMPFUNC fnCompare) const \ { \ - size_t n = IndexForInsert(lItem, fnCompare); \ - \ - return (n >= size() || \ - (*fnCompare)(&lItem, &(*this)[n])) ? wxNOT_FOUND : (int)n; \ + Predicate p((SCMPFUNC)fnCompare); \ + const_iterator it = std::lower_bound(begin(), end(), lItem, p); \ + return (it != end() && \ + p(lItem, *it)) ? (int)(it - begin()) : wxNOT_FOUND; \ } \ \ void name::Shrink() \