Libosmium
2.15.4
Fast and flexible C++ library for working with OpenStreetMap data
|
Go to the documentation of this file. 1 #ifndef OSMIUM_INDEX_MULTIMAP_HYBRID_HPP
2 #define OSMIUM_INDEX_MULTIMAP_HYBRID_HPP
50 template <
typename TId,
typename TValue>
66 typename main_map_type::iterator end_main,
90 const auto tmp{*
this};
120 template <
typename TId,
typename TValue>
157 void set(
const TId
id,
const TValue value)
final {
161 std::pair<iterator, iterator>
get_all(
const TId
id) {
162 const auto result_main =
m_main.get_all(
id);
164 return std::make_pair(
iterator{result_main.first, result_main.second, result_extra.first, result_extra.second},
165 iterator{result_main.second, result_main.second, result_extra.second, result_extra.second});
168 void remove(
const TId
id,
const TValue value) {
175 for (
const auto& element :
m_extra) {
176 m_main.set(element.first, element.second);
204 #endif // OSMIUM_INDEX_MULTIMAP_HYBRID_HPP
typename collection_type::iterator iterator
Definition: sparse_mem_multimap.hpp:69
Hybrid()
Definition: hybrid.hpp:134
extra_map_type::iterator m_begin_extra
Definition: hybrid.hpp:60
void unsorted_set(const TId id, const TValue value)
Definition: hybrid.hpp:153
Definition: hybrid.hpp:121
void set(const TId id, const TValue value) final
Set the field with id to value.
Definition: hybrid.hpp:157
void clear() final
Definition: hybrid.hpp:187
~Hybrid() noexcept=default
SparseMemArray< TId, TValue > main_map_type
Definition: hybrid.hpp:53
std::pair< iterator, iterator > get_all(const TId id)
Definition: sparse_mem_multimap.hpp:92
HybridIterator(typename main_map_type::iterator begin_main, typename main_map_type::iterator end_main, typename extra_map_type::iterator begin_extra, typename extra_map_type::iterator end_extra)
Definition: hybrid.hpp:65
size_t used_memory() const final
Definition: sparse_mem_multimap.hpp:122
main_map_type m_main
Definition: hybrid.hpp:126
~HybridIterator() noexcept=default
Definition: multimap.hpp:51
VectorBasedSparseMultimap< TId, TValue, StdVectorWrap > SparseMemArray
Definition: sparse_mem_array.hpp:50
extra_map_type::iterator m_end_extra
Definition: hybrid.hpp:61
size_t size() const final
Definition: sparse_mem_multimap.hpp:118
size_t size() const final
Definition: hybrid.hpp:141
void dump_as_list(const int fd) final
Definition: hybrid.hpp:182
typename std::pair< TId, TValue > element_type
Definition: hybrid.hpp:56
main_map_type::iterator m_end_main
Definition: hybrid.hpp:59
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
void sort() final
Definition: hybrid.hpp:192
void remove(const TId id, const TValue value)
Definition: sparse_mem_multimap.hpp:100
SparseMemArray< TId, TValue > main_map_type
Definition: hybrid.hpp:123
Definition: sparse_mem_multimap.hpp:56
extra_map_type m_extra
Definition: hybrid.hpp:127
bool operator!=(const HybridIterator &rhs) const
Definition: hybrid.hpp:102
HybridIterator< TId, TValue > operator++(int)
Definition: hybrid.hpp:89
void set(const TId id, const TValue value) final
Set the field with id to value.
Definition: sparse_mem_multimap.hpp:88
HybridIterator & operator++()
Definition: hybrid.hpp:77
size_t used_memory() const final
Definition: hybrid.hpp:145
std::pair< iterator, iterator > get_all(const TId id)
Definition: hybrid.hpp:161
const element_type * operator->()
Definition: hybrid.hpp:114
const element_type & operator*()
Definition: hybrid.hpp:106
main_map_type::iterator m_begin_main
Definition: hybrid.hpp:58
void reserve(const size_t size)
Definition: hybrid.hpp:149
bool operator==(const HybridIterator &rhs) const
Definition: hybrid.hpp:95
void remove(const TId id, const TValue value)
Definition: hybrid.hpp:168
void consolidate()
Definition: hybrid.hpp:173
Definition: hybrid.hpp:51
void clear() final
Definition: sparse_mem_multimap.hpp:126