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