1 #ifndef OSMIUM_MEMORY_ITEM_ITERATOR_HPP 2 #define OSMIUM_MEMORY_ITEM_ITERATOR_HPP 43 #include <type_traits> 53 return T::is_compatible_to(t);
58 template <
typename TMember>
65 using data_type =
typename std::conditional<std::is_const<TMember>::value,
const unsigned char*,
unsigned char*>
::type;
72 !detail::type_is_compatible<TMember>(reinterpret_cast<const osmium::memory::Item*>(
m_data)->
type())) {
132 return !(*
this == rhs);
140 const unsigned char*
data() const noexcept {
148 return *reinterpret_cast<TMember*>(
m_data);
154 return reinterpret_cast<TMember*>(
m_data);
157 explicit operator bool() const noexcept {
161 template <
typename TChar,
typename TTraits>
162 void print(std::basic_ostream<TChar, TTraits>& out)
const {
163 out << static_cast<const void*>(
m_data);
168 template <
typename TChar,
typename TTraits,
typename TMember>
174 template <
typename T>
180 using data_type =
typename std::conditional<std::is_const<T>::value,
const unsigned char*,
unsigned char*>
::type;
224 std::size_t
size() const noexcept {
246 #endif // OSMIUM_MEMORY_ITEM_ITERATOR_HPP data_type m_end
Definition: item_iterator.hpp:183
type
Definition: entity_bits.hpp:63
Definition: item_iterator.hpp:175
Definition: item_iterator.hpp:59
ItemIteratorRange(data_type first, data_type last) noexcept
Definition: item_iterator.hpp:190
const_iterator begin() const noexcept
Definition: item_iterator.hpp:211
item_type
Definition: item_type.hpp:43
InputIterator< Reader > end(Reader &)
Definition: reader_iterator.hpp:47
bool empty() const noexcept
Definition: item_iterator.hpp:236
data_type m_begin
Definition: item_iterator.hpp:182
const_iterator end() const noexcept
Definition: item_iterator.hpp:215
ItemIterator< TMember > operator++(int) noexcept
Definition: item_iterator.hpp:121
double distance(const osmium::geom::Coordinates &c1, const osmium::geom::Coordinates &c2)
Definition: haversine.hpp:66
TMember & operator*() const noexcept
Definition: item_iterator.hpp:145
void advance_to_next_item_of_right_type() noexcept
Definition: item_iterator.hpp:70
void print(std::basic_ostream< TChar, TTraits > &out) const
Definition: item_iterator.hpp:162
const unsigned char * data() const noexcept
Definition: item_iterator.hpp:140
value_type & reference
Definition: item_iterator.hpp:83
Namespace for everything in the Osmium library.
Definition: assembler.hpp:53
typename std::conditional< std::is_const< TItem >::value, const unsigned char *, unsigned char * >::type data_type
Definition: item_iterator.hpp:65
ItemIterator(data_type data, data_type end) noexcept
Definition: item_iterator.hpp:90
ItemIterator< TMember > & advance_once() noexcept
Definition: item_iterator.hpp:114
bool operator!=(const ItemIterator< TMember > &rhs) const noexcept
Definition: item_iterator.hpp:131
TItem value_type
Definition: item_iterator.hpp:80
ItemIterator() noexcept
Definition: item_iterator.hpp:85
data_type m_end
Definition: item_iterator.hpp:68
iterator end() noexcept
Definition: item_iterator.hpp:199
const_iterator cend() const noexcept
Definition: item_iterator.hpp:207
data_type m_data
Definition: item_iterator.hpp:67
std::forward_iterator_tag iterator_category
Definition: item_iterator.hpp:79
std::basic_ostream< TChar, TTraits > & operator<<(std::basic_ostream< TChar, TTraits > &out, const CollectionIterator< TMember > &iter)
Definition: collection.hpp:111
iterator begin() noexcept
Definition: item_iterator.hpp:195
const_iterator cbegin() const noexcept
Definition: item_iterator.hpp:203
std::ptrdiff_t difference_type
Definition: item_iterator.hpp:81
ItemIterator< TMember > & operator++() noexcept
Definition: item_iterator.hpp:101
data_type data() noexcept
Definition: item_iterator.hpp:135
ItemIterator< T > cast() const noexcept
Definition: item_iterator.hpp:97
value_type * pointer
Definition: item_iterator.hpp:82
typename std::conditional< std::is_const< T >::value, const unsigned char *, unsigned char * >::type data_type
Definition: item_iterator.hpp:180
TMember * operator->() const noexcept
Definition: item_iterator.hpp:151
bool operator==(const ItemIterator< TMember > &rhs) const noexcept
Definition: item_iterator.hpp:127
std::size_t size() const noexcept
Definition: item_iterator.hpp:224