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,
26 class = std::enable_if_t<
28 explicit STArray(Iter first, Iter last);
29
30 template <
31 class Iter,
32 class = std::enable_if_t<
34 STArray(SField const& f, Iter first, Iter last);
35
36 STArray&
37 operator=(STArray const&) = default;
39 STArray&
41
42 STArray(SField const& f, std::size_t n);
43 STArray(SerialIter& sit, SField const& f, int depth = 0);
44 explicit STArray(int n);
45 explicit STArray(SField const& f);
46
49
50 STObject const&
51 operator[](std::size_t j) const;
52
54 back();
55
56 STObject const&
57 back() const;
58
59 template <class... Args>
60 void
61 emplace_back(Args&&... args);
62
63 void
64 push_back(STObject const& object);
65
66 void
67 push_back(STObject&& object);
68
70 begin();
71
73 end();
74
76 begin() const;
77
79 end() const;
80
82 size() const;
83
84 bool
85 empty() const;
86
87 void
88 clear();
89
90 void
92
93 void
94 swap(STArray& a) noexcept;
95
97 getFullText() const override;
98
100 getText() const override;
101
103 getJson(JsonOptions index) const override;
104
105 void
106 add(Serializer& s) const override;
107
108 void
109 sort(bool (*compare)(STObject const& o1, STObject const& o2));
110
111 bool
112 operator==(STArray const& s) const;
113
114 bool
115 operator!=(STArray const& s) const;
116
118 erase(iterator pos);
119
122
124 erase(iterator first, iterator last);
125
128
130 getSType() const override;
131
132 bool
133 isEquivalent(STBase const& t) const override;
134
135 bool
136 isDefault() const override;
137
138private:
139 STBase*
140 copy(std::size_t n, void* buf) const override;
141 STBase*
142 move(std::size_t n, void* buf) override;
143
144 friend class detail::STVar;
145};
146
147template <class Iter, class>
148STArray::STArray(Iter first, Iter last) : v_(first, last)
149{
150}
151
152template <class Iter, class>
153STArray::STArray(SField const& f, Iter first, Iter last) : STBase(f), v_(first, last)
154{
155}
156
157inline STObject&
159{
160 return v_[j];
161}
162
163inline STObject const&
165{
166 return v_[j];
167}
168
169inline STObject&
171{
172 return v_.back();
173}
174
175inline STObject const&
177{
178 return v_.back();
179}
180
181template <class... Args>
182inline void
184{
186}
187
188inline void
190{
191 v_.push_back(object);
192}
193
194inline void
196{
197 v_.push_back(std::move(object));
198}
199
202{
203 return v_.begin();
204}
205
208{
209 return v_.end();
210}
211
214{
215 return v_.begin();
216}
217
220{
221 return v_.end();
222}
223
226{
227 return v_.size();
228}
229
230inline bool
232{
233 return v_.empty();
234}
235
236inline void
238{
239 v_.clear();
240}
241
242inline void
247
248inline void
250{
251 v_.swap(a.v_);
252}
253
254inline bool
256{
257 return v_ == s.v_;
258}
259
260inline bool
262{
263 return v_ != s.v_;
264}
265
268{
269 return v_.erase(pos);
270}
271
274{
275 return v_.erase(pos);
276}
277
280{
281 return v_.erase(first, last);
282}
283
286{
287 return v_.erase(first, last);
288}
289
290} // 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:237
bool operator==(STArray const &s) const
Definition STArray.h:255
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:189
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:249
SerializedTypeID getSType() const override
Definition STArray.cpp:156
size_type size() const
Definition STArray.h:225
void add(Serializer &s) const override
Definition STArray.cpp:145
void reserve(std::size_t n)
Definition STArray.h:243
iterator begin()
Definition STArray.h:201
bool operator!=(STArray const &s) const
Definition STArray.h:261
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:183
iterator erase(iterator pos)
Definition STArray.h:267
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:231
iterator end()
Definition STArray.h:207
STObject & back()
Definition STArray.h:170
STObject & operator[](std::size_t j)
Definition STArray.h:158
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)