1 #ifndef OSMIUM_UTIL_DELTA_HPP 2 #define OSMIUM_UTIL_DELTA_HPP 37 #include <type_traits> 50 template <
typename TValue,
typename TDelta =
int64_t>
53 "DeltaEncode value type must be some integer");
55 "DeltaEncode delta type must be some signed integer");
76 TDelta
update(TValue new_value) noexcept {
78 swap(m_value, new_value);
79 return static_cast_with_assert<TDelta>(
m_value) -
80 static_cast_with_assert<TDelta>(new_value);
88 template <
typename TValue,
typename TDelta =
int64_t>
91 "DeltaDecode value type must be some integer");
93 "DeltaDecode delta type must be some signed integer");
111 m_value = static_cast_with_assert<TValue>(
112 static_cast_with_assert<TDelta>(
m_value) + delta);
122 #endif // OSMIUM_UTIL_DELTA_HPP DeltaEncode(TValue value=0)
Definition: delta.hpp:64
TDelta delta_type
Definition: delta.hpp:62
TValue m_value
Definition: delta.hpp:95
TDelta update(TValue new_value) noexcept
Definition: delta.hpp:76
void swap(Buffer &lhs, Buffer &rhs)
Definition: buffer.hpp:731
TValue value_type
Definition: delta.hpp:99
TValue m_value
Definition: delta.hpp:57
Namespace for everything in the Osmium library.
Definition: assembler.hpp:66
TValue update(TDelta delta) noexcept
Definition: delta.hpp:110
TValue value_type
Definition: delta.hpp:61
TValue value() const noexcept
Definition: delta.hpp:72
void clear() noexcept
Definition: delta.hpp:106
void clear() noexcept
Definition: delta.hpp:68
TDelta delta_type
Definition: delta.hpp:100
DeltaDecode()
Definition: delta.hpp:102