20#include <xrpl/basics/base_uint.h> 
   21#include <xrpl/json/json_value.h> 
   22#include <xrpl/protocol/LedgerFormats.h> 
   23#include <xrpl/protocol/NFTokenID.h> 
   24#include <xrpl/protocol/SField.h> 
   25#include <xrpl/protocol/STArray.h> 
   26#include <xrpl/protocol/STObject.h> 
   27#include <xrpl/protocol/STTx.h> 
   28#include <xrpl/protocol/TER.h> 
   29#include <xrpl/protocol/TxFormats.h> 
   30#include <xrpl/protocol/TxMeta.h> 
   31#include <xrpl/protocol/jss.h> 
   44    TxMeta const& transactionMeta)
 
   49    TxType const tt = serializedTx->getTxnType();
 
   50    if (tt != ttNFTOKEN_MINT && tt != ttNFTOKEN_ACCEPT_OFFER &&
 
   51        tt != ttNFTOKEN_CANCEL_OFFER)
 
 
   72        if (node.getFieldU16(sfLedgerEntryType) != ltNFTOKEN_PAGE)
 
   75        SField const& fName = node.getFName();
 
   76        if (fName == sfCreatedNode)
 
   78            STArray const& toAddPrevNFTs = node.peekAtField(sfNewFields)
 
   80                                               .getFieldArray(sfNFTokens);
 
   82                toAddPrevNFTs.
begin(),
 
   86                    return nft.getFieldH256(sfNFTokenID);
 
   89        else if (fName == sfModifiedNode)
 
  108                toAddPrevNFTs.
begin(),
 
  112                    return nft.getFieldH256(sfNFTokenID);
 
  115            STArray const& toAddFinalNFTs = node.peekAtField(sfFinalFields)
 
  117                                                .getFieldArray(sfNFTokens);
 
  119                toAddFinalNFTs.
begin(),
 
  120                toAddFinalNFTs.
end(),
 
  123                    return nft.getFieldH256(sfNFTokenID);
 
  130    if (finalIDs.
size() != prevIDs.
size() + 1)
 
  140    if (diff.first == finalIDs.
end())
 
 
  152        if (node.getFieldU16(sfLedgerEntryType) != ltNFTOKEN_OFFER ||
 
  153            node.getFName() != sfDeletedNode)
 
  156        auto const& toAddNFT = node.peekAtField(sfFinalFields)
 
  158                                   .getFieldH256(sfNFTokenID);
 
  164    sort(tokenIDResult.
begin(), tokenIDResult.
end());
 
  166        unique(tokenIDResult.
begin(), tokenIDResult.
end()),
 
  167        tokenIDResult.
end());
 
  168    return tokenIDResult;
 
 
  175    TxMeta const& transactionMeta)
 
  181    if (
auto const type = transaction->getTxnType(); type == ttNFTOKEN_MINT)
 
  187    else if (type == ttNFTOKEN_ACCEPT_OFFER)
 
  192        if (result.
size() > 0)
 
  195    else if (type == ttNFTOKEN_CANCEL_OFFER)
 
  201        for (
auto const& nftID : result)
 
  202            response[jss::nftoken_ids].append(
to_string(nftID));
 
 
T back_inserter(T... args)
 
STArray const & getFieldArray(SField const &field) const
 
bool isFieldPresent(SField const &field) const
 
STBase const & peekAtField(SField const &field) const
 
@ arrayValue
array value (ordered list)
 
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
 
std::optional< uint256 > getNFTokenIDFromPage(TxMeta const &transactionMeta)
 
TxType
Transaction type identifiers.
 
bool canHaveNFTokenID(std::shared_ptr< STTx const > const &serializedTx, TxMeta const &transactionMeta)
Add a nftoken_ids field to the meta output parameter.
 
std::vector< uint256 > getNFTokenIDFromDeletedOffer(TxMeta const &transactionMeta)
 
std::string to_string(base_uint< Bits, Tag > const &a)
 
void insertNFTokenID(Json::Value &response, std::shared_ptr< STTx const > const &transaction, TxMeta const &transactionMeta)