xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
protocol
STBlob.h
1
#pragma once
2
3
#include <xrpl/basics/Buffer.h>
4
#include <xrpl/basics/CountedObject.h>
5
#include <xrpl/basics/Slice.h>
6
#include <xrpl/protocol/SField.h>
7
#include <xrpl/protocol/STBase.h>
8
#include <xrpl/protocol/Serializer.h>
9
10
#include <
cstdint
>
11
#include <
cstring
>
12
#include <
string
>
13
#include <
utility
>
14
15
namespace
xrpl
{
16
17
// variable length byte string
18
class
STBlob
:
public
STBase
,
public
CountedObject
<STBlob>
19
{
20
Buffer
value_
;
21
22
public
:
23
using
value_type
=
Slice
;
24
25
STBlob
() =
default
;
26
STBlob
(
STBlob
const
& rhs);
27
28
STBlob
(
SField
const
& f,
void
const
*
data
,
std::size_t
size
);
29
STBlob
(
SField
const
& f,
Buffer
&& b);
30
STBlob
(
SField
const
& n);
31
STBlob
(
SerialIter
&,
SField
const
& name =
sfGeneric
);
32
33
[[nodiscard]]
std::size_t
34
size
()
const
;
35
36
[[nodiscard]]
std::uint8_t
const
*
37
data
()
const
;
38
39
[[nodiscard]]
SerializedTypeID
40
getSType
()
const override
;
41
42
[[nodiscard]]
std::string
43
getText
()
const override
;
44
45
void
46
add
(
Serializer
& s)
const override
;
47
48
[[nodiscard]]
bool
49
isEquivalent
(
STBase
const
& t)
const override
;
50
51
[[nodiscard]]
bool
52
isDefault
()
const override
;
53
54
STBlob
&
55
operator=
(
Slice
const
& slice);
56
57
[[nodiscard]]
value_type
58
value
() const noexcept;
59
60
STBlob
&
61
operator=(
Buffer
&& buffer);
62
63
void
64
setValue
(
Buffer
&& b);
65
66
private:
67
STBase
*
68
copy
(
std
::
size_t
n,
void
* buf) const override;
69
STBase
*
70
move
(
std
::
size_t
n,
void
* buf) override;
71
72
friend class
detail
::
STVar
;
73
};
74
75
inline
STBlob
::
STBlob
(
STBlob
const& rhs)
76
:
STBase
(rhs),
CountedObject
<
STBlob
>(rhs),
value_
(rhs.
data
(), rhs.
size
())
77
{
78
}
79
80
inline
STBlob::STBlob
(
SField
const
& f,
void
const
*
data
,
std::size_t
size
)
81
:
STBase
(f),
value_
(
data
,
size
)
82
{
83
}
84
85
inline
STBlob::STBlob
(
SField
const
& f,
Buffer
&& b) :
STBase
(f),
value_
(
std
::
move
(b))
86
{
87
}
88
89
inline
STBlob::STBlob
(
SField
const
& n) :
STBase
(n)
90
{
91
}
92
93
inline
std::size_t
94
STBlob::size
()
const
95
{
96
return
value_
.size();
97
}
98
99
inline
std::uint8_t
const
*
100
STBlob::data
()
const
101
{
102
return
value_
.data();
103
}
104
105
inline
STBlob
&
106
STBlob::operator=
(
Slice
const
& slice)
107
{
108
value_
=
Buffer
(slice.
data
(), slice.
size
());
109
return
*
this
;
110
}
111
112
inline
STBlob::value_type
113
STBlob::value
() const noexcept
114
{
115
return
value_
;
116
}
117
118
inline
STBlob
&
119
STBlob::operator=
(
Buffer
&& buffer)
120
{
121
value_
= std::move(buffer);
122
return
*
this
;
123
}
124
125
inline
void
126
STBlob::setValue
(
Buffer
&& b)
127
{
128
value_
= std::move(b);
129
}
130
131
}
// namespace xrpl
std::string
xrpl::Buffer
Like std::vector<char> but better.
Definition
Buffer.h:19
xrpl::CountedObject< STBlob >::CountedObject
CountedObject() noexcept
Definition
CountedObject.h:119
xrpl::SField
Identifies fields.
Definition
SField.h:132
xrpl::STBase::STBase
STBase()
Definition
STBase.cpp:15
xrpl::STBlob
Definition
STBlob.h:19
xrpl::STBlob::size
std::size_t size() const
Definition
STBlob.h:94
xrpl::STBlob::isEquivalent
bool isEquivalent(STBase const &t) const override
Definition
STBlob.cpp:54
xrpl::STBlob::data
std::uint8_t const * data() const
Definition
STBlob.h:100
xrpl::STBlob::setValue
void setValue(Buffer &&b)
Definition
STBlob.h:126
xrpl::STBlob::STVar
friend class detail::STVar
Definition
STBlob.h:72
xrpl::STBlob::value_
Buffer value_
Definition
STBlob.h:20
xrpl::STBlob::add
void add(Serializer &s) const override
Definition
STBlob.cpp:44
xrpl::STBlob::getSType
SerializedTypeID getSType() const override
Definition
STBlob.cpp:32
xrpl::STBlob::STBlob
STBlob()=default
xrpl::STBlob::value_type
Slice value_type
Definition
STBlob.h:23
xrpl::STBlob::value
value_type value() const noexcept
Definition
STBlob.h:113
xrpl::STBlob::copy
STBase * copy(std::size_t n, void *buf) const override
Definition
STBlob.cpp:20
xrpl::STBlob::move
STBase * move(std::size_t n, void *buf) override
Definition
STBlob.cpp:26
xrpl::STBlob::isDefault
bool isDefault() const override
Definition
STBlob.cpp:61
xrpl::STBlob::operator=
STBlob & operator=(Slice const &slice)
Definition
STBlob.h:106
xrpl::STBlob::getText
std::string getText() const override
Definition
STBlob.cpp:38
xrpl::SerialIter
Definition
Serializer.h:478
xrpl::Serializer
Definition
Serializer.h:23
xrpl::Slice
An immutable linear range of bytes.
Definition
Slice.h:28
xrpl::Slice::data
std::uint8_t const * data() const noexcept
Return a pointer to beginning of the storage.
Definition
Slice.h:88
xrpl::Slice::size
std::size_t size() const noexcept
Returns the number of bytes in the storage.
Definition
Slice.h:70
cstdint
cstring
std::uint8_t
std
STL namespace.
xrpl::detail
Definition
base_uint.h:37
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::sfGeneric
SField const sfGeneric
xrpl::SerializedTypeID
SerializedTypeID
Definition
SField.h:94
std::size_t
string
utility
Generated by
1.17.0