diff --git a/include/sparrow/dictionary_encoded_layout.hpp b/include/sparrow/dictionary_encoded_layout.hpp index 674a4e9f..1f754427 100644 --- a/include/sparrow/dictionary_encoded_layout.hpp +++ b/include/sparrow/dictionary_encoded_layout.hpp @@ -34,7 +34,7 @@ namespace sparrow template class dictionary_value_iterator : public iterator_base< dictionary_value_iterator, - typename SL::const_reference, + typename SL::value_type, std::random_access_iterator_tag, typename SL::const_reference> { @@ -43,7 +43,7 @@ namespace sparrow using self_type = dictionary_value_iterator; using base_type = iterator_base< self_type, - typename SL::const_reference, + typename SL::value_type, std::random_access_iterator_tag, typename SL::const_reference>; using reference = typename base_type::reference; @@ -57,7 +57,7 @@ namespace sparrow dictionary_value_iterator(index_iterator index_it, sub_layout_reference sub_layout_reference); private: - SL::const_reference dereference() const; + reference dereference() const; void increment(); void decrement(); void advance(difference_type n); @@ -108,8 +108,8 @@ namespace sparrow using inner_reference = reference_proxy; using inner_const_reference = const_reference_proxy; using bitmap_type = array_data::bitmap_type; - using bitmap_const_reference = typename bitmap_type::const_reference; - using value_type = reference_proxy; + using bitmap_const_reference = bitmap_type::const_reference; + using value_type = SL::value_type; using reference = reference_proxy; using const_reference = const_reference_proxy; using size_type = std::size_t; @@ -152,7 +152,7 @@ namespace sparrow const_value_range values() const; private: - const indexes_layout* get_const_indexes_layout() const; + const indexes_layout& get_const_indexes_layout() const; const_value_iterator value_cbegin() const; const_value_iterator value_cend() const; @@ -189,7 +189,7 @@ namespace sparrow } template - auto dictionary_value_iterator::dereference() const -> SL::const_reference + auto dictionary_value_iterator::dereference() const -> reference { assert(m_sub_layout_reference.has_value()); return (*m_sub_layout_reference).get()[*m_index_it]; @@ -273,37 +273,37 @@ namespace sparrow template auto dictionary_encoded_layout::bitmap() const -> const_bitmap_range { - return get_const_indexes_layout()->bitmap(); + return get_const_indexes_layout().bitmap(); } template - const typename dictionary_encoded_layout::indexes_layout* dictionary_encoded_layout::get_const_indexes_layout() const + const typename dictionary_encoded_layout::indexes_layout& dictionary_encoded_layout::get_const_indexes_layout() const { - return const_cast(m_indexes_layout.get()); + return *const_cast(m_indexes_layout.get()); } template auto dictionary_encoded_layout::cbegin() const -> const_iterator { - return const_iterator(value_cbegin(), get_const_indexes_layout()->bitmap().begin()); + return const_iterator(value_cbegin(), get_const_indexes_layout().bitmap().begin()); } template auto dictionary_encoded_layout::cend() const -> const_iterator { - return const_iterator(value_cend(), get_const_indexes_layout()->bitmap().end()); + return const_iterator(value_cend(), get_const_indexes_layout().bitmap().end()); } template auto dictionary_encoded_layout::value_cbegin() const -> const_value_iterator { - return const_value_iterator(get_const_indexes_layout()->values().begin(), *m_sub_layout); + return const_value_iterator(get_const_indexes_layout().values().begin(), *m_sub_layout); } template auto dictionary_encoded_layout::value_cend() const -> const_value_iterator { - return const_value_iterator(get_const_indexes_layout()->values().end(), *m_sub_layout); + return const_value_iterator(get_const_indexes_layout().values().end(), *m_sub_layout); } template