rippled
BookDirs.h
1 //------------------------------------------------------------------------------
2 /*
3  This file is part of rippled: https://github.com/ripple/rippled
4  Copyright (c) 2012, 2015 Ripple Labs Inc.
5 
6  Permission to use, copy, modify, and/or distribute this software for any
7  purpose with or without fee is hereby granted, provided that the above
8  copyright notice and this permission notice appear in all copies.
9 
10  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 */
18 //==============================================================================
19 
20 #ifndef RIPPLE_LEDGER_BOOK_DIRS_H_INCLUDED
21 #define RIPPLE_LEDGER_BOOK_DIRS_H_INCLUDED
22 
23 #include <ripple/ledger/ReadView.h>
24 
25 namespace ripple {
26 
27 class BookDirs
28 {
29 private:
30  ReadView const* view_ = nullptr;
31  uint256 const root_;
33  uint256 const key_;
35  unsigned int entry_ = 0;
37 
38 public:
39  class const_iterator;
41 
42  BookDirs(ReadView const&, Book const&);
43 
45  begin() const;
46 
48  end() const;
49 };
50 
52 {
53 public:
55  using pointer = value_type const*;
56  using reference = value_type const&;
59 
60  const_iterator() = default;
61 
62  bool
63  operator==(const_iterator const& other) const;
64 
65  bool
66  operator!=(const_iterator const& other) const
67  {
68  return !(*this == other);
69  }
70 
71  reference
72  operator*() const;
73 
74  pointer
75  operator->() const
76  {
77  return &**this;
78  }
79 
81  operator++();
82 
84  operator++(int);
85 
86 private:
87  friend class BookDirs;
88 
90  ReadView const& view,
91  uint256 const& root,
92  uint256 const& dir_key)
93  : view_(&view), root_(root), key_(dir_key), cur_key_(dir_key)
94  {
95  }
96 
97  ReadView const* view_ = nullptr;
103  unsigned int entry_ = 0;
106 
108 };
109 
110 } // namespace ripple
111 
112 #endif
ripple::BookDirs::const_iterator::next_quality_
uint256 next_quality_
Definition: BookDirs.h:99
std::shared_ptr
STL class.
ripple::BookDirs::const_iterator::key_
uint256 key_
Definition: BookDirs.h:100
ripple::BookDirs::const_iterator::operator*
reference operator*() const
Definition: BookDirs.cpp:79
ripple::BookDirs::entry_
unsigned int entry_
Definition: BookDirs.h:35
ripple::BookDirs::root_
const uint256 root_
Definition: BookDirs.h:31
ripple::BookDirs::const_iterator::operator!=
bool operator!=(const_iterator const &other) const
Definition: BookDirs.h:66
std::forward_iterator_tag
ripple::BookDirs::const_iterator::pointer
value_type const * pointer
Definition: BookDirs.h:55
ripple::BookDirs::key_
const uint256 key_
Definition: BookDirs.h:33
ripple::BookDirs::const_iterator::operator++
const_iterator & operator++()
Definition: BookDirs.cpp:88
ripple::BookDirs::const_iterator::view_
ReadView const * view_
Definition: BookDirs.h:97
ripple::BookDirs::index_
uint256 index_
Definition: BookDirs.h:36
ripple::base_uint< 256 >
ripple::BookDirs::value_type
std::shared_ptr< SLE const > value_type
Definition: BookDirs.h:40
ripple::BookDirs
Definition: BookDirs.h:27
ripple::BookDirs::const_iterator::operator->
pointer operator->() const
Definition: BookDirs.h:75
ripple::BookDirs::BookDirs
BookDirs(ReadView const &, Book const &)
Definition: BookDirs.cpp:27
ripple::BookDirs::const_iterator::sle_
std::shared_ptr< SLE const > sle_
Definition: BookDirs.h:102
ripple::BookDirs::const_iterator::reference
value_type const & reference
Definition: BookDirs.h:56
ripple::BookDirs::end
const_iterator end() const
Definition: BookDirs.cpp:58
beast::Journal
A generic endpoint for log messages.
Definition: Journal.h:58
ripple::BookDirs::const_iterator::operator==
bool operator==(const_iterator const &other) const
Definition: BookDirs.cpp:67
ripple::BookDirs::const_iterator::entry_
unsigned int entry_
Definition: BookDirs.h:103
ripple::BookDirs::view_
ReadView const * view_
Definition: BookDirs.h:30
ripple::BookDirs::const_iterator
Definition: BookDirs.h:51
ripple::ReadView
A view into a ledger.
Definition: ReadView.h:125
ripple
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition: RCLCensorshipDetector.h:29
ripple::BookDirs::const_iterator::root_
uint256 root_
Definition: BookDirs.h:98
ripple::BookDirs::const_iterator::cache_
std::optional< value_type > cache_
Definition: BookDirs.h:105
ripple::BookDirs::const_iterator::const_iterator
const_iterator(ReadView const &view, uint256 const &root, uint256 const &dir_key)
Definition: BookDirs.h:89
ripple::BookDirs::const_iterator::cur_key_
uint256 cur_key_
Definition: BookDirs.h:101
std::ptrdiff_t
ripple::BookDirs::const_iterator::index_
uint256 index_
Definition: BookDirs.h:104
ripple::BookDirs::const_iterator::const_iterator
const_iterator()=default
std::optional< value_type >
ripple::Book
Specifies an order book.
Definition: Book.h:33
ripple::BookDirs::const_iterator::j_
static beast::Journal j_
Definition: BookDirs.h:107
ripple::BookDirs::sle_
std::shared_ptr< SLE const > sle_
Definition: BookDirs.h:34
ripple::BookDirs::next_quality_
const uint256 next_quality_
Definition: BookDirs.h:32
ripple::root
Number root(Number f, unsigned d)
Definition: Number.cpp:624
ripple::BookDirs::begin
const_iterator begin() const
Definition: BookDirs.cpp:44