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