xrpld
Loading...
Searching...
No Matches
STVector256.h
1#pragma once
2
3#include <xrpl/basics/CountedObject.h>
4#include <xrpl/basics/base_uint.h>
5#include <xrpl/json/json_value.h>
6#include <xrpl/protocol/SField.h>
7#include <xrpl/protocol/STBase.h>
8#include <xrpl/protocol/Serializer.h>
9
10#include <cstddef>
11#include <utility>
12#include <vector>
13
14namespace xrpl {
15
16class STVector256 : public STBase, public CountedObject<STVector256>
17{
19
20public:
22
23 STVector256() = default;
24
25 explicit STVector256(SField const& n);
26 explicit STVector256(std::vector<uint256> vector);
27 STVector256(SField const& n, std::vector<uint256> vector);
28 STVector256(SerialIter& sit, SField const& name);
29
30 [[nodiscard]] SerializedTypeID
31 getSType() const override;
32
33 void
34 add(Serializer& s) const override;
35
36 [[nodiscard]] json::Value getJson(JsonOptions) const override;
37
38 [[nodiscard]] bool
39 isEquivalent(STBase const& t) const override;
40
41 [[nodiscard]] bool
42 isDefault() const override;
43
46
49
50 void
51 setValue(STVector256 const& v);
52
56 explicit
57 operator std::vector<uint256>() const;
58
59 [[nodiscard]] std::size_t
60 size() const;
61
62 void
64
65 [[nodiscard]] bool
66 empty() const;
67
70
73
74 [[nodiscard]] std::vector<uint256> const&
75 value() const;
76
77 std::vector<uint256>::iterator
78 insert(std::vector<uint256>::const_iterator pos, uint256 const& value);
79
80 void
81 pushBack(uint256 const& v);
82
83 std::vector<uint256>::iterator
84 begin();
85
86 [[nodiscard]] std::vector<uint256>::const_iterator
87 begin() const;
88
89 std::vector<uint256>::iterator
90 end();
91
92 [[nodiscard]] std::vector<uint256>::const_iterator
93 end() const;
94
95 std::vector<uint256>::iterator
96 erase(std::vector<uint256>::iterator position);
97
98 void
99 clear() noexcept;
100
101private:
102 STBase*
103 copy(std::size_t n, void* buf) const override;
104 STBase*
105 move(std::size_t n, void* buf) override;
106
107 friend class detail::STVar;
108};
109
110inline STVector256::STVector256(SField const& n) : STBase(n)
111{
112}
113
115{
116}
117
119 : STBase(n), value_(std::move(vector))
120{
121}
122
123inline STVector256&
125{
126 value_ = v;
127 return *this;
128}
129
130inline STVector256&
132{
133 value_ = std::move(v);
134 return *this;
135}
136
137inline void
139{
140 value_ = v.value_;
141}
142
146inline STVector256::
147operator std::vector<uint256>() const
148{
149 return value_;
150}
151
152inline std::size_t
154{
155 return value_.size();
156}
157
158inline void
160{
161 value_.resize(n);
162}
163
164inline bool
166{
167 return value_.empty();
168}
169
175
181
182inline std::vector<uint256> const&
184{
185 return value_;
186}
187
188inline std::vector<uint256>::iterator
189STVector256::insert(std::vector<uint256>::const_iterator pos, uint256 const& value)
190{
191 return value_.insert(pos, value);
192}
193
194inline void
196{
197 value_.push_back(v);
198}
199
200inline std::vector<uint256>::iterator
202{
203 return value_.begin();
204}
205
206inline std::vector<uint256>::const_iterator
208{
209 return value_.begin();
210}
211
212inline std::vector<uint256>::iterator
214{
215 return value_.end();
216}
217
218inline std::vector<uint256>::const_iterator
220{
221 return value_.end();
222}
223
224inline std::vector<uint256>::iterator
225STVector256::erase(std::vector<uint256>::iterator position)
226{
227 return value_.erase(position);
228}
229
230inline void
232{
233 value_.clear();
234}
235
236} // namespace xrpl
Represents a JSON value.
Definition json_value.h:117
Identifies fields.
Definition SField.h:132
std::vector< uint256 >::iterator erase(std::vector< uint256 >::iterator position)
std::vector< uint256 > const & value_type
Definition STVector256.h:21
json::Value getJson(JsonOptions) const override
void clear() noexcept
void setValue(STVector256 const &v)
std::size_t size() const
void add(Serializer &s) const override
void resize(std::size_t n)
bool empty() const
bool isEquivalent(STBase const &t) const override
friend class detail::STVar
std::vector< uint256 >::iterator insert(std::vector< uint256 >::const_iterator pos, uint256 const &value)
std::vector< uint256 > const & value() const
STBase * move(std::size_t n, void *buf) override
std::vector< uint256 > value_
Definition STVector256.h:18
SerializedTypeID getSType() const override
std::vector< uint256 >::iterator begin()
STVector256()=default
STVector256 & operator=(std::vector< uint256 > const &v)
std::vector< uint256 >::reference operator[](std::vector< uint256 >::size_type n)
bool isDefault() const override
void pushBack(uint256 const &v)
STBase * copy(std::size_t n, void *buf) const override
std::vector< uint256 >::iterator end()
STL namespace.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
SerializedTypeID
Definition SField.h:94
BaseUInt< 256 > uint256
Definition base_uint.h:580
Note, should be treated as flags that can be | and &.
Definition STBase.h:22