rippled
Loading...
Searching...
No Matches
protocol_autogen/ledger_entries/Offer.h
1// This file is auto-generated. Do not edit.
2#pragma once
3
4#include <xrpl/protocol/STLedgerEntry.h>
5#include <xrpl/protocol/STParsedJSON.h>
6#include <xrpl/protocol/jss.h>
7#include <xrpl/protocol_autogen/LedgerEntryBase.h>
8#include <xrpl/protocol_autogen/LedgerEntryBuilderBase.h>
9#include <xrpl/json/json_value.h>
10
11#include <stdexcept>
12#include <optional>
13
14namespace xrpl::ledger_entries {
15
16class OfferBuilder;
17
27class Offer : public LedgerEntryBase
28{
29public:
30 static constexpr LedgerEntryType entryType = ltOFFER;
31
37 : LedgerEntryBase(std::move(sle))
38 {
39 // Verify ledger entry type
40 if (sle_->getType() != entryType)
41 {
42 throw std::runtime_error("Invalid ledger entry type for Offer");
43 }
44 }
45
46 // Ledger entry-specific field getters
47
52 [[nodiscard]]
53 SF_ACCOUNT::type::value_type
54 getAccount() const
55 {
56 return this->sle_->at(sfAccount);
57 }
58
63 [[nodiscard]]
64 SF_UINT32::type::value_type
66 {
67 return this->sle_->at(sfSequence);
68 }
69
74 [[nodiscard]]
75 SF_AMOUNT::type::value_type
77 {
78 return this->sle_->at(sfTakerPays);
79 }
80
85 [[nodiscard]]
86 SF_AMOUNT::type::value_type
88 {
89 return this->sle_->at(sfTakerGets);
90 }
91
96 [[nodiscard]]
97 SF_UINT256::type::value_type
99 {
100 return this->sle_->at(sfBookDirectory);
101 }
102
107 [[nodiscard]]
108 SF_UINT64::type::value_type
110 {
111 return this->sle_->at(sfBookNode);
112 }
113
118 [[nodiscard]]
119 SF_UINT64::type::value_type
121 {
122 return this->sle_->at(sfOwnerNode);
123 }
124
129 [[nodiscard]]
130 SF_UINT256::type::value_type
132 {
133 return this->sle_->at(sfPreviousTxnID);
134 }
135
140 [[nodiscard]]
141 SF_UINT32::type::value_type
143 {
144 return this->sle_->at(sfPreviousTxnLgrSeq);
145 }
146
151 [[nodiscard]]
154 {
155 if (hasExpiration())
156 return this->sle_->at(sfExpiration);
157 return std::nullopt;
158 }
159
164 [[nodiscard]]
165 bool
167 {
168 return this->sle_->isFieldPresent(sfExpiration);
169 }
170
175 [[nodiscard]]
178 {
179 if (hasDomainID())
180 return this->sle_->at(sfDomainID);
181 return std::nullopt;
182 }
183
188 [[nodiscard]]
189 bool
191 {
192 return this->sle_->isFieldPresent(sfDomainID);
193 }
194
200 [[nodiscard]]
203 {
204 if (this->sle_->isFieldPresent(sfAdditionalBooks))
205 return this->sle_->getFieldArray(sfAdditionalBooks);
206 return std::nullopt;
207 }
208
213 [[nodiscard]]
214 bool
216 {
217 return this->sle_->isFieldPresent(sfAdditionalBooks);
218 }
219};
220
228class OfferBuilder : public LedgerEntryBuilderBase<OfferBuilder>
229{
230public:
256
263 {
264 if (sle->at(sfLedgerEntryType) != ltOFFER)
265 {
266 throw std::runtime_error("Invalid ledger entry type for Offer");
267 }
268 object_ = *sle;
269 }
270
279 {
280 object_[sfAccount] = value;
281 return *this;
282 }
283
290 {
291 object_[sfSequence] = value;
292 return *this;
293 }
294
301 {
302 object_[sfTakerPays] = value;
303 return *this;
304 }
305
312 {
313 object_[sfTakerGets] = value;
314 return *this;
315 }
316
323 {
324 object_[sfBookDirectory] = value;
325 return *this;
326 }
327
334 {
335 object_[sfBookNode] = value;
336 return *this;
337 }
338
345 {
346 object_[sfOwnerNode] = value;
347 return *this;
348 }
349
356 {
357 object_[sfPreviousTxnID] = value;
358 return *this;
359 }
360
367 {
368 object_[sfPreviousTxnLgrSeq] = value;
369 return *this;
370 }
371
378 {
379 object_[sfExpiration] = value;
380 return *this;
381 }
382
389 {
390 object_[sfDomainID] = value;
391 return *this;
392 }
393
400 {
401 object_.setFieldArray(sfAdditionalBooks, value);
402 return *this;
403 }
404
410 Offer
411 build(uint256 const& index)
412 {
413 return Offer{std::make_shared<SLE>(std::move(object_), index)};
414 }
415};
416
417} // namespace xrpl::ledger_entries
void setFieldArray(SField const &field, STArray const &v)
Definition STObject.cpp:819
Base class for type-safe ledger entry wrappers.
std::shared_ptr< SLE const > sle_
The underlying serialized ledger entry being wrapped.
Base class for all ledger entry builders.
OfferBuilder(std::decay_t< typename SF_ACCOUNT::type::value_type > const &account, std::decay_t< typename SF_UINT32::type::value_type > const &sequence, std::decay_t< typename SF_AMOUNT::type::value_type > const &takerPays, std::decay_t< typename SF_AMOUNT::type::value_type > const &takerGets, std::decay_t< typename SF_UINT256::type::value_type > const &bookDirectory, std::decay_t< typename SF_UINT64::type::value_type > const &bookNode, std::decay_t< typename SF_UINT64::type::value_type > const &ownerNode, std::decay_t< typename SF_UINT256::type::value_type > const &previousTxnID, std::decay_t< typename SF_UINT32::type::value_type > const &previousTxnLgrSeq)
Construct a new OfferBuilder with required fields.
OfferBuilder & setTakerGets(std::decay_t< typename SF_AMOUNT::type::value_type > const &value)
Set sfTakerGets (soeREQUIRED)
OfferBuilder & setExpiration(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfExpiration (soeOPTIONAL)
OfferBuilder & setBookDirectory(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfBookDirectory (soeREQUIRED)
OfferBuilder & setTakerPays(std::decay_t< typename SF_AMOUNT::type::value_type > const &value)
Set sfTakerPays (soeREQUIRED)
OfferBuilder & setOwnerNode(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfOwnerNode (soeREQUIRED)
OfferBuilder & setAccount(std::decay_t< typename SF_ACCOUNT::type::value_type > const &value)
Ledger entry-specific field setters.
OfferBuilder & setPreviousTxnID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfPreviousTxnID (soeREQUIRED)
OfferBuilder & setPreviousTxnLgrSeq(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfPreviousTxnLgrSeq (soeREQUIRED)
OfferBuilder & setDomainID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfDomainID (soeOPTIONAL)
OfferBuilder(std::shared_ptr< SLE const > sle)
Construct a OfferBuilder from an existing SLE object.
OfferBuilder & setAdditionalBooks(STArray const &value)
Set sfAdditionalBooks (soeOPTIONAL)
Offer build(uint256 const &index)
Build and return the completed Offer wrapper.
OfferBuilder & setSequence(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfSequence (soeREQUIRED)
OfferBuilder & setBookNode(std::decay_t< typename SF_UINT64::type::value_type > const &value)
Set sfBookNode (soeREQUIRED)
SF_AMOUNT::type::value_type getTakerGets() const
Get sfTakerGets (soeREQUIRED)
SF_UINT64::type::value_type getBookNode() const
Get sfBookNode (soeREQUIRED)
SF_UINT256::type::value_type getPreviousTxnID() const
Get sfPreviousTxnID (soeREQUIRED)
Offer(std::shared_ptr< SLE const > sle)
Construct a Offer ledger entry wrapper from an existing SLE object.
SF_UINT64::type::value_type getOwnerNode() const
Get sfOwnerNode (soeREQUIRED)
protocol_autogen::Optional< SF_UINT256::type::value_type > getDomainID() const
Get sfDomainID (soeOPTIONAL)
std::optional< std::reference_wrapper< STArray const > > getAdditionalBooks() const
Get sfAdditionalBooks (soeOPTIONAL)
bool hasExpiration() const
Check if sfExpiration is present.
bool hasAdditionalBooks() const
Check if sfAdditionalBooks is present.
protocol_autogen::Optional< SF_UINT32::type::value_type > getExpiration() const
Get sfExpiration (soeOPTIONAL)
SF_AMOUNT::type::value_type getTakerPays() const
Get sfTakerPays (soeREQUIRED)
SF_UINT32::type::value_type getSequence() const
Get sfSequence (soeREQUIRED)
SF_UINT256::type::value_type getBookDirectory() const
Get sfBookDirectory (soeREQUIRED)
SF_ACCOUNT::type::value_type getAccount() const
Get sfAccount (soeREQUIRED)
bool hasDomainID() const
Check if sfDomainID is present.
SF_UINT32::type::value_type getPreviousTxnLgrSeq() const
Get sfPreviousTxnLgrSeq (soeREQUIRED)
T is_same_v
STL namespace.
LedgerEntryType
Identifiers for on-ledger objects.