xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
protocol_autogen
LedgerEntryBase.h
1
#pragma once
2
3
#include <xrpl/protocol/LedgerFormats.h>
4
#include <xrpl/protocol/SField.h>
5
#include <xrpl/protocol/STLedgerEntry.h>
6
#include <xrpl/protocol_autogen/STObjectValidation.h>
7
#include <xrpl/protocol_autogen/Utils.h>
8
9
#include <
optional
>
10
#include <
string
>
11
12
namespace
xrpl::ledger_entries
{
13
23
class
LedgerEntryBase
24
{
25
public
:
30
explicit
LedgerEntryBase
(
SLE::const_pointer
sle) :
sle_
(
std
::move(sle))
31
{
32
}
33
38
[[nodiscard]]
39
bool
40
validate
()
const
41
{
42
if
(!
sle_
->isFieldPresent(sfLedgerEntryType))
43
{
44
return
false
;
// LCOV_EXCL_LINE
45
}
46
auto
ledgerEntryType =
static_cast<
LedgerEntryType
>
(
sle_
->getFieldU16(sfLedgerEntryType));
47
return
protocol_autogen::validateSTObject
(
48
*
sle_
,
LedgerFormats::getInstance
().findByType(ledgerEntryType)->getSOTemplate());
49
}
50
55
[[nodiscard]]
56
LedgerEntryType
57
getType
()
const
58
{
59
return
sle_
->getType();
60
}
61
68
[[nodiscard]]
69
UInt256
const
&
70
getKey
()
const
71
{
72
return
sle_
->key();
73
}
74
75
// Common field getters (from LedgerFormats.cpp commonFields)
76
83
[[nodiscard]]
84
std::optional<UInt256>
85
getLedgerIndex
()
const
86
{
87
if
(
sle_
->isFieldPresent(sfLedgerIndex))
88
{
89
return
sle_
->at(sfLedgerIndex);
90
}
91
return
std::nullopt;
92
}
93
98
[[nodiscard]]
99
bool
100
hasLedgerIndex
()
const
101
{
102
return
sle_
->isFieldPresent(sfLedgerIndex);
103
}
104
112
[[nodiscard]]
113
uint16_t
114
getLedgerEntryType
()
const
115
{
116
return
sle_
->at(sfLedgerEntryType);
117
}
118
126
[[nodiscard]]
127
std::uint32_t
128
getFlags
()
const
129
{
130
return
sle_
->at(sfFlags);
131
}
132
139
[[nodiscard]]
140
bool
141
isFlag
(
std::uint32_t
f)
const
142
{
143
return
sle_
->isFlag(f);
144
}
145
153
[[nodiscard]]
154
SLE::const_pointer
155
getSle
()
const
156
{
157
return
sle_
;
158
}
159
160
protected
:
164
SLE::const_pointer
sle_
;
165
};
166
167
}
// namespace xrpl::ledger_entries
xrpl::LedgerFormats::getInstance
static LedgerFormats const & getInstance()
Definition
LedgerFormats.cpp:43
xrpl::STLedgerEntry::const_pointer
std::shared_ptr< STLedgerEntry const > const_pointer
Definition
STLedgerEntry.h:36
xrpl::ledger_entries::LedgerEntryBase::getLedgerEntryType
uint16_t getLedgerEntryType() const
Get the ledger entry type field (sfLedgerEntryType).
Definition
LedgerEntryBase.h:114
xrpl::ledger_entries::LedgerEntryBase::LedgerEntryBase
LedgerEntryBase(SLE::const_pointer sle)
Construct a ledger entry wrapper from an existing SLE object.
Definition
LedgerEntryBase.h:30
xrpl::ledger_entries::LedgerEntryBase::getSle
SLE::const_pointer getSle() const
Get the underlying SLE object.
Definition
LedgerEntryBase.h:155
xrpl::ledger_entries::LedgerEntryBase::getKey
UInt256 const & getKey() const
Get the key (index) of this ledger entry.
Definition
LedgerEntryBase.h:70
xrpl::ledger_entries::LedgerEntryBase::getType
LedgerEntryType getType() const
Get the ledger entry type.
Definition
LedgerEntryBase.h:57
xrpl::ledger_entries::LedgerEntryBase::isFlag
bool isFlag(std::uint32_t f) const
Check if a specific flag is set.
Definition
LedgerEntryBase.h:141
xrpl::ledger_entries::LedgerEntryBase::getLedgerIndex
std::optional< UInt256 > getLedgerIndex() const
Get the ledger index (sfLedgerIndex).
Definition
LedgerEntryBase.h:85
xrpl::ledger_entries::LedgerEntryBase::validate
bool validate() const
Validate the ledger entry.
Definition
LedgerEntryBase.h:40
xrpl::ledger_entries::LedgerEntryBase::hasLedgerIndex
bool hasLedgerIndex() const
Check if the ledger entry has a ledger index.
Definition
LedgerEntryBase.h:100
xrpl::ledger_entries::LedgerEntryBase::getFlags
std::uint32_t getFlags() const
Get the flags field (sfFlags).
Definition
LedgerEntryBase.h:128
xrpl::ledger_entries::LedgerEntryBase::sle_
SLE::const_pointer sle_
The underlying serialized ledger entry being wrapped.
Definition
LedgerEntryBase.h:164
std::uint32_t
std
STL namespace.
xrpl::ledger_entries
Definition
AccountRoot.h:14
xrpl::protocol_autogen::validateSTObject
bool validateSTObject(STObject const &obj, SOTemplate const &format)
Definition
STObjectValidation.h:10
xrpl::UInt256
BaseUInt< 256 > UInt256
Definition
base_uint.h:580
xrpl::LedgerEntryType
LedgerEntryType
Identifiers for on-ledger objects.
Definition
LedgerFormats.h:40
optional
string
Generated by
1.17.0