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,
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 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 bool operator!=(const HybridIterator &rhs) const
Definition: hybrid.hpp:102
size_t used_memory() const final
Definition: sparse_mem_multimap.hpp:120
void reserve(const size_t size)
Definition: hybrid.hpp:149
typename collection_type::iterator iterator
Definition: sparse_mem_multimap.hpp:67
size_t used_memory() const final
Definition: hybrid.hpp:145
VectorBasedSparseMultimap< TId, TValue, StdVectorWrap > SparseMemArray
Definition: sparse_mem_array.hpp:50
~Hybrid() noexcept=default
Hybrid()
Definition: hybrid.hpp:134
void unsorted_set(const TId id, const TValue value)
Definition: hybrid.hpp:153
void remove(const TId id, const TValue value)
Definition: sparse_mem_multimap.hpp:98
std::pair< iterator, iterator > get_all(const TId id)
Definition: sparse_mem_multimap.hpp:90
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
std::pair< iterator, iterator > get_all(const TId id)
Definition: hybrid.hpp:161
void consolidate()
Definition: hybrid.hpp:173
const element_type & operator*()
Definition: hybrid.hpp:106
HybridIterator< TId, TValue > operator++(int)
Definition: hybrid.hpp:89
extra_map_type m_extra
Definition: hybrid.hpp:127
HybridIterator & operator++()
Definition: hybrid.hpp:77
main_map_type::iterator m_end_main
Definition: hybrid.hpp:59
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
Definition: sparse_mem_multimap.hpp:56
void clear() final
Definition: sparse_mem_multimap.hpp:124
main_map_type m_main
Definition: hybrid.hpp:126
extra_map_type::iterator m_begin_extra
Definition: hybrid.hpp:60
Definition: multimap.hpp:51
typename std::pair< TId, TValue > element_type
Definition: hybrid.hpp:56
Definition: hybrid.hpp:121
~HybridIterator() noexcept=default
const element_type * operator->()
Definition: hybrid.hpp:114
main_map_type::iterator m_begin_main
Definition: hybrid.hpp:58
size_t size() const final
Definition: sparse_mem_multimap.hpp:116
void set(const TId id, const TValue value) final
Set the field with id to value.
Definition: sparse_mem_multimap.hpp:86
SparseMemArray< TId, TValue > main_map_type
Definition: hybrid.hpp:123
HybridIterator< TId, TValue > iterator
Definition: hybrid.hpp:131
bool operator==(const HybridIterator &rhs) const
Definition: hybrid.hpp:95
Definition: hybrid.hpp:51
extra_map_type::iterator m_end_extra
Definition: hybrid.hpp:61
SparseMemArray< TId, TValue > main_map_type
Definition: hybrid.hpp:53
void dump_as_list(const int fd) final
Definition: hybrid.hpp:182
void clear() final
Definition: hybrid.hpp:187
void sort() final
Definition: hybrid.hpp:192
size_t size() const final
Definition: hybrid.hpp:141