xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
protocol
STInteger.h
1
#pragma once
2
3
#include <xrpl/basics/CountedObject.h>
4
#include <xrpl/beast/utility/instrumentation.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 <
cstdint
>
12
#include <
string
>
13
14
namespace
xrpl
{
15
16
template
<
typename
Integer>
17
class
STInteger
:
public
STBase
,
public
CountedObject
<STInteger<Integer>>
18
{
19
public
:
20
using
value_type
= Integer;
21
22
private
:
23
Integer
value_
;
24
25
public
:
26
explicit
STInteger
(Integer v);
27
STInteger
(
SField
const
& n, Integer v = 0);
28
STInteger
(
SerialIter
& sit,
SField
const
& name);
29
30
[[nodiscard]]
SerializedTypeID
31
getSType
()
const override
;
32
33
[[nodiscard]]
json::Value
getJson
(
JsonOptions
)
const override
;
34
35
[[nodiscard]]
std::string
36
getText
()
const override
;
37
38
void
39
add
(
Serializer
& s)
const override
;
40
41
[[nodiscard]]
bool
42
isDefault
()
const override
;
43
44
[[nodiscard]]
bool
45
isEquivalent
(
STBase
const
& t)
const override
;
46
47
STInteger
&
48
operator=
(
value_type
const
& v);
49
50
[[nodiscard]]
value_type
51
value
() const noexcept;
52
53
void
54
setValue
(Integer v);
55
56
operator Integer() const;
57
58
private:
59
STBase
*
60
copy
(
std
::
size_t
n,
void
* buf) const override;
61
STBase
*
62
move
(
std
::
size_t
n,
void
* buf) override;
63
64
friend class
xrpl
::
detail
::
STVar
;
65
};
66
67
using
STUInt8
=
STInteger
<
unsigned
char
>;
68
using
STUInt16
=
STInteger
<
std
::uint16_t>;
69
using
STUInt32
=
STInteger
<
std
::uint32_t>;
70
using
STUInt64
=
STInteger
<
std
::uint64_t>;
71
72
using
STInt32
=
STInteger
<
std
::int32_t>;
73
74
template <typename Integer>
75
inline
STInteger
<Integer>::
STInteger
(Integer v) :
value_
(v)
76
{
77
}
78
79
template
<
typename
Integer>
80
inline
STInteger<Integer>::STInteger
(
SField
const
& n, Integer v) :
STBase
(n),
value_
(v)
81
{
82
}
83
84
template
<
typename
Integer>
85
inline
STBase
*
86
STInteger<Integer>::copy
(
std::size_t
n,
void
* buf)
const
87
{
88
return
emplace
(n, buf, *
this
);
89
}
90
91
template
<
typename
Integer>
92
inline
STBase
*
93
STInteger<Integer>::move
(
std::size_t
n,
void
* buf)
94
{
95
return
emplace
(n, buf, std::move(*
this
));
96
}
97
98
template
<
typename
Integer>
99
inline
void
100
STInteger<Integer>::add
(
Serializer
& s)
const
101
{
102
XRPL_ASSERT(
getFName
().isBinary(),
"xrpl::STInteger::add : field is binary"
);
103
XRPL_ASSERT(
getFName
().fieldType ==
getSType
(),
"xrpl::STInteger::add : field type match"
);
104
s.
addInteger
(
value_
);
105
}
106
107
template
<
typename
Integer>
108
inline
bool
109
STInteger<Integer>::isDefault
()
const
110
{
111
return
value_
== 0;
112
}
113
114
template
<
typename
Integer>
115
inline
bool
116
STInteger<Integer>::isEquivalent
(
STBase
const
& t)
const
117
{
118
auto
const
* v =
dynamic_cast<
STInteger
const*
>
(&t);
119
return
v && (
value_
== v->value_);
120
}
121
122
template
<
typename
Integer>
123
inline
STInteger<Integer>
&
124
STInteger<Integer>::operator=
(
value_type
const
& v)
125
{
126
value_
= v;
127
return
*
this
;
128
}
129
130
template
<
typename
Integer>
131
inline
STInteger<Integer>::value_type
132
STInteger<Integer>::value
() const noexcept
133
{
134
return
value_
;
135
}
136
137
template
<
typename
Integer>
138
inline
void
139
STInteger<Integer>::setValue
(Integer v)
140
{
141
value_
= v;
142
}
143
144
template
<
typename
Integer>
145
inline
STInteger<Integer>
::
146
operator Integer()
const
147
{
148
return
value_
;
149
}
150
151
}
// namespace xrpl
std::string
json::Value
Represents a JSON value.
Definition
json_value.h:117
xrpl::CountedObject< STInteger< Integer > >::CountedObject
CountedObject() noexcept
Definition
CountedObject.h:119
xrpl::SField
Identifies fields.
Definition
SField.h:132
xrpl::STBase
A type which can be exported to a well known binary format.
Definition
STBase.h:129
xrpl::STBase::getFName
SField const & getFName() const
Definition
STBase.cpp:120
xrpl::STBase::emplace
static STBase * emplace(std::size_t n, void *buf, T &&val)
Definition
STBase.h:226
xrpl::STBase::STBase
STBase()
Definition
STBase.cpp:15
xrpl::STInteger
Definition
STInteger.h:18
xrpl::STInteger::value
value_type value() const noexcept
Definition
STInteger.h:132
xrpl::STInteger::getSType
SerializedTypeID getSType() const override
xrpl::STInteger::add
void add(Serializer &s) const override
Definition
STInteger.h:100
xrpl::STInteger< unsigned char >::move
STBase * move(std::size_t n, void *buf) override
xrpl::STInteger::STInteger
STInteger(SField const &n, Integer v=0)
Definition
STInteger.h:80
xrpl::STInteger::value_type
Integer value_type
Definition
STInteger.h:20
xrpl::STInteger::STInteger
STInteger(SerialIter &sit, SField const &name)
xrpl::STInteger::operator=
STInteger & operator=(value_type const &v)
Definition
STInteger.h:124
xrpl::STInteger< unsigned char >::copy
STBase * copy(std::size_t n, void *buf) const override
xrpl::STInteger< unsigned char >::STVar
friend class xrpl::detail::STVar
Definition
STInteger.h:64
xrpl::STInteger< unsigned char >::setValue
void setValue(unsigned char v)
xrpl::STInteger::getJson
json::Value getJson(JsonOptions) const override
xrpl::STInteger< unsigned char >::value_
unsigned char value_
Definition
STInteger.h:23
xrpl::STInteger::isEquivalent
bool isEquivalent(STBase const &t) const override
Definition
STInteger.h:116
xrpl::STInteger::STInteger
STInteger(Integer v)
Definition
STInteger.h:75
xrpl::STInteger::getText
std::string getText() const override
xrpl::STInteger::isDefault
bool isDefault() const override
Definition
STInteger.h:109
xrpl::SerialIter
Definition
Serializer.h:478
xrpl::Serializer
Definition
Serializer.h:23
xrpl::Serializer::addInteger
int addInteger(Integer)
cstddef
cstdint
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::STUInt64
STInteger< std::uint64_t > STUInt64
Definition
STInteger.h:70
xrpl::STUInt16
STInteger< std::uint16_t > STUInt16
Definition
STInteger.h:68
xrpl::SerializedTypeID
SerializedTypeID
Definition
SField.h:94
xrpl::STInt32
STInteger< std::int32_t > STInt32
Definition
STInteger.h:72
xrpl::STUInt8
STInteger< unsigned char > STUInt8
Definition
STInteger.h:67
xrpl::STUInt32
STInteger< std::uint32_t > STUInt32
Definition
STInteger.h:69
std::size_t
string
xrpl::JsonOptions
Note, should be treated as flags that can be | and &.
Definition
STBase.h:22
Generated by
1.17.0