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);
121 #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:761
TValue value_type
Definition: delta.hpp:98
TValue m_value
Definition: delta.hpp:56
Namespace for everything in the Osmium library.
Definition: assembler.hpp:73
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