xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
include
xrpl
protocol_autogen
STObjectValidation.h
1
#pragma once
2
3
#include <xrpl/protocol/SOTemplate.h>
4
#include <xrpl/protocol/STObject.h>
5
6
namespace
xrpl::protocol_autogen
{
7
8
[[nodiscard]]
9
inline
bool
10
validateSTObject
(
STObject
const
& obj,
SOTemplate
const
& format)
11
{
12
for
(
auto
const
& field : format)
13
{
14
if
(!obj.
isFieldPresent
(field.sField()) && field.style() ==
SoeRequired
)
15
{
16
return
false
;
// LCOV_EXCL_LINE
17
}
18
19
if
(field.supportMPT() ==
SoeMptNotSupported
&& obj.
isFieldPresent
(field.sField()))
20
{
21
if
(field.sField().fieldType == STI_AMOUNT)
22
{
23
auto
const
& amount = obj.
getFieldAmount
(field.sField());
24
25
if
(amount.asset().holds<
MPTIssue
>())
26
return
false
;
// LCOV_EXCL_LINE
27
}
28
else
if
(field.sField().fieldType == STI_ISSUE)
29
{
30
auto
issue =
dynamic_cast<
STIssue
const*
>
(obj.
peekAtPField
(field.sField()));
31
if
(!issue)
32
return
false
;
// LCOV_EXCL_LINE
33
34
if
(issue->holds<
MPTIssue
>())
35
return
false
;
// LCOV_EXCL_LINE
36
}
37
}
38
}
39
40
return
true
;
41
}
42
43
}
// namespace xrpl::protocol_autogen
xrpl::MPTIssue
Definition
MPTIssue.h:23
xrpl::SOTemplate
Defines the fields and their attributes within a STObject.
Definition
SOTemplate.h:105
xrpl::STIssue
Definition
STIssue.h:21
xrpl::STObject
Definition
STObject.h:49
xrpl::STObject::isFieldPresent
bool isFieldPresent(SField const &field) const
Definition
STObject.cpp:464
xrpl::STObject::peekAtPField
STBase const * peekAtPField(SField const &field) const
Definition
STObject.cpp:437
xrpl::STObject::getFieldAmount
STAmount const & getFieldAmount(SField const &field) const
Definition
STObject.cpp:657
xrpl::protocol_autogen
Definition
STObjectValidation.h:6
xrpl::protocol_autogen::validateSTObject
bool validateSTObject(STObject const &obj, SOTemplate const &format)
Definition
STObjectValidation.h:10
xrpl::SoeRequired
@ SoeRequired
Definition
SOTemplate.h:22
xrpl::SoeMptNotSupported
@ SoeMptNotSupported
Definition
SOTemplate.h:34
Generated by
1.17.0