xrpld
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 ConstIterator;
31
32 Dir(ReadView const&, Keylet const&);
33
34 [[nodiscard]] ConstIterator
35 begin() const;
36
37 [[nodiscard]] ConstIterator
38 end() const;
39};
40
42{
43public:
45 using pointer = value_type const*;
46 using reference = value_type const&;
49
50 bool
51 operator==(ConstIterator const& other) const;
52
53 bool
54 operator!=(ConstIterator 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 nextPage();
76
78 pageSize();
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 ConstIterator(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;
107 std::vector<uint256>::const_iterator it_;
108};
109
110} // namespace xrpl
value_type const * pointer
Definition Dir.h:45
std::size_t pageSize()
Definition Dir.cpp:124
std::forward_iterator_tag iterator_category
Definition Dir.h:48
uint256 index() const
Definition Dir.h:87
ConstIterator & nextPage()
Definition Dir.cpp:95
Keylet const & page() const
Definition Dir.h:81
ConstIterator & operator++()
Definition Dir.cpp:71
SLE::const_pointer sle_
Definition Dir.h:105
ReadView const * view_
Definition Dir.h:100
value_type const & reference
Definition Dir.h:46
ConstIterator(ReadView const &view, Keylet const &root, Keylet const &page)
Definition Dir.h:95
friend class Dir
Definition Dir.h:93
reference operator*() const
Definition Dir.cpp:62
bool operator==(ConstIterator const &other) const
Definition Dir.cpp:50
std::vector< uint256 >::const_iterator it_
Definition Dir.h:107
STVector256 const * indexes_
Definition Dir.h:106
std::ptrdiff_t difference_type
Definition Dir.h:47
pointer operator->() const
Definition Dir.h:63
std::optional< value_type > cache_
Definition Dir.h:104
Dir::value_type value_type
Definition Dir.h:44
bool operator!=(ConstIterator const &other) const
Definition Dir.h:54
ReadView const * view_
Definition Dir.h:23
ConstIterator begin() const
Definition Dir.cpp:26
ConstIterator end() const
Definition Dir.cpp:44
SLE::const_pointer sle_
Definition Dir.h:25
STVector256 const * indexes_
Definition Dir.h:26
SLE::const_pointer value_type
Definition Dir.h:30
Keylet root_
Definition Dir.h:24
Dir(ReadView const &, Keylet const &)
Definition Dir.cpp:18
A view into a ledger.
Definition ReadView.h:31
std::shared_ptr< STLedgerEntry const > const_pointer
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:1201
BaseUInt< 256 > uint256
Definition base_uint.h:562
A pair of SHAMap key and LedgerEntryType.
Definition Keylet.h:19