rippled
Loading...
Searching...
No Matches
Dir.h
1#pragma once
2
3#include <xrpl/ledger/ReadView.h>
4#include <xrpl/protocol/Indexes.h>
5
6namespace xrpl {
7
20class Dir
21{
22private:
23 ReadView const* view_ = nullptr;
26 STVector256 const* indexes_ = nullptr;
27
28public:
29 class const_iterator;
31
32 Dir(ReadView const&, Keylet const&);
33
35 begin() const;
36
38 end() const;
39};
40
42{
43public:
45 using pointer = value_type const*;
46 using reference = value_type const&;
49
50 bool
51 operator==(const_iterator const& other) const;
52
53 bool
54 operator!=(const_iterator const& other) const
55 {
56 return !(*this == other);
57 }
58
60 operator*() const;
61
63 operator->() const
64 {
65 return &**this;
66 }
67
69 operator++();
70
72 operator++(int);
73
75 next_page();
76
78 page_size();
79
80 Keylet const&
81 page() const
82 {
83 return page_;
84 }
85
87 index() const
88 {
89 return index_;
90 }
91
92private:
93 friend class Dir;
94
95 const_iterator(ReadView const& view, Keylet const& root, Keylet const& page)
96 : view_(&view), root_(root), page_(page)
97 {
98 }
99
100 ReadView const* view_ = nullptr;
106 STVector256 const* indexes_ = nullptr;
108};
109
110} // namespace xrpl
std::optional< value_type > cache_
Definition Dir.h:104
std::size_t page_size()
Definition Dir.cpp:111
uint256 index() const
Definition Dir.h:87
value_type const * pointer
Definition Dir.h:45
bool operator==(const_iterator const &other) const
Definition Dir.cpp:38
Keylet const & page() const
Definition Dir.h:81
const_iterator & operator++()
Definition Dir.cpp:59
bool operator!=(const_iterator const &other) const
Definition Dir.h:54
const_iterator & next_page()
Definition Dir.cpp:82
pointer operator->() const
Definition Dir.h:63
std::shared_ptr< SLE const > sle_
Definition Dir.h:105
const_iterator(ReadView const &view, Keylet const &root, Keylet const &page)
Definition Dir.h:95
std::vector< uint256 >::const_iterator it_
Definition Dir.h:107
reference operator*() const
Definition Dir.cpp:50
STVector256 const * indexes_
Definition Dir.h:106
value_type const & reference
Definition Dir.h:46
ReadView const * view_
Definition Dir.h:100
A class that simplifies iterating ledger directory pages.
Definition Dir.h:21
ReadView const * view_
Definition Dir.h:23
const_iterator begin() const
Definition Dir.cpp:14
const_iterator end() const
Definition Dir.cpp:32
std::shared_ptr< SLE const > value_type
Definition Dir.h:30
STVector256 const * indexes_
Definition Dir.h:26
std::shared_ptr< SLE const > sle_
Definition Dir.h:25
Keylet root_
Definition Dir.h:24
A view into a ledger.
Definition ReadView.h:31
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
Number root(Number f, unsigned d)
Definition Number.cpp:938
A pair of SHAMap key and LedgerEntryType.
Definition Keylet.h:19