xrpld
Loading...
Searching...
No Matches
BookDirs.h
1#pragma once
2
3#include <xrpl/basics/base_uint.h>
4#include <xrpl/ledger/ReadView.h>
5#include <xrpl/protocol/Book.h>
6#include <xrpl/protocol/STLedgerEntry.h>
7
8#include <cstddef>
9#include <iterator>
10#include <optional>
11
12namespace xrpl {
13
15{
16private:
17 ReadView const* view_ = nullptr;
22 unsigned int entry_ = 0;
24
25public:
26 class const_iterator; // NOLINT(readability-identifier-naming)
28
29 BookDirs(ReadView const&, Book const&);
30
31 [[nodiscard]] const_iterator
32 begin() const;
33
34 [[nodiscard]] const_iterator
35 end() const;
36};
37
38class BookDirs::const_iterator // NOLINT(readability-identifier-naming)
39{
40public:
42 using pointer = value_type const*;
43 using reference = value_type const&;
46
47 const_iterator() = default;
48
49 bool
50 operator==(const_iterator const& other) const;
51
53 operator*() const;
54
56 operator->() const
57 {
58 return &**this;
59 }
60
62 operator++();
63
65 operator++(int);
66
67private:
68 friend class BookDirs;
69
70 const_iterator(ReadView const& view, uint256 const& root, uint256 const& dirKey)
71 : view_(&view), root_(root), key_(dirKey), curKey_(dirKey)
72 {
73 }
74
75 ReadView const* view_ = nullptr;
81 unsigned int entry_ = 0;
84};
85
86} // namespace xrpl
pointer operator->() const
Definition BookDirs.h:56
value_type const & reference
Definition BookDirs.h:43
bool operator==(const_iterator const &other) const
Definition BookDirs.cpp:53
std::optional< value_type > cache_
Definition BookDirs.h:83
const_iterator(ReadView const &view, uint256 const &root, uint256 const &dirKey)
Definition BookDirs.h:70
value_type const * pointer
Definition BookDirs.h:42
SLE::const_pointer sle_
Definition BookDirs.h:80
const_iterator & operator++()
Definition BookDirs.cpp:76
BookDirs::value_type value_type
Definition BookDirs.h:41
reference operator*() const
Definition BookDirs.cpp:66
std::ptrdiff_t difference_type
Definition BookDirs.h:44
std::forward_iterator_tag iterator_category
Definition BookDirs.h:45
SLE::const_pointer sle_
Definition BookDirs.h:21
uint256 index_
Definition BookDirs.h:23
uint256 const key_
Definition BookDirs.h:20
BookDirs(ReadView const &, Book const &)
Definition BookDirs.cpp:14
SLE::const_pointer value_type
Definition BookDirs.h:27
uint256 const nextQuality_
Definition BookDirs.h:19
unsigned int entry_
Definition BookDirs.h:22
const_iterator end() const
Definition BookDirs.cpp:47
const_iterator begin() const
Definition BookDirs.cpp:33
ReadView const * view_
Definition BookDirs.h:17
uint256 const root_
Definition BookDirs.h:18
Specifies an order book.
Definition Book.h:28
A view into a ledger.
Definition ReadView.h:41
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)
BaseUInt< 256 > uint256
Definition base_uint.h:580