xrpld
Loading...
Searching...
No Matches
STNumber.h
1#pragma once
2
3#include <xrpl/basics/CountedObject.h>
4#include <xrpl/basics/Number.h>
5#include <xrpl/json/json_value.h>
6#include <xrpl/protocol/Asset.h>
7#include <xrpl/protocol/SField.h>
8#include <xrpl/protocol/STBase.h>
9#include <xrpl/protocol/STTakesAsset.h>
10#include <xrpl/protocol/Serializer.h>
11
12#include <cstddef>
13#include <cstdint>
14#include <ostream>
15#include <string>
16
17namespace xrpl {
18
41class STNumber : public STTakesAsset, public CountedObject<STNumber>
42{
43private:
45
46public:
48
49 STNumber() = default;
50 explicit STNumber(SField const& field, Number const& value = Number());
51 STNumber(SerialIter& sit, SField const& field);
52
53 [[nodiscard]] SerializedTypeID
54 getSType() const override;
55 [[nodiscard]] std::string
56 getText() const override;
57 void
58 add(Serializer& s) const override;
59
60 [[nodiscard]] Number const&
61 value() const;
62 void
63 setValue(Number const& v);
64
66 operator=(Number const& rhs)
67 {
68 setValue(rhs);
69 return *this;
70 }
71
72 [[nodiscard]] bool
73 isEquivalent(STBase const& t) const override;
74 [[nodiscard]] bool
75 isDefault() const override;
76
77 void
78 associateAsset(Asset const& a) override;
79
80 operator Number() const
81 {
82 return value_;
83 }
84
85private:
86 STBase*
87 copy(std::size_t n, void* buf) const override;
88 STBase*
89 move(std::size_t n, void* buf) override;
90};
91
93operator<<(std::ostream& out, STNumber const& rhs);
94
96{
98 int exponent = 0;
99 bool negative = false;
100};
101
103partsFromString(std::string const& number);
104
106numberFromJson(SField const& field, json::Value const& value);
107
108} // namespace xrpl
Represents a JSON value.
Definition json_value.h:117
Number is a floating point type that can represent a wide range of values.
Definition Number.h:351
Identifies fields.
Definition SField.h:132
A type which can be exported to a well known binary format.
Definition STBase.h:129
A serializable number.
Definition STNumber.h:42
void add(Serializer &s) const override
Definition STNumber.cpp:69
Number value_type
Definition STNumber.h:47
bool isDefault() const override
Definition STNumber.cpp:147
void associateAsset(Asset const &a) override
Definition STNumber.cpp:56
void setValue(Number const &v)
Definition STNumber.cpp:120
STNumber()=default
STNumber & operator=(Number const &rhs)
Definition STNumber.h:66
std::string getText() const override
Definition STNumber.cpp:50
bool isEquivalent(STBase const &t) const override
Definition STNumber.cpp:138
STBase * move(std::size_t n, void *buf) override
Definition STNumber.cpp:132
SerializedTypeID getSType() const override
Definition STNumber.cpp:44
STBase * copy(std::size_t n, void *buf) const override
Definition STNumber.cpp:126
Number value_
Definition STNumber.h:44
Number const & value() const
Definition STNumber.cpp:114
Intermediate class for any STBase-derived class to store an Asset.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:5
NumberParts partsFromString(std::string const &number)
Definition STNumber.cpp:159
std::ostream & operator<<(std::ostream &out, BaseUInt< Bits, Tag > const &u)
Definition base_uint.h:666
SerializedTypeID
Definition SField.h:94
STNumber numberFromJson(SField const &field, json::Value const &value)
Definition STNumber.cpp:219
std::uint64_t mantissa
Definition STNumber.h:97