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_ledger_sequence(); },
503 [&to]() {
return to.mutable_validator_to_disable(); },
513 [&to]() {
return to.mutable_validator_to_re_enable(); },
523 [&to]() {
return to.mutable_last_ledger_sequence(); },
533 [&to]() {
return to.mutable_source_tag(); }, from,
sfSourceTag);
541 [&to]() {
return to.mutable_account_transaction_id(); },
551 [&to]() {
return to.mutable_memo_data(); }, from,
sfMemoData);
559 [&to]() {
return to.mutable_memo_format(); }, from,
sfMemoFormat);
567 [&to]() {
return to.mutable_memo_type(); }, from,
sfMemoType);
575 [&to]() {
return to.mutable_sequence(); }, from,
sfSequence);
583 [&to]() {
return to.mutable_amendment(); }, from,
sfAmendment);
591 [&to]() {
return to.mutable_close_time(); }, from,
sfCloseTime);
599 [&to]() {
return to.mutable_signer_weight(); }, from,
sfSignerWeight);
607 [&to]() {
return to.add_amendments(); }, from,
sfAmendments);
615 [&to]() {
return to.mutable_owner_count(); }, from,
sfOwnerCount);
623 [&to]() {
return to.mutable_previous_transaction_id(); },
633 [&to]() {
return to.mutable_previous_transaction_ledger_sequence(); },
643 [&to]() {
return to.mutable_low_limit(); }, from,
sfLowLimit);
651 [&to]() {
return to.mutable_high_limit(); }, from,
sfHighLimit);
659 [&to]() {
return to.mutable_low_node(); }, from,
sfLowNode);
667 [&to]() {
return to.mutable_high_node(); }, from,
sfHighNode);
675 [&to]() {
return to.mutable_low_quality_in(); }, from,
sfLowQualityIn);
683 [&to]() {
return to.mutable_low_quality_out(); },
693 [&to]() {
return to.mutable_high_quality_in(); },
703 [&to]() {
return to.mutable_high_quality_out(); },
713 [&to]() {
return to.mutable_book_directory(); }, from,
sfBookDirectory);
721 [&to]() {
return to.mutable_book_node(); }, from,
sfBookNode);
729 [&to]() {
return to.mutable_owner_node(); }, from,
sfOwnerNode);
737 [&to]() {
return to.mutable_signer_list_id(); }, from,
sfSignerListID);
759 [&to]() {
return to.mutable_root_index(); }, from,
sfRootIndex);
767 [&to]() {
return to.mutable_index_next(); }, from,
sfIndexNext);
775 [&to]() {
return to.mutable_index_previous(); }, from,
sfIndexPrevious);
783 [&to]() {
return to.mutable_taker_pays_currency(); },
793 [&to]() {
return to.mutable_taker_pays_issuer(); },
803 [&to]() {
return to.mutable_taker_gets_currency(); },
813 [&to]() {
return to.mutable_taker_gets_issuer(); },
823 [&to]() {
return to.mutable_destination_node(); },
833 [&to]() {
return to.mutable_base_fee(); }, from,
sfBaseFee);
841 [&to]() {
return to.mutable_reference_fee_units(); },
851 [&to]() {
return to.mutable_reserve_base(); }, from,
sfReserveBase);
859 [&to]() {
return to.mutable_reserve_increment(); },
869 [&to]() {
return to.add_signer_entries(); },
870 [](
auto& innerObj,
auto& innerProto) {
884 [&to]() {
return to.add_disabled_validators(); },
885 [](
auto& innerObj,
auto& innerProto) {
899 [&to]() {
return to.add_memos(); },
900 [](
auto& innerObj,
auto& innerProto) {
915 [&to]() {
return to.add_signers(); },
916 [](
auto& innerObj,
auto& innerProto) {
931 [&to]() {
return to.add_majorities(); },
932 [](
auto innerObj,
auto innerProto) {
947 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TEC);
952 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TEF);
957 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TEL);
962 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TEM);
967 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TER);
972 org::xrpl::rpc::v1::TransactionResult::RESULT_TYPE_TES);
1175 for (
auto it = pathset.
begin(); it < pathset.
end(); ++it)
1177 STPath const& path = *it;
1179 org::xrpl::rpc::v1::Payment_Path* protoPath = to.add_paths();
1181 for (
auto it2 = path.begin(); it2 != path.end(); ++it2)
1183 org::xrpl::rpc::v1::Payment_PathElement* protoElement =
1184 protoPath->add_elements();
1192 protoElement->mutable_currency()->set_name(
1198 protoElement->mutable_issuer()->set_address(
1205 protoElement->mutable_account()->set_address(
1479 org::xrpl::rpc::v1::AffectedNode& proto,
1485 proto.set_ledger_entry_type(
1486 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_ACCOUNT_ROOT);
1489 proto.set_ledger_entry_type(
1490 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_DIRECTORY_NODE);
1493 proto.set_ledger_entry_type(
1494 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_RIPPLE_STATE);
1497 proto.set_ledger_entry_type(
1498 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_SIGNER_LIST);
1501 proto.set_ledger_entry_type(
1502 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_OFFER);
1505 proto.set_ledger_entry_type(
1506 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_LEDGER_HASHES);
1509 proto.set_ledger_entry_type(
1510 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_AMENDMENTS);
1513 proto.set_ledger_entry_type(
1514 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_FEE_SETTINGS);
1517 proto.set_ledger_entry_type(
1518 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_ESCROW);
1521 proto.set_ledger_entry_type(
1522 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_PAY_CHANNEL);
1525 proto.set_ledger_entry_type(
1526 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_CHECK);
1529 proto.set_ledger_entry_type(
1530 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_DEPOSIT_PREAUTH);
1533 proto.set_ledger_entry_type(
1534 org::xrpl::rpc::v1::LEDGER_ENTRY_TYPE_NEGATIVE_UNL);
1600 convert(*getProto(), data, lgrType);
1628 to.set_transaction_index(from->getIndex());
1630 convert(*to.mutable_transaction_result(), from->getResultTER());
1631 to.mutable_transaction_result()->set_result(
1634 if (from->hasDeliveredAmount())
1635 convert(*to.mutable_delivered_amount(), from->getDeliveredAmount());
1637 STArray& nodes = from->getNodes();
1638 for (
auto it = nodes.
begin(); it != nodes.
end(); ++it)
1641 org::xrpl::rpc::v1::AffectedNode* node = to.add_affected_nodes();
1645 node->set_ledger_index(ledgerIndex.
data(), ledgerIndex.
size());
1656 return node->mutable_modified_node()
1657 ->mutable_final_fields();
1664 return node->mutable_modified_node()
1665 ->mutable_previous_fields();
1673 *node->mutable_modified_node(), obj);
1680 return node->mutable_created_node()->mutable_new_fields();
1690 return node->mutable_deleted_node()->mutable_final_fields();
1700 org::xrpl::rpc::v1::QueueData& to,
1705 to.set_txn_count(from.
size());
1706 to.set_lowest_sequence(from.
begin()->first);
1707 to.set_highest_sequence(from.
rbegin()->first);
1709 boost::optional<bool> anyAuthChanged(
false);
1710 boost::optional<XRPAmount> totalSpend(0);
1712 for (
auto const& [txSeq, txDetails] : from)
1714 org::xrpl::rpc::v1::QueuedTransaction& qt = *to.add_transactions();
1716 qt.mutable_sequence()->set_value(txSeq);
1717 qt.set_fee_level(txDetails.feeLevel.fee());
1718 if (txDetails.lastValid)
1719 qt.mutable_last_ledger_sequence()->set_value(
1720 *txDetails.lastValid);
1722 if (txDetails.consequences)
1724 qt.mutable_fee()->set_drops(
1725 txDetails.consequences->fee.drops());
1726 auto spend = txDetails.consequences->potentialSpend +
1727 txDetails.consequences->fee;
1728 qt.mutable_max_spend_drops()->set_drops(spend.drops());
1730 *totalSpend += spend;
1734 anyAuthChanged.emplace(authChanged);
1735 qt.set_auth_change(authChanged);
1739 if (anyAuthChanged && !*anyAuthChanged)
1740 anyAuthChanged.reset();
1746 to.set_auth_change_queued(*anyAuthChanged);
1748 to.mutable_max_spend_drops_total()->set_drops(
1749 (*totalSpend).drops());
1755 org::xrpl::rpc::v1::Transaction& to,
1786 case TxType::ttPAYMENT:
1787 convert(*to.mutable_payment(), fromObj);
1789 case TxType::ttESCROW_CREATE:
1790 convert(*to.mutable_escrow_create(), fromObj);
1792 case TxType::ttESCROW_FINISH:
1793 convert(*to.mutable_escrow_finish(), fromObj);
1795 case TxType::ttACCOUNT_SET:
1796 convert(*to.mutable_account_set(), fromObj);
1798 case TxType::ttESCROW_CANCEL:
1799 convert(*to.mutable_escrow_cancel(), fromObj);
1801 case TxType::ttREGULAR_KEY_SET:
1802 convert(*to.mutable_set_regular_key(), fromObj);
1804 case TxType::ttOFFER_CREATE:
1805 convert(*to.mutable_offer_create(), fromObj);
1807 case TxType::ttOFFER_CANCEL:
1808 convert(*to.mutable_offer_cancel(), fromObj);
1810 case TxType::ttSIGNER_LIST_SET:
1811 convert(*to.mutable_signer_list_set(), fromObj);
1813 case TxType::ttPAYCHAN_CREATE:
1814 convert(*to.mutable_payment_channel_create(), fromObj);
1816 case TxType::ttPAYCHAN_FUND:
1817 convert(*to.mutable_payment_channel_fund(), fromObj);
1819 case TxType::ttPAYCHAN_CLAIM:
1820 convert(*to.mutable_payment_channel_claim(), fromObj);
1822 case TxType::ttCHECK_CREATE:
1823 convert(*to.mutable_check_create(), fromObj);
1825 case TxType::ttCHECK_CASH:
1826 convert(*to.mutable_check_cash(), fromObj);
1828 case TxType::ttCHECK_CANCEL:
1829 convert(*to.mutable_check_cancel(), fromObj);
1831 case TxType::ttDEPOSIT_PREAUTH:
1832 convert(*to.mutable_deposit_preauth(), fromObj);
1834 case TxType::ttTRUST_SET:
1835 convert(*to.mutable_trust_set(), fromObj);
1837 case TxType::ttACCOUNT_DELETE:
1838 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
void populateDisabledValidators(T &to, STObject const &from)
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)
void populateValidatorToDisable(T &to, STObject const &from)
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 SField sfDisabledValidators(access, STI_ARRAY, 17, "DisabledValidators")
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")
void populateValidatorToReEnable(T &to, STObject const &from)
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 populateFirstLedgerSequence(T &to, STObject const &from)
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_U32 sfFirstLedgerSequence(access, STI_UINT32, 26, "FirstLedgerSequence")
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 SF_Blob sfValidatorToReEnable(access, STI_VL, 21, "ValidatorToReEnable")
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")
const SF_Blob sfValidatorToDisable(access, STI_VL, 20, "ValidatorToDisable")
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 SField sfDisabledValidator(access, STI_OBJECT, 19, "DisabledValidator")
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")