xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
beast
container
detail
aged_container_iterator.h
1
#pragma once
2
3
#include <
iterator
>
4
#include <
type_traits
>
5
#include <
utility
>
6
7
namespace
beast::detail
{
8
9
// If Iterator is SCARY then this iterator will be as well.
10
template
<
bool
IsConst,
class
Iterator>
11
class
AgedContainerIterator
12
{
13
public
:
14
using
iterator_category
=
std::iterator_traits<Iterator>::iterator_category
;
15
using
value_type
=
std::conditional_t
<
16
IsConst,
17
typename
Iterator::value_type::Stashed::value_type
const
,
18
typename
Iterator::value_type::Stashed::value_type>;
19
using
difference_type
=
std::iterator_traits<Iterator>::difference_type
;
20
using
pointer
=
value_type
*;
21
using
reference
=
value_type
&;
22
using
time_point
= Iterator::value_type::Stashed::time_point;
23
24
AgedContainerIterator
() =
default
;
25
26
// Disable constructing a const_iterator from a non-const_iterator.
27
// Converting between reverse and non-reverse iterators should be explicit.
28
template
<
bool
OtherIsConst,
class
OtherIterator>
29
explicit
AgedContainerIterator
(
AgedContainerIterator<OtherIsConst, OtherIterator>
const
& other)
30
requires
(
31
(!OtherIsConst || IsConst) &&
32
!
static_cast<
bool
>
(
std::is_same_v<Iterator, OtherIterator>
))
33
:
iter_
(other.
iter_
)
34
{
35
}
36
37
// Disable constructing a const_iterator from a non-const_iterator.
38
template
<
bool
OtherIsConst>
39
AgedContainerIterator
(
AgedContainerIterator<OtherIsConst, Iterator>
const
& other)
40
requires
(!OtherIsConst || IsConst)
41
:
iter_
(other.
iter_
)
42
{
43
}
44
45
// Disable assigning a const_iterator to a non-const iterator
46
template
<
bool
OtherIsConst,
class
OtherIterator>
47
auto
48
operator=
(
AgedContainerIterator<OtherIsConst, OtherIterator>
const
& other)
49
->
AgedContainerIterator
&
50
requires
(!OtherIsConst || IsConst)
51
{
52
iter_
= other.iter_;
53
return
*
this
;
54
}
55
56
template
<
bool
OtherIsConst,
class
OtherIterator>
57
bool
58
operator==
(
AgedContainerIterator<OtherIsConst, OtherIterator>
const
& other)
const
59
{
60
return
iter_
== other.
iter_
;
61
}
62
63
template
<
bool
OtherIsConst,
class
OtherIterator>
64
bool
65
operator!=
(
AgedContainerIterator<OtherIsConst, OtherIterator>
const
& other)
const
66
{
67
return
iter_
!= other.
iter_
;
68
}
69
70
AgedContainerIterator
&
71
operator++
()
72
{
73
++
iter_
;
74
return
*
this
;
75
}
76
77
AgedContainerIterator
78
operator++
(
int
)
79
{
80
AgedContainerIterator
const
prev(*
this
);
81
++
iter_
;
82
return
prev;
83
}
84
85
AgedContainerIterator
&
86
operator--
()
87
{
88
--
iter_
;
89
return
*
this
;
90
}
91
92
AgedContainerIterator
93
operator--
(
int
)
94
{
95
AgedContainerIterator
const
prev(*
this
);
96
--
iter_
;
97
return
prev;
98
}
99
100
reference
101
operator*
()
const
102
{
103
return
iter_
->value;
104
}
105
106
pointer
107
operator->
()
const
108
{
109
return
&
iter_
->value;
110
}
111
112
[[nodiscard]]
time_point
const
&
113
when
()
const
114
{
115
return
iter_
->when;
116
}
117
118
private
:
119
template
<
bool
,
bool
,
class
,
class
,
class
,
class
,
class
>
120
friend
class
AgedOrderedContainer
;
121
122
template
<
bool
,
bool
,
class
,
class
,
class
,
class
,
class
,
class
>
123
friend
class
AgedUnorderedContainer
;
124
125
template
<
bool
,
class
>
126
friend
class
AgedContainerIterator
;
127
128
template
<
class
OtherIterator>
129
AgedContainerIterator
(OtherIterator iter) :
iter_
(
std
::move(iter))
130
{
131
}
132
133
[[nodiscard]] Iterator
const
&
134
iterator
()
const
135
{
136
return
iter_
;
137
}
138
139
Iterator
iter_
;
140
};
141
142
}
// namespace beast::detail
beast::detail::AgedContainerIterator
Definition
aged_container_iterator.h:12
beast::detail::AgedContainerIterator::AgedContainerIterator
AgedContainerIterator(AgedContainerIterator< OtherIsConst, Iterator > const &other)
Definition
aged_container_iterator.h:39
beast::detail::AgedContainerIterator::AgedContainerIterator
friend class AgedContainerIterator
Definition
aged_container_iterator.h:126
beast::detail::AgedContainerIterator::operator!=
bool operator!=(AgedContainerIterator< OtherIsConst, OtherIterator > const &other) const
Definition
aged_container_iterator.h:65
beast::detail::AgedContainerIterator::pointer
value_type * pointer
Definition
aged_container_iterator.h:20
beast::detail::AgedContainerIterator::operator=
auto operator=(AgedContainerIterator< OtherIsConst, OtherIterator > const &other) -> AgedContainerIterator &requires(!OtherIsConst||IsConst)
Definition
aged_container_iterator.h:48
beast::detail::AgedContainerIterator::iterator_category
std::iterator_traits< Iterator >::iterator_category iterator_category
Definition
aged_container_iterator.h:14
beast::detail::AgedContainerIterator::AgedContainerIterator
AgedContainerIterator(AgedContainerIterator< OtherIsConst, OtherIterator > const &other)
Definition
aged_container_iterator.h:29
beast::detail::AgedContainerIterator<!IsMap, typename ContType::iterator >::AgedUnorderedContainer
friend class AgedUnorderedContainer
Definition
aged_container_iterator.h:123
beast::detail::AgedContainerIterator::operator++
AgedContainerIterator operator++(int)
Definition
aged_container_iterator.h:78
beast::detail::AgedContainerIterator::operator--
AgedContainerIterator & operator--()
Definition
aged_container_iterator.h:86
beast::detail::AgedContainerIterator::operator->
pointer operator->() const
Definition
aged_container_iterator.h:107
beast::detail::AgedContainerIterator::when
time_point const & when() const
Definition
aged_container_iterator.h:113
beast::detail::AgedContainerIterator<!IsMap, typename ContType::iterator >::iter_
typename ContType::iterator iter_
Definition
aged_container_iterator.h:139
beast::detail::AgedContainerIterator::AgedContainerIterator
AgedContainerIterator()=default
beast::detail::AgedContainerIterator::reference
value_type & reference
Definition
aged_container_iterator.h:21
beast::detail::AgedContainerIterator::operator++
AgedContainerIterator & operator++()
Definition
aged_container_iterator.h:71
beast::detail::AgedContainerIterator::operator*
reference operator*() const
Definition
aged_container_iterator.h:101
beast::detail::AgedContainerIterator::value_type
std::conditional_t< IsConst, typename Iterator::value_type::Stashed::value_type const, typename Iterator::value_type::Stashed::value_type > value_type
Definition
aged_container_iterator.h:15
beast::detail::AgedContainerIterator::difference_type
std::iterator_traits< Iterator >::difference_type difference_type
Definition
aged_container_iterator.h:19
beast::detail::AgedContainerIterator::time_point
Iterator::value_type::Stashed::time_point time_point
Definition
aged_container_iterator.h:22
beast::detail::AgedContainerIterator::iterator
Iterator const & iterator() const
Definition
aged_container_iterator.h:134
beast::detail::AgedContainerIterator::AgedContainerIterator
AgedContainerIterator(OtherIterator iter)
Definition
aged_container_iterator.h:129
beast::detail::AgedContainerIterator<!IsMap, typename ContType::iterator >::AgedOrderedContainer
friend class AgedOrderedContainer
Definition
aged_container_iterator.h:120
beast::detail::AgedContainerIterator::operator==
bool operator==(AgedContainerIterator< OtherIsConst, OtherIterator > const &other) const
Definition
aged_container_iterator.h:58
beast::detail::AgedContainerIterator::operator--
AgedContainerIterator operator--(int)
Definition
aged_container_iterator.h:93
std::conditional_t
std::is_same_v
T is_same_v
iterator
std::iterator_traits
beast::detail
Definition
abstract_clock.h:59
std
STL namespace.
type_traits
utility
Generated by
1.17.0