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 xrpl {
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,
28 explicit STArray(Iter first, Iter last);
29
30 template <
31 class Iter,
33 STArray(SField const& f, Iter first, Iter last);
34
35 STArray&
36 operator=(STArray const&) = default;
38 STArray&
40
41 STArray(SField const& f, std::size_t n);
42 STArray(SerialIter& sit, SField const& f, int depth = 0);
43 explicit STArray(int n);
44 explicit STArray(SField const& f);
45
48
49 STObject const&
50 operator[](std::size_t j) const;
51
53 back();
54
55 STObject const&
56 back() const;
57
58 template <class... Args>
59 void
60 emplace_back(Args&&... args);
61
62 void
63 push_back(STObject const& object);
64
65 void
66 push_back(STObject&& object);
67
69 begin();
70
72 end();
73
75 begin() const;
76
78 end() const;
79
81 size() const;
82
83 bool
84 empty() const;
85
86 void
87 clear();
88
89 void
91
92 void
93 swap(STArray& a) noexcept;
94
96 getFullText() const override;
97
99 getText() const override;
100
102 getJson(JsonOptions index) const override;
103
104 void
105 add(Serializer& s) const override;
106
107 void
108 sort(bool (*compare)(STObject const& o1, STObject const& o2));
109
110 bool
111 operator==(STArray const& s) const;
112
113 bool
114 operator!=(STArray const& s) const;
115
117 erase(iterator pos);
118
121
123 erase(iterator first, iterator last);
124
127
129 getSType() const override;
130
131 bool
132 isEquivalent(STBase const& t) const override;
133
134 bool
135 isDefault() const override;
136
137private:
138 STBase*
139 copy(std::size_t n, void* buf) const override;
140 STBase*
141 move(std::size_t n, void* buf) override;
142
143 friend class detail::STVar;
144};
145
146template <class Iter, class>
147STArray::STArray(Iter first, Iter last) : v_(first, last)
148{
149}
150
151template <class Iter, class>
152STArray::STArray(SField const& f, Iter first, Iter last) : STBase(f), v_(first, last)
153{
154}
155
156inline STObject&
158{
159 return v_[j];
160}
161
162inline STObject const&
164{
165 return v_[j];
166}
167
168inline STObject&
170{
171 return v_.back();
172}
173
174inline STObject const&
176{
177 return v_.back();
178}
179
180template <class... Args>
181inline void
183{
185}
186
187inline void
189{
190 v_.push_back(object);
191}
192
193inline void
195{
196 v_.push_back(std::move(object));
197}
198
201{
202 return v_.begin();
203}
204
207{
208 return v_.end();
209}
210
213{
214 return v_.begin();
215}
216
219{
220 return v_.end();
221}
222
225{
226 return v_.size();
227}
228
229inline bool
231{
232 return v_.empty();
233}
234
235inline void
237{
238 v_.clear();
239}
240
241inline void
246
247inline void
249{
250 v_.swap(a.v_);
251}
252
253inline bool
255{
256 return v_ == s.v_;
257}
258
259inline bool
261{
262 return v_ != s.v_;
263}
264
267{
268 return v_.erase(pos);
269}
270
273{
274 return v_.erase(pos);
275}
276
279{
280 return v_.erase(first, last);
281}
282
285{
286 return v_.erase(first, last);
287}
288
289} // namespace xrpl
290
291#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
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:20
void clear()
Definition STArray.h:236
bool operator==(STArray const &s) const
Definition STArray.h:254
STBase * copy(std::size_t n, void *buf) const override
Definition STArray.cpp:80
list_type::size_type size_type
Definition STArray.h:18
void push_back(STObject const &object)
Definition STArray.h:188
STArray(STArray const &)=default
std::string getText() const override
Definition STArray.cpp:111
list_type v_
Definition STArray.h:14
void swap(STArray &a) noexcept
Definition STArray.h:248
SerializedTypeID getSType() const override
Definition STArray.cpp:156
size_type size() const
Definition STArray.h:224
void add(Serializer &s) const override
Definition STArray.cpp:145
void reserve(std::size_t n)
Definition STArray.h:242
iterator begin()
Definition STArray.h:200
bool operator!=(STArray const &s) const
Definition STArray.h:260
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:182
iterator erase(iterator pos)
Definition STArray.h:266
void sort(bool(*compare)(STObject const &o1, STObject const &o2))
Definition STArray.cpp:175
list_type::iterator iterator
Definition STArray.h:19
Json::Value getJson(JsonOptions index) const override
Definition STArray.cpp:130
bool empty() const
Definition STArray.h:230
iterator end()
Definition STArray.h:206
STObject & back()
Definition STArray.h:169
STObject & operator[](std::size_t j)
Definition STArray.h:157
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_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)