rippled
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/protocol/STBase.h>
6#include <xrpl/protocol/STTakesAsset.h>
7
8#include <ostream>
9
10namespace xrpl {
11
34class STNumber : public STTakesAsset, public CountedObject<STNumber>
35{
36private:
38
39public:
41
42 STNumber() = default;
43 explicit STNumber(SField const& field, Number const& value = Number());
44 STNumber(SerialIter& sit, SField const& field);
45
47 getSType() const override;
49 getText() const override;
50 void
51 add(Serializer& s) const override;
52
53 Number const&
54 value() const;
55 void
56 setValue(Number const& v);
57
59 operator=(Number const& rhs)
60 {
61 setValue(rhs);
62 return *this;
63 }
64
65 bool
66 isEquivalent(STBase const& t) const override;
67 bool
68 isDefault() const override;
69
70 void
71 associateAsset(Asset const& a) override;
72
73 operator Number() const
74 {
75 return value_;
76 }
77
78private:
79 STBase*
80 copy(std::size_t n, void* buf) const override;
81 STBase*
82 move(std::size_t n, void* buf) override;
83};
84
86operator<<(std::ostream& out, STNumber const& rhs);
87
89{
91 int exponent = 0;
92 bool negative = false;
93};
94
96partsFromString(std::string const& number);
97
99numberFromJson(SField const& field, Json::Value const& value);
100
101} // namespace xrpl
Represents a JSON value.
Definition json_value.h:130
Tracks the number of instances of an object.
Number is a floating point type that can represent a wide range of values.
Definition Number.h:207
Identifies fields.
Definition SField.h:126
A type which can be exported to a well known binary format.
Definition STBase.h:115
A serializable number.
Definition STNumber.h:35
void add(Serializer &s) const override
Definition STNumber.cpp:59
bool isDefault() const override
Definition STNumber.cpp:137
void associateAsset(Asset const &a) override
Definition STNumber.cpp:49
void setValue(Number const &v)
Definition STNumber.cpp:111
STNumber()=default
STNumber & operator=(Number const &rhs)
Definition STNumber.h:59
std::string getText() const override
Definition STNumber.cpp:43
bool isEquivalent(STBase const &t) const override
Definition STNumber.cpp:129
STBase * move(std::size_t n, void *buf) override
Definition STNumber.cpp:123
SerializedTypeID getSType() const override
Definition STNumber.cpp:37
STBase * copy(std::size_t n, void *buf) const override
Definition STNumber.cpp:117
Number value_
Definition STNumber.h:37
Number const & value() const
Definition STNumber.cpp:105
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:149
std::ostream & operator<<(std::ostream &out, base_uint< Bits, Tag > const &u)
Definition base_uint.h:612
SerializedTypeID
Definition SField.h:90
STNumber numberFromJson(SField const &field, Json::Value const &value)
Definition STNumber.cpp:205
std::uint64_t mantissa
Definition STNumber.h:90