1 #ifndef OSMIUM_UTIL_DELTA_HPP 2 #define OSMIUM_UTIL_DELTA_HPP 39 #include <type_traits> 44 inline namespace util {
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");
114 m_value =
static_cast<TValue
>(
115 static_cast<TDelta
>(
m_value) + delta);
125 #endif // OSMIUM_UTIL_DELTA_HPP DeltaEncode(TValue value=0)
Definition: delta.hpp:63
TDelta delta_type
Definition: delta.hpp:61
TValue m_value
Definition: delta.hpp:94
TDelta update(TValue new_value) noexcept
Definition: delta.hpp:75
void swap(Buffer &lhs, Buffer &rhs)
Definition: buffer.hpp:755
TValue value_type
Definition: delta.hpp:98
TValue m_value
Definition: delta.hpp:56
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
TValue update(TDelta delta) noexcept
Definition: delta.hpp:109
TValue value_type
Definition: delta.hpp:60
TValue value() const noexcept
Definition: delta.hpp:71
void clear() noexcept
Definition: delta.hpp:105
void clear() noexcept
Definition: delta.hpp:67
TDelta delta_type
Definition: delta.hpp:99
DeltaDecode()
Definition: delta.hpp:101