1 #ifndef OSMIUM_UTIL_DELTA_HPP 2 #define OSMIUM_UTIL_DELTA_HPP 40 #include <type_traits> 45 inline namespace util {
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");
59 "Delta type size should be larger or equal to value type size");
80 TDelta
update(TValue new_value) noexcept {
86 return static_cast<TDelta
>(
m_value) -
87 static_cast<TDelta>(new_value);
95 template <
typename TValue,
typename TDelta =
int64_t>
98 "DeltaDecode value type must be some integer");
100 "DeltaDecode delta type must be some signed integer");
123 static_cast<TDelta
>(
m_value) + delta);
133 #endif // OSMIUM_UTIL_DELTA_HPP DeltaEncode(TValue value=0)
Definition: delta.hpp:68
TDelta delta_type
Definition: delta.hpp:66
TValue m_value
Definition: delta.hpp:102
TDelta update(TValue new_value) noexcept
Definition: delta.hpp:80
void swap(Buffer &lhs, Buffer &rhs)
Definition: buffer.hpp:755
TValue value_type
Definition: delta.hpp:106
TValue m_value
Definition: delta.hpp:61
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
TValue update(TDelta delta) noexcept
Definition: delta.hpp:117
TValue value_type
Definition: delta.hpp:65
TValue value() const noexcept
Definition: delta.hpp:76
void clear() noexcept
Definition: delta.hpp:113
void clear() noexcept
Definition: delta.hpp:72
TDelta delta_type
Definition: delta.hpp:107
DeltaDecode()
Definition: delta.hpp:109