rippled
Loading...
Searching...
No Matches
STBlob.cpp
1#include <xrpl/basics/strHex.h>
2#include <xrpl/beast/utility/instrumentation.h>
3#include <xrpl/protocol/SField.h>
4#include <xrpl/protocol/STBase.h>
5#include <xrpl/protocol/STBlob.h>
6#include <xrpl/protocol/Serializer.h>
7
8#include <cstddef>
9#include <string>
10#include <utility>
11
12namespace xrpl {
13
14STBlob::STBlob(SerialIter& st, SField const& name) : STBase(name), value_(st.getVLBuffer())
15{
16}
17
18STBase*
19STBlob::copy(std::size_t n, void* buf) const
20{
21 return emplace(n, buf, *this);
22}
23
24STBase*
26{
27 return emplace(n, buf, std::move(*this));
28}
29
32{
33 return STI_VL;
34}
35
38{
39 return strHex(value_);
40}
41
42void
44{
45 XRPL_ASSERT(getFName().isBinary(), "xrpl::STBlob::add : field is binary");
46 XRPL_ASSERT(
47 (getFName().fieldType == STI_VL) || (getFName().fieldType == STI_ACCOUNT),
48 "xrpl::STBlob::add : valid field type");
49 s.addVL(value_.data(), value_.size());
50}
51
52bool
54{
55 STBlob const* v = dynamic_cast<STBlob const*>(&t);
56 return v && (value_ == v->value_);
57}
58
59bool
61{
62 return value_.empty();
63}
64
65} // namespace xrpl
bool empty() const noexcept
Definition Buffer.h:111
std::size_t size() const noexcept
Returns the number of bytes in the buffer.
Definition Buffer.h:105
std::uint8_t const * data() const noexcept
Return a pointer to beginning of the storage.
Definition Buffer.h:129
Identifies fields.
Definition SField.h:127
A type which can be exported to a well known binary format.
Definition STBase.h:116
SField const & getFName() const
Definition STBase.cpp:122
static STBase * emplace(std::size_t n, void *buf, T &&val)
Definition STBase.h:214
bool isEquivalent(STBase const &t) const override
Definition STBlob.cpp:53
Buffer value_
Definition STBlob.h:17
void add(Serializer &s) const override
Definition STBlob.cpp:43
SerializedTypeID getSType() const override
Definition STBlob.cpp:31
STBlob()=default
STBase * copy(std::size_t n, void *buf) const override
Definition STBlob.cpp:19
STBase * move(std::size_t n, void *buf) override
Definition STBlob.cpp:25
bool isDefault() const override
Definition STBlob.cpp:60
std::string getText() const override
Definition STBlob.cpp:37
int addVL(Blob const &vector)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
std::string strHex(FwdIt begin, FwdIt end)
Definition strHex.h:11
SerializedTypeID
Definition SField.h:91