1 #ifndef OSMIUM_MEMORY_COLLECTION_HPP 2 #define OSMIUM_MEMORY_COLLECTION_HPP 38 #include <type_traits> 46 template <
typename TMember>
52 typedef typename std::conditional<std::is_const<TMember>::value,
const unsigned char*,
unsigned char*>
::type data_type;
67 m_data =
reinterpret_cast<TMember*
>(
m_data)->next();
78 return m_data == rhs.m_data;
82 return m_data != rhs.m_data;
85 unsigned char*
data() const noexcept {
90 return *
reinterpret_cast<TMember*
>(
m_data);
94 return reinterpret_cast<TMember*
>(
m_data);
97 template <
typename TChar,
typename TTraits>
98 void print(std::basic_ostream<TChar, TTraits>& out)
const {
99 out << static_cast<const void*>(
m_data);
104 template <
typename TChar,
typename TTraits,
typename TMember>
110 template <
typename TMember, osmium::item_type TCollectionItemType>
122 Item(sizeof(
Collection<TMember, TCollectionItemType>), TCollectionItemType) {
134 return iterator(
data() + byte_size());
142 return const_iterator(
data() + byte_size());
149 const_iterator
end()
const {
159 #endif // OSMIUM_MEMORY_COLLECTION_HPP bool empty() const
Definition: collection.hpp:125
iterator end()
Definition: collection.hpp:133
Definition: collection.hpp:47
CollectionIterator< TMember > & operator++()
Definition: collection.hpp:66
type
Definition: entity_bits.hpp:60
bool operator==(const CollectionIterator< TMember > &rhs) const noexcept
Definition: collection.hpp:77
CollectionIterator< TMember > iterator
Definition: collection.hpp:115
unsigned char * data() const noexcept
Definition: collection.hpp:85
const_iterator cend() const
Definition: collection.hpp:141
item_type
Definition: item_type.hpp:43
CollectionIterator< TMember > operator++(int)
Definition: collection.hpp:71
CollectionIterator< const TMember > const_iterator
Definition: collection.hpp:116
const_iterator begin() const
Definition: collection.hpp:145
bool operator!=(const CollectionIterator< TMember > &rhs) const noexcept
Definition: collection.hpp:81
iterator begin()
Definition: collection.hpp:129
CollectionIterator() noexcept
Definition: collection.hpp:58
TMember & operator*() const
Definition: collection.hpp:89
Namespace for everything in the Osmium library.
Definition: assembler.hpp:59
TMember value_type
Definition: collection.hpp:117
Definition: collection.hpp:111
Collection()
Definition: collection.hpp:121
void print(std::basic_ostream< TChar, TTraits > &out) const
Definition: collection.hpp:98
const_iterator cbegin() const
Definition: collection.hpp:137
data_type m_data
Definition: collection.hpp:54
CollectionIterator(data_type data) noexcept
Definition: collection.hpp:62
std::conditional< std::is_const< TMember >::value, const unsigned char *, unsigned char * >::type data_type
Definition: collection.hpp:52
TMember * operator->() const
Definition: collection.hpp:93
const_iterator end() const
Definition: collection.hpp:149