1 #ifndef OSMIUM_MEMORY_ITEM_HPP 2 #define OSMIUM_MEMORY_ITEM_HPP 62 inline constexpr std::size_t
padded_length(std::size_t length) noexcept {
63 return (length + align_bytes - 1) & ~(align_bytes - 1);
79 ItemHelper() noexcept =
default;
81 ItemHelper(
const ItemHelper&) noexcept =
default;
82 ItemHelper(ItemHelper&&) noexcept =
default;
84 ItemHelper& operator=(
const ItemHelper&) noexcept =
default;
85 ItemHelper& operator=(ItemHelper&&) noexcept =
default;
87 ~ItemHelper() noexcept =
default;
91 unsigned char* data() noexcept {
92 return reinterpret_cast<unsigned char*
>(
this);
95 const unsigned char* data()
const noexcept {
96 return reinterpret_cast<const unsigned char*
>(
this);
103 class Item :
public osmium::memory::detail::ItemHelper {
111 template <
typename TMember>
114 template <
typename TMember>
147 ~
Item() noexcept =
default;
153 unsigned char*
next() noexcept {
154 return data() + padded_size();
157 const unsigned char*
next() const noexcept {
158 return data() + padded_size();
186 static constexpr
const char* diff_chars =
"*-+ ";
187 return diff_chars[m_diff];
191 m_diff = uint16_t(diff);
201 #endif // OSMIUM_MEMORY_ITEM_HPP Definition: collection.hpp:47
type
Definition: entity_bits.hpp:63
uint32_t item_size_type
Definition: item.hpp:57
Item & set_type(const item_type item_type) noexcept
Definition: item.hpp:134
Definition: item_iterator.hpp:59
unsigned char * next() noexcept
Definition: item.hpp:153
diff_indicator_type
Definition: item.hpp:48
item_type
Definition: item_type.hpp:43
constexpr std::size_t padded_length(std::size_t length) noexcept
Definition: item.hpp:62
static constexpr bool is_compatible_to(osmium::item_type) noexcept
Definition: item.hpp:149
constexpr const std::size_t align_bytes
Definition: item.hpp:60
item_size_type padded_size() const
Definition: item.hpp:165
diff_indicator_type diff() const noexcept
Definition: item.hpp:181
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
uint16_t m_removed
Definition: item.hpp:107
Item & add_size(const item_size_type size) noexcept
Definition: item.hpp:119
const unsigned char * next() const noexcept
Definition: item.hpp:157
uint16_t m_padding
Definition: item.hpp:109
void set_diff(diff_indicator_type diff) noexcept
Definition: item.hpp:190
uint16_t m_diff
Definition: item.hpp:108
item_size_type m_size
Definition: item.hpp:105
void set_removed(bool removed) noexcept
Definition: item.hpp:177
bool removed() const noexcept
Definition: item.hpp:173
item_size_type byte_size() const noexcept
Definition: item.hpp:161
Item(item_size_type size=0, item_type type=item_type()) noexcept
Definition: item.hpp:126
uint32_t size() const noexcept
Definition: builder.hpp:133
char diff_as_char() const noexcept
Definition: item.hpp:185
item_type m_type
Definition: item.hpp:106
item_type type() const noexcept
Definition: item.hpp:169
Definition: builder.hpp:57
Builder & operator=(const Builder &)=delete