1 #ifndef OSMIUM_INDEX_MAP_FLEX_MEM_HPP 2 #define OSMIUM_INDEX_MAP_FLEX_MEM_HPP 45 #define OSMIUM_HAS_INDEX_MAP_FLEX_MEM 60 template <
typename TId,
typename TValue>
113 static uint64_t
block(
const uint64_t
id) noexcept {
117 static uint64_t
offset(
const uint64_t
id) noexcept {
148 entry{id, osmium::index::empty_value<TValue>()});
150 return osmium::index::empty_value<TValue>();
162 return osmium::index::empty_value<TValue>();
186 std::size_t
size() const noexcept final {
199 void set(
const TId id,
const TValue value)
final {
214 TValue
get(
const TId id)
const final {
216 if (value == osmium::index::empty_value<TValue>()) {
256 std::pair<std::size_t, std::size_t>
stats() const noexcept {
257 std::size_t used_blocks = 0;
258 std::size_t empty_blocks = 0;
268 return std::make_pair(used_blocks, empty_blocks);
279 #ifdef OSMIUM_WANT_NODE_LOCATION_MAPS 283 #endif // OSMIUM_INDEX_MAP_FLEX_MEM_HPP Definition: flex_mem.hpp:85
bool operator<(const entry other) const noexcept
Definition: flex_mem.hpp:98
std::size_t size() const noexcept final
Definition: flex_mem.hpp:186
TValue get_noexcept(const TId id) const noexcept final
Definition: flex_mem.hpp:207
#define REGISTER_MAP(id, value, klass, name)
Definition: map.hpp:285
void set_dense(const uint64_t id, const TValue value)
Definition: flex_mem.hpp:155
TValue get_dense(const uint64_t id) const noexcept
Definition: flex_mem.hpp:160
uint64_t unsigned_object_id_type
Type for OSM object (node, way, or relation) IDs where we only allow positive IDs.
Definition: types.hpp:46
Definition: location.hpp:550
bool is_dense() const noexcept
Definition: flex_mem.hpp:182
constant_min_dense_entries
Definition: flex_mem.hpp:75
uint64_t m_max_id
Definition: flex_mem.hpp:108
Definition: flex_mem.hpp:89
entry(uint64_t i, TValue v)
Definition: flex_mem.hpp:93
TValue get_sparse(const uint64_t id) const noexcept
Definition: flex_mem.hpp:145
constant_density_factor
Definition: flex_mem.hpp:84
std::vector< entry > m_sparse_entries
Definition: flex_mem.hpp:103
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
constant_block_size
Definition: flex_mem.hpp:69
std::pair< std::size_t, std::size_t > stats() const noexcept
Definition: flex_mem.hpp:256
void set_sparse(const uint64_t id, const TValue value)
Definition: flex_mem.hpp:132
void assure_block(const uint64_t num)
Definition: flex_mem.hpp:123
void sort() final
Definition: flex_mem.hpp:231
Definition: flex_mem.hpp:70
TValue value
Definition: flex_mem.hpp:91
static uint64_t offset(const uint64_t id) noexcept
Definition: flex_mem.hpp:117
Definition: location.hpp:273
Definition: flex_mem.hpp:76
std::vector< std::vector< TValue > > m_dense_blocks
Definition: flex_mem.hpp:105
Definition: flex_mem.hpp:66
constant_bits
Definition: flex_mem.hpp:65
static uint64_t block(const uint64_t id) noexcept
Definition: flex_mem.hpp:113
std::size_t used_memory() const noexcept final
Definition: flex_mem.hpp:193
Definition: flex_mem.hpp:61
uint64_t id
Definition: flex_mem.hpp:90
bool m_dense
Definition: flex_mem.hpp:111
void clear() final
Definition: flex_mem.hpp:222
void switch_to_dense()
Definition: flex_mem.hpp:243
FlexMem(bool use_dense=false)
Definition: flex_mem.hpp:178