1 #ifndef OSMIUM_UTIL_DELTA_HPP
2 #define OSMIUM_UTIL_DELTA_HPP
37 #include <type_traits>
49 template <
typename TValue,
typename TDelta =
int64_t>
52 "DeltaEncode value type must be some integer");
54 "DeltaEncode delta type must be some signed integer");
75 TDelta
update(TValue new_value) noexcept {
77 swap(m_value, new_value);
78 return static_cast_with_assert<TDelta>(
m_value) -
79 static_cast_with_assert<TDelta>(new_value);
87 template <
typename TValue,
typename TDelta =
int64_t>
90 "DeltaDecode value type must be some integer");
92 "DeltaDecode delta type must be some signed integer");
110 m_value = static_cast_with_assert<TValue>(
111 static_cast_with_assert<TDelta>(
m_value) + delta);
117 template <
typename TBaseIterator,
typename TTransform,
typename TValue,
typename TDelta =
int64_t>
135 m_value(m_it != m_end ? m_trans(m_it) : 0),
140 if (++m_it != m_end) {
157 return m_it == rhs.
m_it && m_end == rhs.
m_end;
161 return !(*
this == rhs);
170 #endif // OSMIUM_UTIL_DELTA_HPP
TValue value() const noexcept
Definition: delta.hpp:71
TDelta delta_type
Definition: delta.hpp:129
DeltaEncodeIterator(TBaseIterator first, TBaseIterator last, TTransform &trans)
Definition: delta.hpp:131
DeltaEncode(TValue value=0)
Definition: delta.hpp:63
TDelta delta_type
Definition: delta.hpp:61
TValue m_value
Definition: delta.hpp:94
TValue value_type
Definition: delta.hpp:128
Definition: delta.hpp:118
TTransform m_trans
Definition: delta.hpp:122
TDelta update(TValue new_value) noexcept
Definition: delta.hpp:75
TValue value_type
Definition: delta.hpp:98
TValue m_value
Definition: delta.hpp:56
Namespace for everything in the Osmium library.
Definition: assembler.hpp:59
DeltaEncodeIterator operator++(int)
Definition: delta.hpp:146
bool operator!=(const DeltaEncodeIterator &rhs) const
Definition: delta.hpp:160
TValue update(TDelta delta) noexcept
Definition: delta.hpp:109
TValue value_type
Definition: delta.hpp:60
DeltaEncode< TValue, TDelta > m_value
Definition: delta.hpp:123
TDelta operator*()
Definition: delta.hpp:152
void clear() noexcept
Definition: delta.hpp:105
TBaseIterator m_it
Definition: delta.hpp:120
void clear() noexcept
Definition: delta.hpp:67
TDelta m_delta
Definition: delta.hpp:124
DeltaEncodeIterator & operator++()
Definition: delta.hpp:139
TBaseIterator m_end
Definition: delta.hpp:121
TDelta delta_type
Definition: delta.hpp:99
bool operator==(const DeltaEncodeIterator &rhs) const
Definition: delta.hpp:156
T static_cast_with_assert(const F value)
Definition: cast.hpp:63
DeltaDecode()
Definition: delta.hpp:101