rippled
Loading...
Searching...
No Matches
STArray.h
1#ifndef XRPL_PROTOCOL_STARRAY_H_INCLUDED
2#define XRPL_PROTOCOL_STARRAY_H_INCLUDED
3
4#include <xrpl/basics/CountedObject.h>
5#include <xrpl/protocol/STObject.h>
6
7namespace ripple {
8
9class STArray final : public STBase, public CountedObject<STArray>
10{
11private:
13
15
16public:
18 using size_type = list_type::size_type;
19 using iterator = list_type::iterator;
20 using const_iterator = list_type::const_iterator;
21
22 STArray() = default;
23 STArray(STArray const&) = default;
24
25 template <
26 class Iter,
29 STObject>>>
30 explicit STArray(Iter first, Iter last);
31
32 template <
33 class Iter,
36 STObject>>>
37 STArray(SField const& f, Iter first, Iter last);
38
39 STArray&
40 operator=(STArray const&) = default;
42 STArray&
44
45 STArray(SField const& f, std::size_t n);
46 STArray(SerialIter& sit, SField const& f, int depth = 0);
47 explicit STArray(int n);
48 explicit STArray(SField const& f);
49
52
53 STObject const&
54 operator[](std::size_t j) const;
55
57 back();
58
59 STObject const&
60 back() const;
61
62 template <class... Args>
63 void
64 emplace_back(Args&&... args);
65
66 void
67 push_back(STObject const& object);
68
69 void
70 push_back(STObject&& object);
71
73 begin();
74
76 end();
77
79 begin() const;
80
82 end() const;
83
85 size() const;
86
87 bool
88 empty() const;
89
90 void
91 clear();
92
93 void
95
96 void
97 swap(STArray& a) noexcept;
98
100 getFullText() const override;
101
103 getText() const override;
104
106 getJson(JsonOptions index) const override;
107
108 void
109 add(Serializer& s) const override;
110
111 void
112 sort(bool (*compare)(STObject const& o1, STObject const& o2));
113
114 bool
115 operator==(STArray const& s) const;
116
117 bool
118 operator!=(STArray const& s) const;
119
121 erase(iterator pos);
122
125
127 erase(iterator first, iterator last);
128
131
133 getSType() const override;
134
135 bool
136 isEquivalent(STBase const& t) const override;
137
138 bool
139 isDefault() const override;
140
141private:
142 STBase*
143 copy(std::size_t n, void* buf) const override;
144 STBase*
145 move(std::size_t n, void* buf) override;
146
147 friend class detail::STVar;
148};
149
150template <class Iter, class>
151STArray::STArray(Iter first, Iter last) : v_(first, last)
152{
153}
154
155template <class Iter, class>
156STArray::STArray(SField const& f, Iter first, Iter last)
157 : STBase(f), v_(first, last)
158{
159}
160
161inline STObject&
163{
164 return v_[j];
165}
166
167inline STObject const&
169{
170 return v_[j];
171}
172
173inline STObject&
175{
176 return v_.back();
177}
178
179inline STObject const&
181{
182 return v_.back();
183}
184
185template <class... Args>
186inline void
188{
190}
191
192inline void
194{
195 v_.push_back(object);
196}
197
198inline void
200{
201 v_.push_back(std::move(object));
202}
203
206{
207 return v_.begin();
208}
209
212{
213 return v_.end();
214}
215
218{
219 return v_.begin();
220}
221
224{
225 return v_.end();
226}
227
230{
231 return v_.size();
232}
233
234inline bool
236{
237 return v_.empty();
238}
239
240inline void
242{
243 v_.clear();
244}
245
246inline void
251
252inline void
254{
255 v_.swap(a.v_);
256}
257
258inline bool
260{
261 return v_ == s.v_;
262}
263
264inline bool
266{
267 return v_ != s.v_;
268}
269
272{
273 return v_.erase(pos);
274}
275
278{
279 return v_.erase(pos);
280}
281
284{
285 return v_.erase(first, last);
286}
287
290{
291 return v_.erase(first, last);
292}
293
294} // namespace ripple
295
296#endif
T back(T... args)
T begin(T... args)
Represents a JSON value.
Definition json_value.h:131
Tracks the number of instances of an object.
Identifies fields.
Definition SField.h:127
bool operator!=(STArray const &s) const
Definition STArray.h:265
void sort(bool(*compare)(STObject const &o1, STObject const &o2))
Definition STArray.cpp:178
iterator end()
Definition STArray.h:211
void emplace_back(Args &&... args)
Definition STArray.h:187
bool empty() const
Definition STArray.h:235
std::string getFullText() const override
Definition STArray.cpp:95
iterator erase(iterator pos)
Definition STArray.h:271
STBase * move(std::size_t n, void *buf) override
Definition STArray.cpp:89
STBase * copy(std::size_t n, void *buf) const override
Definition STArray.cpp:83
STArray()=default
void add(Serializer &s) const override
Definition STArray.cpp:148
bool isEquivalent(STBase const &t) const override
Definition STArray.cpp:165
list_type::iterator iterator
Definition STArray.h:19
list_type::const_iterator const_iterator
Definition STArray.h:20
STObject & operator[](std::size_t j)
Definition STArray.h:162
SerializedTypeID getSType() const override
Definition STArray.cpp:159
bool operator==(STArray const &s) const
Definition STArray.h:259
void reserve(std::size_t n)
Definition STArray.h:247
Json::Value getJson(JsonOptions index) const override
Definition STArray.cpp:133
bool isDefault() const override
Definition STArray.cpp:172
list_type v_
Definition STArray.h:14
list_type::size_type size_type
Definition STArray.h:18
STArray(STArray const &)=default
STArray & operator=(STArray const &)=default
std::string getText() const override
Definition STArray.cpp:114
void push_back(STObject const &object)
Definition STArray.h:193
void swap(STArray &a) noexcept
Definition STArray.h:253
STObject & back()
Definition STArray.h:174
iterator begin()
Definition STArray.h:205
size_type size() const
Definition STArray.h:229
A type which can be exported to a well known binary format.
Definition STBase.h:116
T clear(T... args)
T emplace_back(T... args)
T empty(T... args)
T end(T... args)
T erase(T... args)
T is_convertible_v
T is_same_v
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
SerializedTypeID
Definition SField.h:91
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:18
T swap(T... args)