32template <
typename _T,
bool _Const = false>
39 using reference =
typename std::conditional_t<_Const, const _T&, _T&>;
40 using pointer =
typename std::conditional_t<_Const, const _T*, _T*>;
46 if (!current_ || !other.current_) {
49 return (current_.get() == other.current_.get());
52 return current_->address() == other.current_->address();
66 const uint64_t entry_size = current_->Size();
69 if (pNextEntry < buffer_end_) {
70 current_ = _T::make_shared(pNextEntry);
87 : current_(value), buffer_end_(buffer_end) {}
89 : current_(std::move(value)), buffer_end_(buffer_end) {}
95 template <
bool _Const_ = _Const,
class = std::enable_if_t<_Const_>>
97 : current_(src.current_), buffer_end_(src.buffer_end_) {}
103 std::shared_ptr<_T> current_;
Definition guest_ptr.hh:88
Iterator helper for _INFORMATION types that have a Size field.
Definition size_iterator.hh:33
size_iterator(std::shared_ptr< _T > &&value, const guest_ptr< void > &buffer_end)
Definition size_iterator.hh:88
size_iterator & operator++()
Definition size_iterator.hh:59
size_iterator operator++(int)
Definition size_iterator.hh:80
reference operator*() const
Definition size_iterator.hh:43
pointer operator->() const
Definition size_iterator.hh:44
typename std::conditional_t< _Const, const _T *, _T * > pointer
Definition size_iterator.hh:40
size_iterator< _T, _Const > & operator=(const size_iterator< _T, _Const > &)=default
size_iterator()
Definition size_iterator.hh:92
typename std::conditional_t< _Const, const _T &, _T & > reference
Definition size_iterator.hh:39
bool operator!=(const size_iterator< _T, _Const > &other) const
Definition size_iterator.hh:54
size_iterator(const std::shared_ptr< _T > &value, const guest_ptr< void > &buffer_end)
Definition size_iterator.hh:86
std::forward_iterator_tag iterator_category
Definition size_iterator.hh:35
bool operator==(const size_iterator< _T, _Const > &other) const
Definition size_iterator.hh:45
size_iterator(const size_iterator< _T, false > &src)
Definition size_iterator.hh:96
void value_type
Definition size_iterator.hh:36
#define unlikely(x)
Definition compiler.hh:27
Type-safe guest virtual address pointer and guest_ptr template.
Core IntroVirt classes.
Definition Cr0.hh:20