Просмотр исходного кода

AK: Fix the signature of binary_search.

asynts 4 лет назад
Родитель
Сommit
8e08d9f70a
2 измененных файлов с 6 добавлено и 6 удалено
  1. 2 2
      AK/BinarySearch.h
  2. 4 4
      AK/Tests/TestBinarySearch.cpp

+ 2 - 2
AK/BinarySearch.h

@@ -33,13 +33,13 @@
 namespace AK {
 
 template<typename T>
-int integral_compare(const T& a, const T& b)
+int integral_compare(const typename RemoveConst<T>::Type& a, const typename RemoveConst<T>::Type& b)
 {
     return a - b;
 }
 
 template<typename T, typename Compare>
-T* binary_search(Span<T> haystack, const T& needle, Compare compare = integral_compare, size_t* nearby_index = nullptr)
+T* binary_search(Span<T> haystack, const typename RemoveConst<T>::Type& needle, Compare compare = integral_compare, size_t* nearby_index = nullptr)
 {
     if (haystack.size() == 0) {
         if (nearby_index)

+ 4 - 4
AK/Tests/TestBinarySearch.cpp

@@ -50,9 +50,9 @@ TEST_CASE(array_doubles)
 {
     double doubles[] = { 1.1, 9.9, 33.33 };
 
-    auto test1 = *binary_search({ doubles, 3 }, 1.1, AK::integral_compare<double>);
-    auto test2 = *binary_search({ doubles, 3 }, 9.9, AK::integral_compare<double>);
-    auto test3 = *binary_search({ doubles, 3 }, 33.33, AK::integral_compare<double>);
+    auto test1 = *binary_search(Span<double> { doubles, 3 }, 1.1, AK::integral_compare<double>);
+    auto test2 = *binary_search(Span<double> { doubles, 3 }, 9.9, AK::integral_compare<double>);
+    auto test3 = *binary_search(Span<double> { doubles, 3 }, 33.33, AK::integral_compare<double>);
     EXPECT_EQ(test1, 1.1);
     EXPECT_EQ(test2, 9.9);
     EXPECT_EQ(test3, 33.33);
@@ -110,7 +110,7 @@ TEST_CASE(no_elements)
 
 TEST_CASE(huge_char_array)
 {
-    const size_t N = 2147483680;    
+    const size_t N = 2147483680;
     Bytes span { new (std::nothrow) u8[N], N };
     EXPECT(span.data() != nullptr);