xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
protocol
STArray.h
1
#pragma once
2
3
#include <xrpl/basics/CountedObject.h>
4
#include <xrpl/json/json_value.h>
5
#include <xrpl/protocol/SField.h>
6
#include <xrpl/protocol/STBase.h>
7
#include <xrpl/protocol/STObject.h>
8
#include <xrpl/protocol/Serializer.h>
9
10
#include <
cstddef
>
11
#include <
iterator
>
12
#include <
string
>
13
#include <
type_traits
>
14
#include <
utility
>
15
#include <
vector
>
16
17
namespace
xrpl
{
18
19
class
STArray
final :
public
STBase
,
public
CountedObject
<STArray>
20
{
21
private
:
22
using
ListType
=
std::vector<STObject>
;
23
24
ListType
v_
;
25
26
public
:
27
using
value_type
=
STObject
;
28
using
size_type
= ListType::size_type;
29
using
iterator
= ListType::iterator;
30
using
const_iterator
= ListType::const_iterator;
31
32
STArray
() =
default
;
33
STArray
(
STArray
const
&) =
default
;
34
35
template
<
class
Iter>
36
explicit
STArray
(Iter first, Iter last)
37
requires
(
std::is_convertible_v<typename std::iterator_traits<Iter>::reference
,
STObject
>);
38
39
template
<
class
Iter>
40
STArray
(
SField
const
& f, Iter first, Iter last)
41
requires
(
std::is_convertible_v<typename std::iterator_traits<Iter>::reference
,
STObject
>);
42
43
STArray
&
44
operator=
(
STArray
const
&) =
default
;
45
STArray
(
STArray
&&);
46
STArray
&
47
operator=
(
STArray
&&);
48
49
STArray
(
SField
const
& f,
std::size_t
n);
50
STArray
(
SerialIter
& sit,
SField
const
& f,
int
depth = 0);
51
explicit
STArray
(
int
n);
52
explicit
STArray
(
SField
const
& f);
53
54
STObject
&
55
operator[]
(
std::size_t
j);
56
57
STObject
const
&
58
operator[]
(
std::size_t
j)
const
;
59
60
STObject
&
61
back
();
62
63
[[nodiscard]]
STObject
const
&
64
back
()
const
;
65
66
template
<
class
... Args>
67
void
68
emplaceBack
(Args&&... args);
69
70
void
71
pushBack
(
STObject
const
&
object
);
72
73
void
74
pushBack
(
STObject
&&
object
);
75
76
// STL-compatible alias required by std::back_insert_iterator
77
void
78
// NOLINTNEXTLINE(readability-identifier-naming)
79
push_back
(
STObject
const
&
object
)
80
{
81
pushBack
(
object
);
82
}
83
84
void
85
// NOLINTNEXTLINE(readability-identifier-naming)
86
push_back
(
STObject
&&
object
)
87
{
88
pushBack
(std::move(
object
));
89
}
90
91
iterator
92
begin
();
93
94
iterator
95
end
();
96
97
[[nodiscard]]
const_iterator
98
begin
()
const
;
99
100
[[nodiscard]]
const_iterator
101
end
()
const
;
102
103
[[nodiscard]]
size_type
104
size
()
const
;
105
106
[[nodiscard]]
bool
107
empty
()
const
;
108
109
void
110
clear
();
111
112
void
113
reserve
(
std::size_t
n);
114
115
void
116
swap
(
STArray
& a)
noexcept
;
117
118
[[nodiscard]]
std::string
119
getFullText
()
const override
;
120
121
[[nodiscard]]
std::string
122
getText
()
const override
;
123
124
[[nodiscard]]
json::Value
125
getJson
(
JsonOptions
index)
const override
;
126
127
void
128
add
(
Serializer
& s)
const override
;
129
130
void
131
sort
(
bool
(*compare)(
STObject
const
& o1,
STObject
const
& o2));
132
133
bool
134
operator==
(
STArray
const
& s)
const
;
135
136
iterator
137
erase
(
iterator
pos);
138
139
iterator
140
erase
(
const_iterator
pos);
141
142
iterator
143
erase
(
iterator
first,
iterator
last);
144
145
iterator
146
erase
(
const_iterator
first,
const_iterator
last);
147
148
[[nodiscard]]
SerializedTypeID
149
getSType
()
const override
;
150
151
[[nodiscard]]
bool
152
isEquivalent
(
STBase
const
& t)
const override
;
153
154
[[nodiscard]]
bool
155
isDefault
()
const override
;
156
157
private
:
158
STBase
*
159
copy
(
std::size_t
n,
void
* buf)
const override
;
160
STBase
*
161
move
(
std::size_t
n,
void
* buf)
override
;
162
163
friend
class
detail::STVar
;
164
};
165
166
template
<
class
Iter>
167
STArray::STArray
(Iter first, Iter last)
168
requires
(
std::is_convertible_v<typename std::iterator_traits<Iter>::reference
,
STObject
>)
169
:
v_
(first, last)
170
{
171
}
172
173
template
<
class
Iter>
174
STArray::STArray
(
SField
const
& f, Iter first, Iter last)
175
requires
(
std::is_convertible_v<typename std::iterator_traits<Iter>::reference
,
STObject
>)
176
:
STBase
(f),
v_
(first, last)
177
{
178
}
179
180
inline
STObject
&
181
STArray::operator[]
(
std::size_t
j)
182
{
183
return
v_
[j];
184
}
185
186
inline
STObject
const
&
187
STArray::operator[]
(
std::size_t
j)
const
188
{
189
return
v_
[j];
190
}
191
192
inline
STObject
&
193
STArray::back
()
194
{
195
return
v_
.back();
196
}
197
198
inline
STObject
const
&
199
STArray::back
()
const
200
{
201
return
v_
.back();
202
}
203
204
template
<
class
... Args>
205
inline
void
206
STArray::emplaceBack
(Args&&... args)
207
{
208
v_
.emplace_back(
std::forward<Args>
(args)...);
209
}
210
211
inline
void
212
STArray::pushBack
(
STObject
const
&
object
)
213
{
214
v_
.push_back(
object
);
215
}
216
217
inline
void
218
STArray::pushBack
(
STObject
&&
object
)
219
{
220
v_
.push_back(std::move(
object
));
221
}
222
223
inline
STArray::iterator
224
STArray::begin
()
225
{
226
return
v_
.begin();
227
}
228
229
inline
STArray::iterator
230
STArray::end
()
231
{
232
return
v_
.end();
233
}
234
235
inline
STArray::const_iterator
236
STArray::begin
()
const
237
{
238
return
v_
.begin();
239
}
240
241
inline
STArray::const_iterator
242
STArray::end
()
const
243
{
244
return
v_
.end();
245
}
246
247
inline
STArray::size_type
248
STArray::size
()
const
249
{
250
return
v_
.size();
251
}
252
253
inline
bool
254
STArray::empty
()
const
255
{
256
return
v_
.empty();
257
}
258
259
inline
void
260
STArray::clear
()
261
{
262
v_
.clear();
263
}
264
265
inline
void
266
STArray::reserve
(
std::size_t
n)
267
{
268
v_
.reserve(n);
269
}
270
271
inline
void
272
STArray::swap
(
STArray
& a)
noexcept
273
{
274
v_
.swap(a.v_);
275
}
276
277
inline
bool
278
STArray::operator==
(
STArray
const
& s)
const
279
{
280
return
v_
== s.
v_
;
281
}
282
283
inline
STArray::iterator
284
STArray::erase
(
iterator
pos)
285
{
286
return
v_
.erase(pos);
287
}
288
289
inline
STArray::iterator
290
STArray::erase
(
const_iterator
pos)
291
{
292
return
v_
.erase(pos);
293
}
294
295
inline
STArray::iterator
296
STArray::erase
(
iterator
first,
iterator
last)
297
{
298
return
v_
.erase(first, last);
299
}
300
301
inline
STArray::iterator
302
STArray::erase
(
const_iterator
first,
const_iterator
last)
303
{
304
return
v_
.erase(first, last);
305
}
306
307
}
// namespace xrpl
std::string
json::Value
Represents a JSON value.
Definition
json_value.h:117
xrpl::CountedObject< STArray >::CountedObject
CountedObject() noexcept
Definition
CountedObject.h:119
xrpl::SField
Identifies fields.
Definition
SField.h:132
xrpl::STArray
Definition
STArray.h:20
xrpl::STArray::operator=
STArray & operator=(STArray const &)=default
xrpl::STArray::emplaceBack
void emplaceBack(Args &&... args)
Definition
STArray.h:206
xrpl::STArray::const_iterator
ListType::const_iterator const_iterator
Definition
STArray.h:30
xrpl::STArray::STArray
STArray()=default
xrpl::STArray::getFullText
std::string getFullText() const override
Definition
STArray.cpp:93
xrpl::STArray::value_type
STObject value_type
Definition
STArray.h:27
xrpl::STArray::isEquivalent
bool isEquivalent(STBase const &t) const override
Definition
STArray.cpp:163
xrpl::STArray::clear
void clear()
Definition
STArray.h:260
xrpl::STArray::operator==
bool operator==(STArray const &s) const
Definition
STArray.h:278
xrpl::STArray::copy
STBase * copy(std::size_t n, void *buf) const override
Definition
STArray.cpp:81
xrpl::STArray::ListType
std::vector< STObject > ListType
Definition
STArray.h:22
xrpl::STArray::push_back
void push_back(STObject const &object)
Definition
STArray.h:79
xrpl::STArray::STArray
STArray(STArray const &)=default
xrpl::STArray::getText
std::string getText() const override
Definition
STArray.cpp:112
xrpl::STArray::swap
void swap(STArray &a) noexcept
Definition
STArray.h:272
xrpl::STArray::getSType
SerializedTypeID getSType() const override
Definition
STArray.cpp:157
xrpl::STArray::size_type
ListType::size_type size_type
Definition
STArray.h:28
xrpl::STArray::size
size_type size() const
Definition
STArray.h:248
xrpl::STArray::v_
ListType v_
Definition
STArray.h:24
xrpl::STArray::iterator
ListType::iterator iterator
Definition
STArray.h:29
xrpl::STArray::add
void add(Serializer &s) const override
Definition
STArray.cpp:146
xrpl::STArray::reserve
void reserve(std::size_t n)
Definition
STArray.h:266
xrpl::STArray::begin
iterator begin()
Definition
STArray.h:224
xrpl::STArray::isDefault
bool isDefault() const override
Definition
STArray.cpp:170
xrpl::STArray::move
STBase * move(std::size_t n, void *buf) override
Definition
STArray.cpp:87
xrpl::STArray::erase
iterator erase(iterator pos)
Definition
STArray.h:284
xrpl::STArray::sort
void sort(bool(*compare)(STObject const &o1, STObject const &o2))
Definition
STArray.cpp:176
xrpl::STArray::getJson
json::Value getJson(JsonOptions index) const override
Definition
STArray.cpp:131
xrpl::STArray::push_back
void push_back(STObject &&object)
Definition
STArray.h:86
xrpl::STArray::empty
bool empty() const
Definition
STArray.h:254
xrpl::STArray::pushBack
void pushBack(STObject const &object)
Definition
STArray.h:212
xrpl::STArray::end
iterator end()
Definition
STArray.h:230
xrpl::STArray::back
STObject & back()
Definition
STArray.h:193
xrpl::STArray::operator[]
STObject & operator[](std::size_t j)
Definition
STArray.h:181
xrpl::STBase
A type which can be exported to a well known binary format.
Definition
STBase.h:129
xrpl::STBase::STBase
STBase()
Definition
STBase.cpp:15
xrpl::STObject
Definition
STObject.h:49
xrpl::SerialIter
Definition
Serializer.h:478
xrpl::Serializer
Definition
Serializer.h:23
xrpl::detail::STVar
Definition
STVar.h:36
cstddef
std::forward
T forward(T... args)
std::is_convertible_v
T is_convertible_v
iterator
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::const_iterator
Dir::ConstIterator const_iterator
Definition
Dir.cpp:16
xrpl::SerializedTypeID
SerializedTypeID
Definition
SField.h:94
std::size_t
string
xrpl::JsonOptions
Note, should be treated as flags that can be | and &.
Definition
STBase.h:22
type_traits
utility
vector
Generated by
1.17.0