From 8d7c2b2976390bfe453181ec33545cf13fd361be Mon Sep 17 00:00:00 2001 From: Johan Mabille Date: Mon, 8 Apr 2024 06:42:12 +0200 Subject: [PATCH] Rebased and adpated dictionary_encoded layout --- include/sparrow/dictionary_encoded_layout.hpp | 13 ++-------- .../sparrow/variable_size_binary_layout.hpp | 15 +++++++++--- test/test_dictionary_encoded_layout.cpp | 2 -- test/test_fixed_size_layout.cpp | 24 ++++++++++++------- 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/include/sparrow/dictionary_encoded_layout.hpp b/include/sparrow/dictionary_encoded_layout.hpp index c3ddc55d..e1e134db 100644 --- a/include/sparrow/dictionary_encoded_layout.hpp +++ b/include/sparrow/dictionary_encoded_layout.hpp @@ -145,8 +145,7 @@ namespace sparrow using const_value_iterator = dictionary_value_iterator; using const_value_range = std::ranges::subrange; - explicit dictionary_encoded_layout(array_data&& data); - explicit dictionary_encoded_layout(const array_data& data); // TODO: To remove when #51 will be merged + explicit dictionary_encoded_layout(array_data& data); size_type size() const; const_reference operator[](size_type i) const; @@ -242,21 +241,13 @@ namespace sparrow **********************************************/ template - dictionary_encoded_layout::dictionary_encoded_layout(const array_data& data) + dictionary_encoded_layout::dictionary_encoded_layout(array_data& data) { assert(data.dictionary); m_sub_layout = std::make_unique(*data.dictionary); m_indexes_layout = std::make_unique(data); } - template - dictionary_encoded_layout::dictionary_encoded_layout(array_data&& data) - { - assert(data.dictionary); - m_sub_layout = std::make_unique(std::move(*data.dictionary)); - m_indexes_layout = std::make_unique(std::move(data)); - } - template auto dictionary_encoded_layout::size() const -> size_type { diff --git a/include/sparrow/variable_size_binary_layout.hpp b/include/sparrow/variable_size_binary_layout.hpp index 78ff26d2..5a6c5b7b 100644 --- a/include/sparrow/variable_size_binary_layout.hpp +++ b/include/sparrow/variable_size_binary_layout.hpp @@ -137,10 +137,19 @@ namespace sparrow using const_value_iterator = vs_binary_value_iterator; using const_bitmap_iterator = array_data::bitmap_type::const_iterator; - using const_value_iterator = vs_binary_value_iterator; - - using const_bitmap_range = std::ranges::subrange; + using const_iterator = layout_iterator; + // + // TODO: required by layout_iterator, replace them with the right types + // when assignment for data in a variable size bienary layout is implemented + // and implement non const overloads of `values` and `bitmap` + using value_iterator = const_value_iterator; + using bitmap_iterator = const_bitmap_iterator; + // TODO: uncomment the following line and implement the non const overloads + // of `begin` and `end` + // using iterator = layout_iterator; + using const_value_range = std::ranges::subrange; + using const_bitmap_range = std::ranges::subrange; explicit variable_size_binary_layout(array_data& data); diff --git a/test/test_dictionary_encoded_layout.cpp b/test/test_dictionary_encoded_layout.cpp index f8126300..66e72d03 100644 --- a/test/test_dictionary_encoded_layout.cpp +++ b/test/test_dictionary_encoded_layout.cpp @@ -95,8 +95,6 @@ namespace sparrow CHECK(m_data.buffers.size() == 1); const layout_type l_copy(m_data); CHECK(m_data.buffers.size() == 1); - const layout_type l_move(std::move(m_data)); - CHECK(m_data.buffers.size() == 0); } TEST_CASE_FIXTURE(dictionary_encoded_fixture, "size") diff --git a/test/test_fixed_size_layout.cpp b/test/test_fixed_size_layout.cpp index 20090600..6965307c 100644 --- a/test/test_fixed_size_layout.cpp +++ b/test/test_fixed_size_layout.cpp @@ -64,7 +64,8 @@ namespace sparrow TEST_CASE("value_iterator_ordering") { - layout_test_type lt(make_test_array_data(10, 1)); + array_data ad = make_test_array_data(10, 1); + layout_test_type lt(ad); auto lt_values = lt.values(); layout_test_type::const_value_iterator citer = lt_values.begin(); CHECK(citer < lt_values.end()); @@ -72,7 +73,8 @@ namespace sparrow TEST_CASE("value_iterator_equality") { - layout_test_type lt(make_test_array_data(10, 1)); + array_data ad = make_test_array_data(10, 1); + layout_test_type lt(ad); auto lt_values = lt.values(); layout_test_type::const_value_iterator citer = lt_values.begin(); for (std::size_t i = 0; i < lt.size(); ++i) @@ -84,7 +86,8 @@ namespace sparrow TEST_CASE("const_value_iterator_ordering") { - layout_test_type lt(make_test_array_data(10, 1)); + array_data ad = make_test_array_data(10, 1); + layout_test_type lt(ad); auto lt_values = lt.values(); layout_test_type::const_value_iterator citer = lt_values.begin(); CHECK(citer < lt_values.end()); @@ -92,7 +95,8 @@ namespace sparrow TEST_CASE("const_value_iterator_equality") { - layout_test_type lt(make_test_array_data(10, 1)); + array_data ad = make_test_array_data(10, 1); + layout_test_type lt(ad); auto lt_values = lt.values(); for (std::size_t i = 0; i < lt.size(); ++i) { @@ -108,7 +112,8 @@ namespace sparrow TEST_CASE("const_bitmap_iterator_ordering") { - layout_test_type lt(make_test_array_data(10, 1)); + array_data ad = make_test_array_data(10, 1); + layout_test_type lt(ad); auto lt_bitmap = lt.bitmap(); layout_test_type::const_bitmap_iterator citer = lt_bitmap.begin(); CHECK(citer < lt_bitmap.end()); @@ -116,7 +121,8 @@ namespace sparrow TEST_CASE("const_bitmap_iterator_equality") { - layout_test_type lt(make_test_array_data(10, 1)); + array_data ad = make_test_array_data(10, 1); + layout_test_type lt(ad); auto lt_bitmap = lt.bitmap(); for (std::size_t i = 0; i < lt.size(); ++i) { @@ -133,7 +139,8 @@ namespace sparrow TEST_CASE("iterator") { - layout_test_type lt(make_test_array_data(10, 1)); + array_data ad = make_test_array_data(10, 1); + layout_test_type lt(ad); auto it = lt.begin(); auto end = lt.end(); @@ -148,7 +155,8 @@ namespace sparrow for (auto v: lt) CHECK(v.has_value()); - layout_test_type lt_empty(make_test_array_data(0, 0)); + array_data ad_empty = make_test_array_data(0, 0); + layout_test_type lt_empty(ad_empty); CHECK_EQ(lt_empty.begin(), lt_empty.end()); }