20 #include <ripple/rpc/impl/GRPCHelpers.h>
33 template <
class T,
class L>
43 if constexpr (std::is_integral_v<typename T::value_type>)
45 getProto()->set_value(from[field]);
50 getProto()->set_value(v.data(), v.size());
64 getProto()->set_value(
65 reinterpret_cast<const char*
>(data.data()), data.size());
79 for (
size_t i = 0; i < vec.
size(); ++i)
82 getProto()->set_value(elt.
data(), elt.
size());
96 getProto()->mutable_value()->set_address(
125 auto proto = getProto()->mutable_value();
126 proto->set_code(cur.data(), cur.size());
131 template <
class T,
class R>
135 R
const& populateProto,
144 for (
auto it = arr.begin(); it != arr.end(); ++it)
146 populateProto(*it, *getProto());
156 [&to]() {
return to.mutable_clear_flag(); }, from,
sfClearFlag);
164 [&to]() {
return to.mutable_domain(); }, from,
sfDomain);
172 [&to]() {
return to.mutable_email_hash(); }, from,
sfEmailHash);
180 [&to]() {
return to.mutable_message_key(); }, from,
sfMessageKey);
188 [&to]() {
return to.mutable_set_flag(); }, from,
sfSetFlag);
196 [&to]() {
return to.mutable_transfer_rate(); }, from,
sfTransferRate);
204 [&to]() {
return to.mutable_tick_size(); }, from,
sfTickSize);
212 [&to]() {
return to.mutable_expiration(); }, from,
sfExpiration);
220 [&to]() {
return to.mutable_offer_sequence(); }, from,
sfOfferSequence);
228 [&to]() {
return to.mutable_taker_gets(); }, from,
sfTakerGets);
236 [&to]() {
return to.mutable_taker_pays(); }, from,
sfTakerPays);
244 [&to]() {
return to.mutable_destination(); }, from,
sfDestination);
252 [&to]() {
return to.mutable_check_id(); }, from,
sfCheckID);
260 [&to]() {
return to.mutable_amount(); }, from,
sfAmount);
268 [&to]() {
return to.mutable_deliver_min(); }, from,
sfDeliverMin);
276 [&to]() {
return to.mutable_send_max(); }, from,
sfSendMax);
284 [&to]() {
return to.mutable_delivered_amount(); },
294 [&to]() {
return to.mutable_destination_tag(); },
304 [&to]() {
return to.mutable_invoice_id(); }, from,
sfInvoiceID);
312 [&to]() {
return to.mutable_authorize(); }, from,
sfAuthorize);
320 [&to]() {
return to.mutable_unauthorize(); }, from,
sfUnauthorize);
335 [&to]() {
return to.mutable_cancel_after(); }, from,
sfCancelAfter);
343 [&to]() {
return to.mutable_finish_after(); }, from,
sfFinishAfter);
351 [&to]() {
return to.mutable_condition(); }, from,
sfCondition);
359 [&to]() {
return to.mutable_fulfillment(); }, from,
sfFulfillment);
367 [&to]() {
return to.mutable_channel(); }, from,
sfPayChannel);
375 [&to]() {
return to.mutable_balance(); }, from,
sfBalance);
383 [&to]() {
return to.mutable_payment_channel_signature(); },
393 [&to]() {
return to.mutable_public_key(); }, from,
sfPublicKey);
401 [&to]() {
return to.mutable_settle_delay(); }, from,
sfSettleDelay);
409 [&to]() {
return to.mutable_regular_key(); }, from,
sfRegularKey);
417 [&to]() {
return to.mutable_signer_quorum(); }, from,
sfSignerQuorum);
424 [&to]() {
return to.mutable_limit_amount(); }, from,
sfLimitAmount);
431 [&to]() {
return to.mutable_quality_in(); }, from,
sfQualityIn);
439 [&to]() {
return to.mutable_quality_out(); }, from,
sfQualityOut);
447 [&to]() {
return to.mutable_account(); }, from,
sfAccount);
465 [&to]() {
return to.mutable_signing_public_key(); },
475 [&to]() {
return to.mutable_transaction_signature(); },
485 [&to]() {
return to.mutable_flags(); }, from,
sfFlags);
493 [&to]() {
return to.mutable_last_ledger_sequence(); },
503 [&to]() {
return to.mutable_source_tag(); }, from,
sfSourceTag);
511 [&to]() {
return to.mutable_account_transaction_id(); },
521 [&to]() {
return to.mutable_memo_data(); }, from,
sfMemoData);
529 [&to]() {
return to.mutable_memo_format(); }, from,
sfMemoFormat);
537 [&to]() {
return to.mutable_memo_type(); }, from,
sfMemoType);
545 [&to]() {
return to.mutable_sequence(); }, from,
sfSequence);
553 [&to]() {
return to.mutable_amendment(); }, from,
sfAmendment);
561 [&to]() {
return to.mutable_close_time(); }, from,
sfCloseTime);
569 [&to]() {
return to.mutable_signer_weight(); }, from,
sfSignerWeight);
577 [&to]() {
return to.add_amendments(); }, from,
sfAmendments);
585 [&to]() {
return to.mutable_owner_count(); }, from,
sfOwnerCount);
593 [&to]() {
return to.mutable_previous_transaction_id(); },
603 [&to]() {
return to.mutable_previous_transaction_ledger_sequence(); },
613 [&to]() {
return to.mutable_low_limit(); }, from,
sfLowLimit);
621 [&to]() {
return to.mutable_high_limit(); }, from,
sfHighLimit);
629 [&to]() {
return to.mutable_low_node(); }, from,
sfLowNode);
637 [&to]() {
return to.mutable_high_node(); }, from,
sfHighNode);
645 [&to]() {
return to.mutable_low_quality_in(); }, from,
sfLowQualityIn);
653 [&to]() {
return to.mutable_low_quality_out(); },
663 [&to]() {
return to.mutable_high_quality_in(); },
673 [&to]() {
return to.mutable_high_quality_out(); },
683 [&to]() {
return to.mutable_book_directory(); }, from,
sfBookDirectory);
691 [&to]() {
return to.mutable_book_node(); }, from,
sfBookNode);
699 [&to]() {
return to.mutable_owner_node(); }, from,
sfOwnerNode);
707 [&to]() {
return to.mutable_signer_list_id(); }, from,
sfSignerListID);
729 [&to]() {
return to.mutable_root_index(); }, from,
sfRootIndex);
737 [&to]() {
return to.mutable_index_next(); }, from,
sfIndexNext);
745 [&to]() {
return to.mutable_index_previous(); }, from,
sfIndexPrevious);
753 [&to]() {
return to.mutable_taker_pays_currency(); },
763 [&to]() {
return to.mutable_taker_pays_issuer(); },
773 [&to]() {
return to.mutable_taker_gets_currency(); },
783 [&to]() {
return to.mutable_taker_gets_issuer(); },
793 [&to]() {
return to.mutable_destination_node(); },
803 [&to]() {
return to.mutable_base_fee(); }, from,
sfBaseFee);
811 [&to]() {
return to.mutable_reference_fee_units(); },
821 [&to]() {
return to.mutable_reserve_base(); }, from,
sfReserveBase);
829 [&to]() {
return to.mutable_reserve_increment(); },
839 [&to]() {
return to.add_signer_entries(); },
840 [](
auto& innerObj,
auto& innerProto) {
854 [&to]() {
return to.add_memos(); },
855 [](
auto& innerObj,
auto& innerProto) {
870 [&to]() {
return to.add_signers(); },
871 [](
auto& innerObj,
auto& innerProto) {
886 [&to]() {
return to.add_majorities(); },
887 [](
auto innerObj,
auto innerProto) {
902 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TEC);
907 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TEF);
912 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TEL);
917 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TEM);
922 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TER);
927 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TES);
1130 for (
auto it = pathset.
begin(); it < pathset.
end(); ++it)
1132 STPath const& path = *it;
1134 org::xrpl::rpc::v1::Payment_Path* protoPath = to.add_paths();
1136 for (
auto it2 = path.begin(); it2 != path.end(); ++it2)
1138 org::xrpl::rpc::v1::Payment_PathElement* protoElement =
1139 protoPath->add_elements();
1147 protoElement->mutable_currency()->set_name(
1153 protoElement->mutable_issuer()->set_address(
1160 protoElement->mutable_account()->set_address(
1422 org::xrpl::rpc::v1::AffectedNode& proto,
1428 proto.set_ledger_entry_type(
1429 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_ACCOUNT_ROOT);
1432 proto.set_ledger_entry_type(
1433 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_DIRECTORY_NODE);
1436 proto.set_ledger_entry_type(
1437 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_RIPPLE_STATE);
1440 proto.set_ledger_entry_type(
1441 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_SIGNER_LIST);
1444 proto.set_ledger_entry_type(
1445 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_OFFER);
1448 proto.set_ledger_entry_type(
1449 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_LEDGER_HASHES);
1452 proto.set_ledger_entry_type(
1453 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_AMENDMENTS);
1456 proto.set_ledger_entry_type(
1457 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_FEE_SETTINGS);
1460 proto.set_ledger_entry_type(
1461 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_ESCROW);
1464 proto.set_ledger_entry_type(
1465 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_PAY_CHANNEL);
1468 proto.set_ledger_entry_type(
1469 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_CHECK);
1472 proto.set_ledger_entry_type(
1473 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_DEPOSIT_PREAUTH);
1536 convert(*getProto(), data, lgrType);
1564 to.set_transaction_index(from->getIndex());
1566 convert(*to.mutable_transaction_result(), from->getResultTER());
1567 to.mutable_transaction_result()->set_result(
1570 if (from->hasDeliveredAmount())
1571 convert(*to.mutable_delivered_amount(), from->getDeliveredAmount());
1573 STArray& nodes = from->getNodes();
1574 for (
auto it = nodes.
begin(); it != nodes.
end(); ++it)
1577 org::xrpl::rpc::v1::AffectedNode* node = to.add_affected_nodes();
1581 node->set_ledger_index(ledgerIndex.
data(), ledgerIndex.
size());
1592 return node->mutable_modified_node()
1593 ->mutable_final_fields();
1600 return node->mutable_modified_node()
1601 ->mutable_previous_fields();
1609 *node->mutable_modified_node(), obj);
1616 return node->mutable_created_node()->mutable_new_fields();
1626 return node->mutable_deleted_node()->mutable_final_fields();
1636 org::xrpl::rpc::v1::QueueData& to,
1641 to.set_txn_count(from.
size());
1642 to.set_lowest_sequence(from.
begin()->first);
1643 to.set_highest_sequence(from.
rbegin()->first);
1645 boost::optional<bool> anyAuthChanged(
false);
1646 boost::optional<XRPAmount> totalSpend(0);
1648 for (
auto const& [txSeq, txDetails] : from)
1650 org::xrpl::rpc::v1::QueuedTransaction& qt = *to.add_transactions();
1652 qt.mutable_sequence()->set_value(txSeq);
1653 qt.set_fee_level(txDetails.feeLevel.fee());
1654 if (txDetails.lastValid)
1655 qt.mutable_last_ledger_sequence()->set_value(
1656 *txDetails.lastValid);
1658 if (txDetails.consequences)
1660 qt.mutable_fee()->set_drops(
1661 txDetails.consequences->fee.drops());
1662 auto spend = txDetails.consequences->potentialSpend +
1663 txDetails.consequences->fee;
1664 qt.mutable_max_spend_drops()->set_drops(spend.drops());
1666 *totalSpend += spend;
1670 anyAuthChanged.emplace(authChanged);
1671 qt.set_auth_change(authChanged);
1675 if (anyAuthChanged && !*anyAuthChanged)
1676 anyAuthChanged.reset();
1682 to.set_auth_change_queued(*anyAuthChanged);
1684 to.mutable_max_spend_drops_total()->set_drops(
1685 (*totalSpend).drops());
1691 org::xrpl::rpc::v1::Transaction& to,
1722 case TxType::ttPAYMENT:
1723 convert(*to.mutable_payment(), fromObj);
1725 case TxType::ttESCROW_CREATE:
1726 convert(*to.mutable_escrow_create(), fromObj);
1728 case TxType::ttESCROW_FINISH:
1729 convert(*to.mutable_escrow_finish(), fromObj);
1731 case TxType::ttACCOUNT_SET:
1732 convert(*to.mutable_account_set(), fromObj);
1734 case TxType::ttESCROW_CANCEL:
1735 convert(*to.mutable_escrow_cancel(), fromObj);
1737 case TxType::ttREGULAR_KEY_SET:
1738 convert(*to.mutable_set_regular_key(), fromObj);
1740 case TxType::ttOFFER_CREATE:
1741 convert(*to.mutable_offer_create(), fromObj);
1743 case TxType::ttOFFER_CANCEL:
1744 convert(*to.mutable_offer_cancel(), fromObj);
1746 case TxType::ttSIGNER_LIST_SET:
1747 convert(*to.mutable_signer_list_set(), fromObj);
1749 case TxType::ttPAYCHAN_CREATE:
1750 convert(*to.mutable_payment_channel_create(), fromObj);
1752 case TxType::ttPAYCHAN_FUND:
1753 convert(*to.mutable_payment_channel_fund(), fromObj);
1755 case TxType::ttPAYCHAN_CLAIM:
1756 convert(*to.mutable_payment_channel_claim(), fromObj);
1758 case TxType::ttCHECK_CREATE:
1759 convert(*to.mutable_check_create(), fromObj);
1761 case TxType::ttCHECK_CASH:
1762 convert(*to.mutable_check_cash(), fromObj);
1764 case TxType::ttCHECK_CANCEL:
1765 convert(*to.mutable_check_cancel(), fromObj);
1767 case TxType::ttDEPOSIT_PREAUTH:
1768 convert(*to.mutable_deposit_preauth(), fromObj);
1770 case TxType::ttTRUST_SET:
1771 convert(*to.mutable_trust_set(), fromObj);
1773 case TxType::ttACCOUNT_DELETE:
1774 convert(*to.mutable_account_delete(), fromObj);
void populateTakerPaysCurrency(T &to, STObject const &from)
void populatePaymentChannelSignature(T &to, STObject const &from)
void populateIndexNext(T &to, STObject const &from)
const SF_U32 sfHighQualityIn(access, STI_UINT32, 16, "HighQualityIn")
void populateLowQualityOut(T &to, STObject const &from)
void populateProtoAmount(T const &getProto, STObject const &from, SF_Amount const &field)
const STBase & peekAtField(SField const &field) const
const STArray & getFieldArray(SField const &field) const
const SF_Account sfRegularKey(access, STI_ACCOUNT, 8, "RegularKey")
void populatePublicKey(T &to, STObject const &from)
void populateTakerPaysIssuer(T &to, STObject const &from)
void populateBaseFee(T &to, STObject const &from)
virtual SerializedTypeID getSType() const
const SF_U64 sfIndexNext(access, STI_UINT64, 1, "IndexNext")
const SField sfPreviousFields(access, STI_OBJECT, 6, "PreviousFields")
void populateReserveBase(T &to, STObject const &from)
void populateProtoVLasString(T const &getProto, STObject const &from, SF_Blob const &field)
void populateAmount(T &to, STObject const &from)
void populateSourceTag(T &to, STObject const &from)
void populateExpiration(T &to, STObject const &from)
A field with a type known at compile time.
void populateSignerEntries(T &to, STObject const &from)
std::vector< STPath >::const_iterator end() const
const SF_U32 sfPreviousTxnLgrSeq(access, STI_UINT32, 5, "PreviousTxnLgrSeq", SField::sMD_DeleteFinal)
const SF_U32 sfQualityIn(access, STI_UINT32, 20, "QualityIn")
const SF_U16 sfLedgerEntryType(access, STI_UINT16, 1, "LedgerEntryType", SField::sMD_Never)
const SF_U256 sfLedgerIndex(access, STI_HASH256, 6, "LedgerIndex")
void populateSigners(T &to, STObject const &from)
const SField sfSigners(access, STI_ARRAY, 3, "Signers", SField::sMD_Default, SField::notSigning)
const STVector256 & getFieldV256(SField const &field) const
const SF_Blob sfMemoType(access, STI_VL, 12, "MemoType")
void populateMemoType(T &to, STObject const &from)
constexpr value_type drops() const
Returns the number of drops.
void populateHighLimit(T &to, STObject const &from)
const SF_Blob sfSigningPubKey(access, STI_VL, 3, "SigningPubKey")
void populateBookNode(T &to, STObject const &from)
void populateAccount(T &to, STObject const &from)
const SF_Amount sfDeliveredAmount(access, STI_AMOUNT, 18, "DeliveredAmount")
const SF_U32 sfSignerQuorum(access, STI_UINT32, 35, "SignerQuorum")
const SF_Blob sfMessageKey(access, STI_VL, 2, "MessageKey")
const SF_U32 sfSequence(access, STI_UINT32, 4, "Sequence")
const SF_Account sfAccount(access, STI_ACCOUNT, 1, "Account")
const SF_U32 sfFlags(access, STI_UINT32, 2, "Flags")
const SF_U160 sfTakerPaysIssuer(access, STI_HASH160, 2, "TakerPaysIssuer")
const SField sfNewFields(access, STI_OBJECT, 8, "NewFields")
void populateMemos(T &to, STObject const &from)
const SField sfMajorities(access, STI_ARRAY, 16, "Majorities")
std::string toBase58(AccountID const &v)
Convert AccountID to base58 checked string.
void populateLimitAmount(T &to, STObject const &from)
void populateFee(T &to, STObject const &from)
void populateProtoVec256(T const &getProto, STObject const &from, SF_Vec256 const &field)
const SF_Amount sfTakerPays(access, STI_AMOUNT, 4, "TakerPays")
std::string transToken(TER code)
void populateOwner(T &to, STObject const &from)
void populateClearFlag(T &to, STObject const &from)
void populateFields(T const &getProto, STObject &obj, SField const &field, uint16_t lgrType)
void populateFulfillment(T &to, STObject const &from)
const SF_Account sfUnauthorize(access, STI_ACCOUNT, 6, "Unauthorize")
void populateMajorities(T &to, STObject const &from)
void populateRootIndex(T &to, STObject const &from)
Currency const & getCurrency() const
void populateDomain(T &to, STObject const &from)
void populateTransactionSignature(T &to, STObject const &from)
void populateQualityIn(T &to, STObject const &from)
std::string to_string(ListDisposition disposition)
Blob getFieldVL(SField const &field) const
const SF_U64 sfOwnerNode(access, STI_UINT64, 4, "OwnerNode")
const SField sfSigner(access, STI_OBJECT, 16, "Signer")
void populateMessageKey(T &to, STObject const &from)
const SF_U160 sfTakerGetsCurrency(access, STI_HASH160, 3, "TakerGetsCurrency")
const SF_U256 sfPayChannel(access, STI_HASH256, 22, "Channel")
void populateSettleDelay(T &to, STObject const &from)
const SF_Amount sfAmount(access, STI_AMOUNT, 1, "Amount")
const SField sfSignerEntries(access, STI_ARRAY, 4, "SignerEntries")
uint160 getFieldH160(SField const &field) const
void populateLowQualityIn(T &to, STObject const &from)
const SF_U32 sfOwnerCount(access, STI_UINT32, 13, "OwnerCount")
void populateDeliverMin(T &to, STObject const &from)
const SField sfFinalFields(access, STI_OBJECT, 7, "FinalFields")
const SField sfModifiedNode(access, STI_OBJECT, 5, "ModifiedNode")
const SF_U32 sfReserveBase(access, STI_UINT32, 31, "ReserveBase")
const SF_Amount sfLimitAmount(access, STI_AMOUNT, 3, "LimitAmount")
const SF_Amount sfHighLimit(access, STI_AMOUNT, 7, "HighLimit")
void populateFlags(T &to, STObject const &from)
const SF_U32 sfFinishAfter(access, STI_UINT32, 37, "FinishAfter")
void populateCheckID(T &to, STObject const &from)
void populateCondition(T &to, STObject const &from)
const SF_Blob sfSignature(access, STI_VL, 6, "Signature", SField::sMD_Default, SField::notSigning)
void populateOfferSequence(T &to, STObject const &from)
void populateFinishAfter(T &to, STObject const &from)
const SF_U256 sfAccountTxnID(access, STI_HASH256, 9, "AccountTxnID")
void populatePreviousTransactionID(T &to, STObject const &from)
const SF_Amount sfLowLimit(access, STI_AMOUNT, 6, "LowLimit")
const SField sfMajority(access, STI_OBJECT, 18, "Majority")
constexpr static std::size_t size()
const SF_U32 sfDestinationTag(access, STI_UINT32, 14, "DestinationTag")
const SF_Blob sfMemoData(access, STI_VL, 13, "MemoData")
const SF_U64 sfIndexPrevious(access, STI_UINT64, 2, "IndexPrevious")
const SF_Blob sfFulfillment(access, STI_VL, 16, "Fulfillment")
const SF_U32 sfLastLedgerSequence(access, STI_UINT32, 27, "LastLedgerSequence")
void convert(org::xrpl::rpc::v1::TransactionResult &to, TER from)
void populateNewFields(T const &getProto, STObject &obj, uint16_t lgrType)
void populateDestinationTag(T &to, STObject const &from)
void populateHighQualityIn(T &to, STObject const &from)
const SF_Account sfOwner(access, STI_ACCOUNT, 2, "Owner")
const SF_U64 sfHighNode(access, STI_UINT64, 8, "HighNode")
void populateSignerQuorum(T &to, STObject const &from)
void populateProtoPrimitive(L const &getProto, STObject const &from, TypedField< T > const &field)
const SF_U256 sfBookDirectory(access, STI_HASH256, 16, "BookDirectory")
void populateDeliveredAmount(T &to, STObject const &from)
const SF_Amount sfSendMax(access, STI_AMOUNT, 9, "SendMax")
AccountID getAccountID(SField const &field) const
const SF_U256 sfAmendment(access, STI_HASH256, 19, "Amendment")
const SF_U32 sfSignerListID(access, STI_UINT32, 38, "SignerListID")
void setLedgerEntryType(org::xrpl::rpc::v1::AffectedNode &proto, std::uint16_t lgrType)
const SF_U64 sfDestinationNode(access, STI_UINT64, 9, "DestinationNode")
void populateProtoCurrency(T const &getProto, STObject const &from, SF_U160 const &field)
AccountID const & getIssuerID() const
AccountID const & getAccountID() const
const SF_Blob sfTxnSignature(access, STI_VL, 4, "TxnSignature", SField::sMD_Default, SField::notSigning)
const SF_U16 sfTransactionType(access, STI_UINT16, 2, "TransactionType")
void populatePreviousFields(T const &getProto, STObject &obj, uint16_t lgrType)
void populateTransferRate(T &to, STObject const &from)
const SF_U32 sfReferenceFeeUnits(access, STI_UINT32, 30, "ReferenceFeeUnits")
void populatePreviousTransactionLedgerSequence(T &to, STObject const &from)
const SField sfSignerEntry(access, STI_OBJECT, 11, "SignerEntry")
void populateReserveIncrement(T &to, STObject const &from)
void populateUnauthorize(T &to, STObject const &from)
const SF_U32 sfLowQualityOut(access, STI_UINT32, 19, "LowQualityOut")
void populateDestinationNode(T &to, STObject const &from)
void populateMemoFormat(T &to, STObject const &from)
const SField sfCreatedNode(access, STI_OBJECT, 3, "CreatedNode")
void populateCancelAfter(T &to, STObject const &from)
const SF_U32 sfSourceTag(access, STI_UINT32, 3, "SourceTag")
std::vector< STPath >::const_iterator begin() const
const SF_Vec256 sfIndexes(access, STI_VECTOR256, 1, "Indexes", SField::sMD_Never)
std::uint16_t getFieldU16(SField const &field) const
void populateTakerPays(T &to, STObject const &from)
const SF_U32 sfExpiration(access, STI_UINT32, 10, "Expiration")
const SF_Amount sfFee(access, STI_AMOUNT, 8, "Fee")
void populateChannel(T &to, STObject const &from)
const SF_U32 sfQualityOut(access, STI_UINT32, 21, "QualityOut")
void populateAmendment(T &to, STObject const &from)
void populateProtoAccount(T const &getProto, STObject const &from, SF_Account const &field)
void populateDestination(T &to, STObject const &from)
void populateBalance(T &to, STObject const &from)
void populateTakerGets(T &to, STObject const &from)
SField const & getFName() const
const SField sfMemo(access, STI_OBJECT, 10, "Memo")
const SF_Vec256 sfHashes(access, STI_VECTOR256, 2, "Hashes")
void populateCloseTime(T &to, STObject const &from)
void populateTakerGetsIssuer(T &to, STObject const &from)
void populateSendMax(T &to, STObject const &from)
const SF_Blob sfPublicKey(access, STI_VL, 1, "PublicKey")
void populateSignerWeight(T &to, STObject const &from)
const SF_U16 sfSignerWeight(access, STI_UINT16, 3, "SignerWeight")
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
void populateLastLedgerSequence(T &to, STObject const &from)
void populateSetFlag(T &to, STObject const &from)
void populateAuthorize(T &to, STObject const &from)
const SF_U32 sfLowQualityIn(access, STI_UINT32, 18, "LowQualityIn")
const SF_Amount sfBalance(access, STI_AMOUNT, 2, "Balance")
const SF_U160 sfTakerPaysCurrency(access, STI_HASH160, 1, "TakerPaysCurrency")
const SF_Amount sfDeliverMin(access, STI_AMOUNT, 10, "DeliverMin")
const SF_U32 sfOfferSequence(access, STI_UINT32, 25, "OfferSequence")
void populateSequence(T &to, STObject const &from)
STBase & getField(SField const &field)
void populateIndexes(T &to, STObject const &from)
const SF_U32 sfReserveIncrement(access, STI_UINT32, 32, "ReserveIncrement")
bool isFieldPresent(SField const &field) const
void populateSignerListID(T &to, STObject const &from)
void populateHighQualityOut(T &to, STObject const &from)
void populateFinalFields(T const &getProto, STObject &obj, uint16_t lgrType)
void populateIndexPrevious(T &to, STObject const &from)
const SF_U32 sfClearFlag(access, STI_UINT32, 34, "ClearFlag")
const SF_Blob sfCondition(access, STI_VL, 17, "Condition")
const SField sfPaths(access, STI_PATHSET, 1, "Paths")
const SF_U32 sfCloseTime(access, STI_UINT32, 7, "CloseTime")
const SField sfMemos(access, STI_ARRAY, 9, "Memos")
void populateMemoData(T &to, STObject const &from)
const SF_U32 sfSettleDelay(access, STI_UINT32, 39, "SettleDelay")
void populateInvoiceID(T &to, STObject const &from)
const SF_Amount sfTakerGets(access, STI_AMOUNT, 5, "TakerGets")
const SF_Account sfDestination(access, STI_ACCOUNT, 3, "Destination")
const SF_U256 sfCheckID(access, STI_HASH256, 24, "CheckID")
const SF_U256 sfRootIndex(access, STI_HASH256, 8, "RootIndex", SField::sMD_Always)
const SF_U32 sfTransferRate(access, STI_UINT32, 11, "TransferRate")
void populateHighNode(T &to, STObject const &from)
const SF_U64 sfLowNode(access, STI_UINT64, 7, "LowNode")
void populateLowNode(T &to, STObject const &from)
@ ltDIR_NODE
Directory node.
void populateProtoArray(T const &getProto, R const &populateProto, STObject const &from, SField const &outerField, SField const &innerField)
const SF_Vec256 sfAmendments(access, STI_VECTOR256, 3, "Amendments")
const SF_U64 sfBookNode(access, STI_UINT64, 3, "BookNode")
void populateSigningPublicKey(T &to, STObject const &from)
void populateBookDirectory(T &to, STObject const &from)
const SF_U64 sfBaseFee(access, STI_UINT64, 5, "BaseFee")
void populateAccountTransactionID(T &to, STObject const &from)
const SF_Account sfAuthorize(access, STI_ACCOUNT, 5, "Authorize")
const SField sfDeletedNode(access, STI_OBJECT, 4, "DeletedNode")
@ blocker
Affects the ability of subsequent transactions to claim a fee.
void populateReferenceFeeUnits(T &to, STObject const &from)
void populateOwnerCount(T &to, STObject const &from)
void populateLowLimit(T &to, STObject const &from)
void populateRegularKey(T &to, STObject const &from)
STPathSet const & getFieldPathSet(SField const &field) const
void populateHashes(T &to, STObject const &from)
void populateTakerGetsCurrency(T &to, STObject const &from)
void populateAmendments(T &to, STObject const &from)
const SF_U32 sfHighQualityOut(access, STI_UINT32, 17, "HighQualityOut")
STAmount const & getFieldAmount(SField const &field) const
const SF_U256 sfPreviousTxnID(access, STI_HASH256, 5, "PreviousTxnID", SField::sMD_DeleteFinal)
const SF_U32 sfCancelAfter(access, STI_UINT32, 36, "CancelAfter")
bool isTemMalformed(TER x)
const SF_U128 sfEmailHash(access, STI_HASH128, 1, "EmailHash")
const SF_U32 sfSetFlag(access, STI_UINT32, 33, "SetFlag")
void populateOwnerNode(T &to, STObject const &from)
const SF_U8 sfTickSize(access, STI_UINT8, 16, "TickSize")
const SF_Blob sfMemoFormat(access, STI_VL, 14, "MemoFormat")
const SF_U256 sfInvoiceID(access, STI_HASH256, 17, "InvoiceID")
void populateEmailHash(T &to, STObject const &from)
uint256 getFieldH256(SField const &field) const
const SF_U160 sfTakerGetsIssuer(access, STI_HASH160, 4, "TakerGetsIssuer")
void populateTickSize(T &to, STObject const &from)
void populateQualityOut(T &to, STObject const &from)
const SF_Blob sfDomain(access, STI_VL, 7, "Domain")