From 7805af6881fa0c6582ae811c5b477d505ce8d65b Mon Sep 17 00:00:00 2001 From: vng Date: Tue, 4 Nov 2014 17:01:53 +0100 Subject: [PATCH] Minor refactoring. --- indexer/indexer_tests/index_builder_test.cpp | 2 +- indexer/scale_index.cpp | 19 +++++++- indexer/scale_index.hpp | 46 +++----------------- 3 files changed, 23 insertions(+), 44 deletions(-) diff --git a/indexer/indexer_tests/index_builder_test.cpp b/indexer/indexer_tests/index_builder_test.cpp index beff7946b2..af5683f3fb 100644 --- a/indexer/indexer_tests/index_builder_test.cpp +++ b/indexer/indexer_tests/index_builder_test.cpp @@ -31,7 +31,7 @@ UNIT_TEST(BuildIndexTest) FeaturesVector featuresVector(originalContainer, header); MemWriter > serialWriter(serialIndex); - indexer::BuildIndex(ScaleIndexBase::NUM_BUCKETS, + indexer::BuildIndex(ScaleIndexBase::GetBucketsCount(), scales::GetUpperScale(), featuresVector, serialWriter, "build_index_test"); diff --git a/indexer/scale_index.cpp b/indexer/scale_index.cpp index e757740a08..d6356d2dbc 100644 --- a/indexer/scale_index.cpp +++ b/indexer/scale_index.cpp @@ -1,4 +1,19 @@ #include "scale_index.hpp" -uint32_t const ScaleIndexBase::kScaleBuckets[] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 }; + +/// Using default one to one mapping. + +uint32_t ScaleIndexBase::GetBucketsCount() +{ + return 18; +} + +uint32_t ScaleIndexBase::BucketByScale(uint32_t scale) +{ + return scale; +} + +pair ScaleIndexBase::ScaleRangeForBucket(uint32_t bucket) +{ + return make_pair(bucket, bucket + 1); +} diff --git a/indexer/scale_index.hpp b/indexer/scale_index.hpp index 5bcce41d1c..1c671010eb 100644 --- a/indexer/scale_index.hpp +++ b/indexer/scale_index.hpp @@ -5,56 +5,20 @@ #include "../coding/var_serial_vector.hpp" -#include "../base/assert.hpp" -#include "../base/base.hpp" -#include "../base/macros.hpp" #include "../base/stl_add.hpp" #include "../std/algorithm.hpp" #include "../std/bind.hpp" +/// Index bucket <--> Draw scale range. class ScaleIndexBase { public: - enum { NUM_BUCKETS = 18 }; - - ScaleIndexBase() - { -#ifdef DEBUG - for (size_t i = 0; i < ARRAY_SIZE(kScaleBuckets); ++i) - { - ASSERT_LESS(kScaleBuckets[i], static_cast(NUM_BUCKETS), (i)); - ASSERT(i == 0 || kScaleBuckets[i] >= kScaleBuckets[i-1], - (i, kScaleBuckets[i-1], kScaleBuckets[i])); - } -#endif - } - - static uint32_t BucketByScale(uint32_t scale) - { - ASSERT_LESS(scale, ARRAY_SIZE(kScaleBuckets), ()); - return scale >= ARRAY_SIZE(kScaleBuckets) ? NUM_BUCKETS - 1 : kScaleBuckets[scale]; - } - - static pair ScaleRangeForBucket(uint32_t bucket) - { - // TODO: Cache ScaleRangeForBucket in class member? - ASSERT_LESS(bucket, static_cast(NUM_BUCKETS), ()); - pair res(ARRAY_SIZE(kScaleBuckets), 0); - for (uint32_t i = 0; i < ARRAY_SIZE(kScaleBuckets); ++i) - { - if (kScaleBuckets[i] == bucket) - { - res.first = min(res.first, i); - res.second = max(res.second, i + 1); - } - } - return res; - } - -private: - static uint32_t const kScaleBuckets[18]; + static uint32_t GetBucketsCount(); + static uint32_t BucketByScale(uint32_t scale); + /// @return Range like [x, y). + static pair ScaleRangeForBucket(uint32_t bucket); }; template