diff --git a/changes.txt b/changes.txt index 4944ca9..d511b84 100644 --- a/changes.txt +++ b/changes.txt @@ -1,7 +1,7 @@ -------------------------- Changes in 1.9 (not yet released) -- core::array search functions can now work with any types as long as corresponding operator= (linear_search) or operator< (binary_search) are implemented. +- core::array::linear_search and linear_reverse_search can now work with any types as long as corresponding operator= is implemented. - Add checks for sane image sizes in some image loaders (so far: bmp, jpg, tga, png). Thanks @sfan5 for the original patch (got modified a bit): https://github.com/minetest/irrlicht/commit/dbd39120e7ed8c0c97e48e2df62347627f3c1d42 - Add IImage::checkDataSizeLimit and make IImage getDataSizeFromFormat return size_t so image loaders can check if sizes are sane. diff --git a/include/irrArray.h b/include/irrArray.h index d346b0f..340e372 100644 --- a/include/irrArray.h +++ b/include/irrArray.h @@ -432,12 +432,10 @@ public: /** The array will be sorted before the binary search if it is not already sorted. Caution is advised! Be careful not to call this on unsorted const arrays, or the slower method will be used. - Only works if corresponding operator< is implemented. \param element Element to search for. \return Position of the searched element if it was found, otherwise -1 is returned. */ - template - s32 binary_search(const E& element) + s32 binary_search(const T& element) { sort(); return binary_search(element, 0, used-1); @@ -447,12 +445,10 @@ public: //! Performs a binary search for an element if possible, returns -1 if not found. /** This method is for const arrays and so cannot call sort(), if the array is not sorted then linear_search will be used instead. Potentially very slow! - Only works if corresponding operator< is implemented. \param element Element to search for. \return Position of the searched element if it was found, otherwise -1 is returned. */ - template - s32 binary_search(const E& element) const + s32 binary_search(const T& element) const { if (is_sorted) return binary_search(element, 0, used-1); @@ -462,14 +458,12 @@ public: //! Performs a binary search for an element, returns -1 if not found. - /** Only works if corresponding operator< is implemented. - \param element: Element to search for. + /** \param element: Element to search for. \param left First left index \param right Last right index. \return Position of the searched element if it was found, otherwise -1 is returned. */ - template - s32 binary_search(const E& element, s32 left, s32 right) const + s32 binary_search(const T& element, s32 left, s32 right) const { if (!used) return -1; @@ -503,13 +497,11 @@ public: //! it is used for searching a multiset /** The array will be sorted before the binary search if it is not already sorted. - Only works if corresponding operator< is implemented. \param element Element to search for. \param &last return lastIndex of equal elements \return Position of the first searched element if it was found, otherwise -1 is returned. */ - template - s32 binary_search_multi(const E& element, s32 &last) + s32 binary_search_multi(const T& element, s32 &last) { sort(); s32 index = binary_search(element, 0, used-1);