rippled
Loading...
Searching...
No Matches
STArray.h
1#pragma once
2
3#include <xrpl/basics/CountedObject.h>
4#include <xrpl/protocol/STObject.h>
5
6namespace xrpl {
7
8class STArray final : public STBase, public CountedObject<STArray>
9{
10private:
12
14
15public:
17 using size_type = list_type::size_type;
18 using iterator = list_type::iterator;
19 using const_iterator = list_type::const_iterator;
20
21 STArray() = default;
22 STArray(STArray const&) = default;
23
24 template <
25 class Iter,
27 explicit STArray(Iter first, Iter last);
28
29 template <
30 class Iter,
32 STArray(SField const& f, Iter first, Iter last);
33
34 STArray&
35 operator=(STArray const&) = default;
37 STArray&
39
40 STArray(SField const& f, std::size_t n);
41 STArray(SerialIter& sit, SField const& f, int depth = 0);
42 explicit STArray(int n);
43 explicit STArray(SField const& f);
44
47
48 STObject const&
49 operator[](std::size_t j) const;
50
52 back();
53
54 STObject const&
55 back() const;
56
57 template <class... Args>
58 void
59 emplace_back(Args&&... args);
60
61 void
62 push_back(STObject const& object);
63
64 void
65 push_back(STObject&& object);
66
68 begin();
69
71 end();
72
74 begin() const;
75
77 end() const;
78
80 size() const;
81
82 bool
83 empty() const;
84
85 void
86 clear();
87
88 void
90
91 void
92 swap(STArray& a) noexcept;
93
95 getFullText() const override;
96
98 getText() const override;
99
101 getJson(JsonOptions index) const override;
102
103 void
104 add(Serializer& s) const override;
105
106 void
107 sort(bool (*compare)(STObject const& o1, STObject const& o2));
108
109 bool
110 operator==(STArray const& s) const;
111
112 bool
113 operator!=(STArray const& s) const;
114
116 erase(iterator pos);
117
120
122 erase(iterator first, iterator last);
123
126
128 getSType() const override;
129
130 bool
131 isEquivalent(STBase const& t) const override;
132
133 bool
134 isDefault() const override;
135
136private:
137 STBase*
138 copy(std::size_t n, void* buf) const override;
139 STBase*
140 move(std::size_t n, void* buf) override;
141
142 friend class detail::STVar;
143};
144
145template <class Iter, class>
146STArray::STArray(Iter first, Iter last) : v_(first, last)
147{
148}
149
150template <class Iter, class>
151STArray::STArray(SField const& f, Iter first, Iter last) : STBase(f), v_(first, last)
152{
153}
154
155inline STObject&
157{
158 return v_[j];
159}
160
161inline STObject const&
163{
164 return v_[j];
165}
166
167inline STObject&
169{
170 return v_.back();
171}
172
173inline STObject const&
175{
176 return v_.back();
177}
178
179template <class... Args>
180inline void
182{
184}
185
186inline void
188{
189 v_.push_back(object);
190}
191
192inline void
194{
195 v_.push_back(std::move(object));
196}
197
200{
201 return v_.begin();
202}
203
206{
207 return v_.end();
208}
209
212{
213 return v_.begin();
214}
215
218{
219 return v_.end();
220}
221
224{
225 return v_.size();
226}
227
228inline bool
230{
231 return v_.empty();
232}
233
234inline void
236{
237 v_.clear();
238}
239
240inline void
245
246inline void
248{
249 v_.swap(a.v_);
250}
251
252inline bool
254{
255 return v_ == s.v_;
256}
257
258inline bool
260{
261 return v_ != s.v_;
262}
263
266{
267 return v_.erase(pos);
268}
269
272{
273 return v_.erase(pos);
274}
275
278{
279 return v_.erase(first, last);
280}
281
284{
285 return v_.erase(first, last);
286}
287
288} // namespace xrpl
T back(T... args)
T begin(T... args)
Represents a JSON value.
Definition json_value.h:130
Tracks the number of instances of an object.
Identifies fields.
Definition SField.h:126
STArray & operator=(STArray const &)=default
STArray()=default
std::string getFullText() const override
Definition STArray.cpp:92
bool isEquivalent(STBase const &t) const override
Definition STArray.cpp:162
list_type::const_iterator const_iterator
Definition STArray.h:19
void clear()
Definition STArray.h:235
bool operator==(STArray const &s) const
Definition STArray.h:253
STBase * copy(std::size_t n, void *buf) const override
Definition STArray.cpp:80
list_type::size_type size_type
Definition STArray.h:17
void push_back(STObject const &object)
Definition STArray.h:187
STArray(STArray const &)=default
std::string getText() const override
Definition STArray.cpp:111
list_type v_
Definition STArray.h:13
void swap(STArray &a) noexcept
Definition STArray.h:247
SerializedTypeID getSType() const override
Definition STArray.cpp:156
size_type size() const
Definition STArray.h:223
void add(Serializer &s) const override
Definition STArray.cpp:145
void reserve(std::size_t n)
Definition STArray.h:241
iterator begin()
Definition STArray.h:199
bool operator!=(STArray const &s) const
Definition STArray.h:259
bool isDefault() const override
Definition STArray.cpp:169
STBase * move(std::size_t n, void *buf) override
Definition STArray.cpp:86
void emplace_back(Args &&... args)
Definition STArray.h:181
iterator erase(iterator pos)
Definition STArray.h:265
void sort(bool(*compare)(STObject const &o1, STObject const &o2))
Definition STArray.cpp:175
list_type::iterator iterator
Definition STArray.h:18
Json::Value getJson(JsonOptions index) const override
Definition STArray.cpp:130
bool empty() const
Definition STArray.h:229
iterator end()
Definition STArray.h:205
STObject & back()
Definition STArray.h:168
STObject & operator[](std::size_t j)
Definition STArray.h:156
A type which can be exported to a well known binary format.
Definition STBase.h:115
T clear(T... args)
T emplace_back(T... args)
T empty(T... args)
T end(T... args)
T erase(T... args)
T is_same_v
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
SerializedTypeID
Definition SField.h:90
T push_back(T... args)
T reserve(T... args)
T size(T... args)
Note, should be treated as flags that can be | and &.
Definition STBase.h:17
T swap(T... args)