This commit is contained in:
bthomee
2025-06-02 16:17:46 +00:00
parent 473f896133
commit cf1b2bc8e4
128 changed files with 18175 additions and 15540 deletions

View File

@@ -1079,87 +1079,210 @@ $(function() {
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span> }</div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> }</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> </div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>;</div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span>}</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> </div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span><a class="code hl_class" href="classripple_1_1TERSubset.html">TER</a></div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"><a class="line" href="namespaceripple_1_1nft.html#a494adc2da71fa028357e04fe4912a2ce"> 1011</a></span><a class="code hl_function" href="namespaceripple_1_1nft.html#a494adc2da71fa028357e04fe4912a2ce">tokenOfferCreateApply</a>(</div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span> <a class="code hl_class" href="classripple_1_1ApplyView.html">ApplyView</a>&amp; view,</div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; acctID,</div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> <a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a> <span class="keyword">const</span>&amp; amount,</div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;AccountID&gt;</a> <span class="keyword">const</span>&amp; dest,</div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;std::uint32_t&gt;</a> <span class="keyword">const</span>&amp; expiration,</div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> <a class="code hl_class" href="classripple_1_1SeqProxy.html">SeqProxy</a> seqProxy,</div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; nftokenID,</div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> <a class="code hl_class" href="classripple_1_1XRPAmount.html">XRPAmount</a> <span class="keyword">const</span>&amp; priorBalance,</div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span> <a class="code hl_class" href="classbeast_1_1Journal.html">beast::Journal</a> j,</div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> txFlags)</div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span>{</div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span> <a class="code hl_struct" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span> acctKeylet = <a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(acctID);</div>
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> <span class="keyword">const</span> acct = view.<a class="code hl_function" href="classripple_1_1ReadView.html#a0583a050ea7799ba331f6222a905f304">read</a>(acctKeylet);</div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span> priorBalance &lt; view.<a class="code hl_function" href="classripple_1_1ReadView.html#a9944284a00f671a4a9d9e00f9b28b258">fees</a>().<a class="code hl_function" href="structripple_1_1Fees.html#acb07843d0d0e3ccacd7cf51d5296fe40">accountReserve</a>((*acct)[sfOwnerCount] + 1))</div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38cae930fb228ae74317976b57b4e87a7f0d">tecINSUFFICIENT_RESERVE</a>;</div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span> </div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span> <span class="keyword">auto</span> <span class="keyword">const</span> offerID = <a class="code hl_function" href="namespaceripple_1_1keylet.html#adddc4768b4e412ab96f6fff32b8c3903">keylet::nftoffer</a>(acctID, seqProxy.<a class="code hl_function" href="classripple_1_1SeqProxy.html#a41c206bf5f44fe0b3f99f2dd42b0259c">value</a>());</div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span> </div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span> <span class="comment">// Create the offer:</span></div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span> {</div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span> <span class="comment">// Token offers are always added to the owner&#39;s owner directory:</span></div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span> <span class="keyword">auto</span> <span class="keyword">const</span> ownerNode = view.<a class="code hl_function" href="classripple_1_1ApplyView.html#ae21b78e549dc6188382bd49e7d77d473">dirInsert</a>(</div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#acd4d51d467fc6e75745baf179a7965ef">keylet::ownerDir</a>(acctID), offerID, <a class="code hl_function" href="namespaceripple.html#a5b498122d9b8c1acbeb9fe459faac22b">describeOwnerDir</a>(acctID));</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> </div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span> <span class="keywordflow">if</span> (!ownerNode)</div>
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca4f19fdbc12c26412215f3477f70d5feb">tecDIR_FULL</a>;</div>
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span> </div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> isSellOffer = txFlags &amp; <a class="code hl_variable" href="namespaceripple.html#a449cf5cfc4fd3f6c2a3577a57374bda5">tfSellNFToken</a>;</div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span> </div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span> <span class="comment">// Token offers are also added to the token&#39;s buy or sell offer</span></div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span> <span class="comment">// directory</span></div>
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span> <span class="keyword">auto</span> <span class="keyword">const</span> offerNode = view.<a class="code hl_function" href="classripple_1_1ApplyView.html#ae21b78e549dc6188382bd49e7d77d473">dirInsert</a>(</div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span> isSellOffer ? <a class="code hl_function" href="namespaceripple_1_1keylet.html#acde54a71987c73328dd2569d07ef3f7d">keylet::nft_sells</a>(nftokenID)</div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span> : <a class="code hl_function" href="namespaceripple_1_1keylet.html#acd8269a59407a4ef316da86a66db314c">keylet::nft_buys</a>(nftokenID),</div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span> offerID,</div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> [&amp;nftokenID, isSellOffer](<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE&gt;</a> <span class="keyword">const</span>&amp; sle) {</div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span> (*sle)[sfFlags] =</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span> isSellOffer ? <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a6ef34056b7b7b1d985b5f4609c4fa904">lsfNFTokenSellOffers</a> : <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a51e9a2085c035de4de06c8b462382556">lsfNFTokenBuyOffers</a>;</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span> (*sle)[sfNFTokenID] = nftokenID;</div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span> });</div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> <span class="keywordflow">if</span> (view.<a class="code hl_function" href="classripple_1_1ReadView.html#aceb3d74acaae18b238022337e5f250ce">rules</a>().<a class="code hl_function" href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">enabled</a>(fixEnforceNFTokenTrustlineV2) &amp;&amp; !amount.<a class="code hl_function" href="classripple_1_1STAmount.html#af3a02d7e9cd0b11509a90e0e6980bd64">native</a>())</div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span> {</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> <span class="comment">// If this is a sell offer, check that the account is allowed to</span></div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span> <span class="comment">// receive IOUs. If this is a buy offer, we have to check that trustline</span></div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> <span class="comment">// is authorized, even though we previosly checked it&#39;s balance via</span></div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span> <span class="comment">// accountHolds. This is due to a possibility of existence of</span></div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span> <span class="comment">// unauthorized trustlines with balance</span></div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> <span class="keyword">auto</span> <span class="keyword">const</span> res = <a class="code hl_function" href="namespaceripple_1_1nft.html#ad643ebde066a4f36c062ee8b31df4cb4">nft::checkTrustlineAuthorized</a>(</div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span> view, acctID, j, amount.<a class="code hl_function" href="classripple_1_1STAmount.html#a47d741e2043946647600882e7d8fe111">asset</a>().<a class="code hl_function" href="classripple_1_1Asset.html#ad01a6377ea4c6c8d14804d0954a49e6f">get</a>&lt;<a class="code hl_class" href="classripple_1_1Issue.html">Issue</a>&gt;());</div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span> <span class="keywordflow">if</span> (res != <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span> <span class="keywordflow">return</span> res;</div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span> }</div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>;</div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span>}</div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span> </div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span><a class="code hl_class" href="classripple_1_1TERSubset.html">TER</a></div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"><a class="line" href="namespaceripple_1_1nft.html#a494adc2da71fa028357e04fe4912a2ce"> 1023</a></span><a class="code hl_function" href="namespaceripple_1_1nft.html#a494adc2da71fa028357e04fe4912a2ce">tokenOfferCreateApply</a>(</div>
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"> 1024</span> <a class="code hl_class" href="classripple_1_1ApplyView.html">ApplyView</a>&amp; view,</div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; acctID,</div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span> <a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a> <span class="keyword">const</span>&amp; amount,</div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;AccountID&gt;</a> <span class="keyword">const</span>&amp; dest,</div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;std::uint32_t&gt;</a> <span class="keyword">const</span>&amp; expiration,</div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span> <a class="code hl_class" href="classripple_1_1SeqProxy.html">SeqProxy</a> seqProxy,</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; nftokenID,</div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span> <a class="code hl_class" href="classripple_1_1XRPAmount.html">XRPAmount</a> <span class="keyword">const</span>&amp; priorBalance,</div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span> <a class="code hl_class" href="classbeast_1_1Journal.html">beast::Journal</a> j,</div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> txFlags)</div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span>{</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> <a class="code hl_struct" href="structripple_1_1Keylet.html">Keylet</a> <span class="keyword">const</span> acctKeylet = <a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(acctID);</div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> <span class="keyword">const</span> acct = view.<a class="code hl_function" href="classripple_1_1ReadView.html#a0583a050ea7799ba331f6222a905f304">read</a>(acctKeylet);</div>
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span> priorBalance &lt; view.<a class="code hl_function" href="classripple_1_1ReadView.html#a9944284a00f671a4a9d9e00f9b28b258">fees</a>().<a class="code hl_function" href="structripple_1_1Fees.html#acb07843d0d0e3ccacd7cf51d5296fe40">accountReserve</a>((*acct)[sfOwnerCount] + 1))</div>
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38cae930fb228ae74317976b57b4e87a7f0d">tecINSUFFICIENT_RESERVE</a>;</div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span> </div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span> <span class="keyword">auto</span> <span class="keyword">const</span> offerID = <a class="code hl_function" href="namespaceripple_1_1keylet.html#adddc4768b4e412ab96f6fff32b8c3903">keylet::nftoffer</a>(acctID, seqProxy.<a class="code hl_function" href="classripple_1_1SeqProxy.html#a41c206bf5f44fe0b3f99f2dd42b0259c">value</a>());</div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span> </div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span> <span class="comment">// Create the offer:</span></div>
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span> {</div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span> <span class="comment">// Token offers are always added to the owner&#39;s owner directory:</span></div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span> <span class="keyword">auto</span> <span class="keyword">const</span> ownerNode = view.<a class="code hl_function" href="classripple_1_1ApplyView.html#ae21b78e549dc6188382bd49e7d77d473">dirInsert</a>(</div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#acd4d51d467fc6e75745baf179a7965ef">keylet::ownerDir</a>(acctID), offerID, <a class="code hl_function" href="namespaceripple.html#a5b498122d9b8c1acbeb9fe459faac22b">describeOwnerDir</a>(acctID));</div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> </div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span> <span class="keywordflow">if</span> (!ownerNode)</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca4f19fdbc12c26412215f3477f70d5feb">tecDIR_FULL</a>;</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span> </div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> isSellOffer = txFlags &amp; <a class="code hl_variable" href="namespaceripple.html#a449cf5cfc4fd3f6c2a3577a57374bda5">tfSellNFToken</a>;</div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span> </div>
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span> <span class="keywordflow">if</span> (!offerNode)</div>
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca4f19fdbc12c26412215f3477f70d5feb">tecDIR_FULL</a>;</div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span> </div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> sleFlags = 0;</div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span> </div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span> <span class="keywordflow">if</span> (isSellOffer)</div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span> sleFlags |= <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5af09cb8ad3ecf501d7149dad344aada65">lsfSellNFToken</a>;</div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span> </div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> <span class="keyword">auto</span> offer = std::make_shared&lt;SLE&gt;(offerID);</div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span> (*offer)[sfOwner] = acctID;</div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span> (*offer)[sfNFTokenID] = nftokenID;</div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span> (*offer)[sfAmount] = amount;</div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span> (*offer)[sfFlags] = sleFlags;</div>
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span> (*offer)[sfOwnerNode] = *ownerNode;</div>
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span> (*offer)[sfNFTokenOfferNode] = *offerNode;</div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span> </div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span> <span class="keywordflow">if</span> (expiration)</div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span> (*offer)[sfExpiration] = *expiration;</div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span> </div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span> <span class="keywordflow">if</span> (dest)</div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span> (*offer)[sfDestination] = *dest;</div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span> </div>
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"> 1075</span> view.<a class="code hl_function" href="classripple_1_1ApplyView.html#aa3c5b5cd9dca5f906be4b36640706e3c">insert</a>(offer);</div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span> }</div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span> </div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span> <span class="comment">// Update owner count.</span></div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span> <a class="code hl_function" href="namespaceripple.html#a868a93d3fbb97e3ba20ba054df1db3ca">adjustOwnerCount</a>(view, view.<a class="code hl_function" href="classripple_1_1ApplyView.html#afa666aaa8eb0080d96f910f8a719291d">peek</a>(acctKeylet), 1, j);</div>
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span> <span class="comment">// Token offers are also added to the token&#39;s buy or sell offer</span></div>
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span> <span class="comment">// directory</span></div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span> <span class="keyword">auto</span> <span class="keyword">const</span> offerNode = view.<a class="code hl_function" href="classripple_1_1ApplyView.html#ae21b78e549dc6188382bd49e7d77d473">dirInsert</a>(</div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span> isSellOffer ? <a class="code hl_function" href="namespaceripple_1_1keylet.html#acde54a71987c73328dd2569d07ef3f7d">keylet::nft_sells</a>(nftokenID)</div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span> : <a class="code hl_function" href="namespaceripple_1_1keylet.html#acd8269a59407a4ef316da86a66db314c">keylet::nft_buys</a>(nftokenID),</div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span> offerID,</div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span> [&amp;nftokenID, isSellOffer](<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE&gt;</a> <span class="keyword">const</span>&amp; sle) {</div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span> (*sle)[sfFlags] =</div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> isSellOffer ? <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a6ef34056b7b7b1d985b5f4609c4fa904">lsfNFTokenSellOffers</a> : <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a51e9a2085c035de4de06c8b462382556">lsfNFTokenBuyOffers</a>;</div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span> (*sle)[sfNFTokenID] = nftokenID;</div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span> });</div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span> </div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span> <span class="keywordflow">if</span> (!offerNode)</div>
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca4f19fdbc12c26412215f3477f70d5feb">tecDIR_FULL</a>;</div>
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span> </div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> sleFlags = 0;</div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span> </div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span> <span class="keywordflow">if</span> (isSellOffer)</div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span> sleFlags |= <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5af09cb8ad3ecf501d7149dad344aada65">lsfSellNFToken</a>;</div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span> </div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span> <span class="keyword">auto</span> offer = std::make_shared&lt;SLE&gt;(offerID);</div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span> (*offer)[sfOwner] = acctID;</div>
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"> 1075</span> (*offer)[sfNFTokenID] = nftokenID;</div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span> (*offer)[sfAmount] = amount;</div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span> (*offer)[sfFlags] = sleFlags;</div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span> (*offer)[sfOwnerNode] = *ownerNode;</div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span> (*offer)[sfNFTokenOfferNode] = *offerNode;</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span> </div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>;</div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span>}</div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span> <span class="keywordflow">if</span> (expiration)</div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span> (*offer)[sfExpiration] = *expiration;</div>
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span> </div>
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span>} <span class="comment">// namespace nft</span></div>
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span>} <span class="comment">// namespace ripple</span></div>
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span> <span class="keywordflow">if</span> (dest)</div>
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span> (*offer)[sfDestination] = *dest;</div>
<div class="line"><a id="l01086" name="l01086"></a><span class="lineno"> 1086</span> </div>
<div class="line"><a id="l01087" name="l01087"></a><span class="lineno"> 1087</span> view.<a class="code hl_function" href="classripple_1_1ApplyView.html#aa3c5b5cd9dca5f906be4b36640706e3c">insert</a>(offer);</div>
<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"> 1088</span> }</div>
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span> </div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span> <span class="comment">// Update owner count.</span></div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span> <a class="code hl_function" href="namespaceripple.html#a868a93d3fbb97e3ba20ba054df1db3ca">adjustOwnerCount</a>(view, view.<a class="code hl_function" href="classripple_1_1ApplyView.html#afa666aaa8eb0080d96f910f8a719291d">peek</a>(acctKeylet), 1, j);</div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span> </div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>;</div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span>}</div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span> </div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span><a class="code hl_class" href="classripple_1_1TERSubset.html">TER</a></div>
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"><a class="line" href="namespaceripple_1_1nft.html#ad643ebde066a4f36c062ee8b31df4cb4"> 1097</a></span><a class="code hl_function" href="namespaceripple_1_1nft.html#ad643ebde066a4f36c062ee8b31df4cb4">checkTrustlineAuthorized</a>(</div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span> <a class="code hl_class" href="classripple_1_1ReadView.html">ReadView</a> <span class="keyword">const</span>&amp; view,</div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span> <span class="keywordtype">id</span>,</div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span> <a class="code hl_class" href="classbeast_1_1Journal.html">beast::Journal</a> <span class="keyword">const</span> j,</div>
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span> <a class="code hl_class" href="classripple_1_1Issue.html">Issue</a> <span class="keyword">const</span>&amp; issue)</div>
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span>{</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span> <span class="comment">// Only valid for custom currencies</span></div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span> XRPL_ASSERT(</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span> !<a class="code hl_function" href="namespaceripple.html#a20d30277b9c78756b3d14493055a307c">isXRP</a>(issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a4b723aa4198e4c630e41de06586e2fe7">currency</a>),</div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span> <span class="stringliteral">&quot;ripple::nft::checkTrustlineAuthorized : valid to check.&quot;</span>);</div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span> </div>
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span> <span class="keywordflow">if</span> (view.<a class="code hl_function" href="classripple_1_1ReadView.html#aceb3d74acaae18b238022337e5f250ce">rules</a>().<a class="code hl_function" href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">enabled</a>(fixEnforceNFTokenTrustlineV2))</div>
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span> {</div>
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span> <span class="keyword">auto</span> <span class="keyword">const</span> issuerAccount = view.<a class="code hl_function" href="classripple_1_1ReadView.html#a0583a050ea7799ba331f6222a905f304">read</a>(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>));</div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span> <span class="keywordflow">if</span> (!issuerAccount)</div>
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span> {</div>
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span> JLOG(j.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;ripple::nft::checkTrustlineAuthorized: can&#39;t &quot;</span></div>
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"> 1114</span> <span class="stringliteral">&quot;receive IOUs from non-existent issuer: &quot;</span></div>
<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"> 1115</span> &lt;&lt; <a class="code hl_function" href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">to_string</a>(issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>);</div>
<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"> 1116</span> </div>
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"> 1117</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca33d363e51ee15c8bd4f5d7c4e4518def">tecNO_ISSUER</a>;</div>
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"> 1118</span> }</div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span> </div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span> <span class="comment">// An account can not create a trustline to itself, so no line can</span></div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span> <span class="comment">// exist to be authorized. Additionally, an issuer can always accept</span></div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span> <span class="comment">// its own issuance.</span></div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span> <span class="keywordflow">if</span> (issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a> == <span class="keywordtype">id</span>)</div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span> {</div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>;</div>
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"> 1126</span> }</div>
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span> </div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span> <span class="keywordflow">if</span> (issuerAccount-&gt;isFlag(<a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a44c3bc643086a0beb87e3aaeb544e6ad">lsfRequireAuth</a>))</div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span> {</div>
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span> <span class="keyword">auto</span> <span class="keyword">const</span> trustLine =</div>
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span> view.<a class="code hl_function" href="classripple_1_1ReadView.html#a0583a050ea7799ba331f6222a905f304">read</a>(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a55890af7192834c632299746ba300be8">keylet::line</a>(<span class="keywordtype">id</span>, issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>, issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a4b723aa4198e4c630e41de06586e2fe7">currency</a>));</div>
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span> </div>
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span> <span class="keywordflow">if</span> (!trustLine)</div>
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span> {</div>
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38cac480d742e7760c48047bb3ccc50a40ef">tecNO_LINE</a>;</div>
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span> }</div>
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span> </div>
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span> <span class="comment">// Entries have a canonical representation, determined by a</span></div>
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span> <span class="comment">// lexicographical &quot;greater than&quot; comparison employing strict</span></div>
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"> 1140</span> <span class="comment">// weak ordering. Determine which entry we need to access.</span></div>
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"> 1141</span> <span class="keywordflow">if</span> (!trustLine-&gt;isFlag(</div>
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"> 1142</span> <span class="keywordtype">id</span> &gt; issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a> ? <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5af37617abe9ad741cd823746961f1fb3a">lsfLowAuth</a> : <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5ae6db21adf463a223e362b44f0fd54663">lsfHighAuth</a>))</div>
<div class="line"><a id="l01143" name="l01143"></a><span class="lineno"> 1143</span> {</div>
<div class="line"><a id="l01144" name="l01144"></a><span class="lineno"> 1144</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caf5820ac855eaa9dfcd635cd411019a31">tecNO_AUTH</a>;</div>
<div class="line"><a id="l01145" name="l01145"></a><span class="lineno"> 1145</span> }</div>
<div class="line"><a id="l01146" name="l01146"></a><span class="lineno"> 1146</span> }</div>
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"> 1147</span> }</div>
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span> </div>
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>;</div>
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span>}</div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span> </div>
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span><a class="code hl_class" href="classripple_1_1TERSubset.html">TER</a></div>
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"><a class="line" href="namespaceripple_1_1nft.html#a6ea5cfec88b2915d85d3a4432eda57f8"> 1153</a></span><a class="code hl_function" href="namespaceripple_1_1nft.html#a6ea5cfec88b2915d85d3a4432eda57f8">checkTrustlineDeepFrozen</a>(</div>
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span> <a class="code hl_class" href="classripple_1_1ReadView.html">ReadView</a> <span class="keyword">const</span>&amp; view,</div>
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span> <span class="keywordtype">id</span>,</div>
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"> 1156</span> <a class="code hl_class" href="classbeast_1_1Journal.html">beast::Journal</a> <span class="keyword">const</span> j,</div>
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span> <a class="code hl_class" href="classripple_1_1Issue.html">Issue</a> <span class="keyword">const</span>&amp; issue)</div>
<div class="line"><a id="l01158" name="l01158"></a><span class="lineno"> 1158</span>{</div>
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"> 1159</span> <span class="comment">// Only valid for custom currencies</span></div>
<div class="line"><a id="l01160" name="l01160"></a><span class="lineno"> 1160</span> XRPL_ASSERT(</div>
<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"> 1161</span> !<a class="code hl_function" href="namespaceripple.html#a20d30277b9c78756b3d14493055a307c">isXRP</a>(issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a4b723aa4198e4c630e41de06586e2fe7">currency</a>),</div>
<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span> <span class="stringliteral">&quot;ripple::nft::checkTrustlineDeepFrozen : valid to check.&quot;</span>);</div>
<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span> </div>
<div class="line"><a id="l01164" name="l01164"></a><span class="lineno"> 1164</span> <span class="keywordflow">if</span> (view.<a class="code hl_function" href="classripple_1_1ReadView.html#aceb3d74acaae18b238022337e5f250ce">rules</a>().<a class="code hl_function" href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">enabled</a>(featureDeepFreeze))</div>
<div class="line"><a id="l01165" name="l01165"></a><span class="lineno"> 1165</span> {</div>
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"> 1166</span> <span class="keyword">auto</span> <span class="keyword">const</span> issuerAccount = view.<a class="code hl_function" href="classripple_1_1ReadView.html#a0583a050ea7799ba331f6222a905f304">read</a>(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>));</div>
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"> 1167</span> <span class="keywordflow">if</span> (!issuerAccount)</div>
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span> {</div>
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"> 1169</span> JLOG(j.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;ripple::nft::checkTrustlineDeepFrozen: can&#39;t &quot;</span></div>
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span> <span class="stringliteral">&quot;receive IOUs from non-existent issuer: &quot;</span></div>
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span> &lt;&lt; <a class="code hl_function" href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">to_string</a>(issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>);</div>
<div class="line"><a id="l01172" name="l01172"></a><span class="lineno"> 1172</span> </div>
<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"> 1173</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca33d363e51ee15c8bd4f5d7c4e4518def">tecNO_ISSUER</a>;</div>
<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"> 1174</span> }</div>
<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span> </div>
<div class="line"><a id="l01176" name="l01176"></a><span class="lineno"> 1176</span> <span class="comment">// An account can not create a trustline to itself, so no line can</span></div>
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span> <span class="comment">// exist to be frozen. Additionally, an issuer can always accept its</span></div>
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span> <span class="comment">// own issuance.</span></div>
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span> <span class="keywordflow">if</span> (issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a> == <span class="keywordtype">id</span>)</div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span> {</div>
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>;</div>
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span> }</div>
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span> </div>
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span> <span class="keyword">auto</span> <span class="keyword">const</span> trustLine =</div>
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span> view.<a class="code hl_function" href="classripple_1_1ReadView.html#a0583a050ea7799ba331f6222a905f304">read</a>(<a class="code hl_function" href="namespaceripple_1_1keylet.html#a55890af7192834c632299746ba300be8">keylet::line</a>(<span class="keywordtype">id</span>, issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>, issue.<a class="code hl_variable" href="classripple_1_1Issue.html#a4b723aa4198e4c630e41de06586e2fe7">currency</a>));</div>
<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"> 1186</span> </div>
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span> <span class="keywordflow">if</span> (!trustLine)</div>
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span> {</div>
<div class="line"><a id="l01189" name="l01189"></a><span class="lineno"> 1189</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>;</div>
<div class="line"><a id="l01190" name="l01190"></a><span class="lineno"> 1190</span> }</div>
<div class="line"><a id="l01191" name="l01191"></a><span class="lineno"> 1191</span> </div>
<div class="line"><a id="l01192" name="l01192"></a><span class="lineno"> 1192</span> <span class="comment">// There&#39;s no difference which side enacted deep freeze, accepting</span></div>
<div class="line"><a id="l01193" name="l01193"></a><span class="lineno"> 1193</span> <span class="comment">// tokens shouldn&#39;t be possible.</span></div>
<div class="line"><a id="l01194" name="l01194"></a><span class="lineno"> 1194</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> deepFrozen =</div>
<div class="line"><a id="l01195" name="l01195"></a><span class="lineno"> 1195</span> (*trustLine)[sfFlags] &amp; (<a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5ae4ade68db17e8ced60ea7cff04c7fc6d">lsfLowDeepFreeze</a> | <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a0588f38e1840a06d715cb905801e0349">lsfHighDeepFreeze</a>);</div>
<div class="line"><a id="l01196" name="l01196"></a><span class="lineno"> 1196</span> </div>
<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"> 1197</span> <span class="keywordflow">if</span> (deepFrozen)</div>
<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span> {</div>
<div class="line"><a id="l01199" name="l01199"></a><span class="lineno"> 1199</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca608da193a4a22ae1c78d76b6e843b7e6">tecFROZEN</a>;</div>
<div class="line"><a id="l01200" name="l01200"></a><span class="lineno"> 1200</span> }</div>
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"> 1201</span> }</div>
<div class="line"><a id="l01202" name="l01202"></a><span class="lineno"> 1202</span> </div>
<div class="line"><a id="l01203" name="l01203"></a><span class="lineno"> 1203</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>;</div>
<div class="line"><a id="l01204" name="l01204"></a><span class="lineno"> 1204</span>}</div>
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"> 1205</span> </div>
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span>} <span class="comment">// namespace nft</span></div>
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span>} <span class="comment">// namespace ripple</span></div>
<div class="ttc" id="aback_inserter_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/iterator/back_inserter.html">std::back_inserter</a></div><div class="ttdeci">T back_inserter(T... args)</div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html"><div class="ttname"><a href="classbeast_1_1Journal.html">beast::Journal</a></div><div class="ttdoc">A generic endpoint for log messages.</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00059">Journal.h:60</a></div></div>
<div class="ttc" id="aclassbeast_1_1Journal_html_a556228cb60bcf405c225d3f64b7b01ae"><div class="ttname"><a href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">beast::Journal::debug</a></div><div class="ttdeci">Stream debug() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00328">Journal.h:328</a></div></div>
<div class="ttc" id="aclassripple_1_1ApplyView_html"><div class="ttname"><a href="classripple_1_1ApplyView.html">ripple::ApplyView</a></div><div class="ttdoc">Writeable view to a ledger, for applying a transaction.</div><div class="ttdef"><b>Definition:</b> <a href="ApplyView_8h_source.html#l00143">ApplyView.h:144</a></div></div>
<div class="ttc" id="aclassripple_1_1ApplyView_html_a542437b9b59a623e755979acdc075af5"><div class="ttname"><a href="classripple_1_1ApplyView.html#a542437b9b59a623e755979acdc075af5">ripple::ApplyView::update</a></div><div class="ttdeci">virtual void update(std::shared_ptr&lt; SLE &gt; const &amp;sle)=0</div><div class="ttdoc">Indicate changes to a peeked SLE.</div></div>
<div class="ttc" id="aclassripple_1_1ApplyView_html_a5a06441ef4fdb9b7f6e51437ce4a959f"><div class="ttname"><a href="classripple_1_1ApplyView.html#a5a06441ef4fdb9b7f6e51437ce4a959f">ripple::ApplyView::dirRemove</a></div><div class="ttdeci">bool dirRemove(Keylet const &amp;directory, std::uint64_t page, uint256 const &amp;key, bool keepRoot)</div><div class="ttdoc">Remove an entry from a directory.</div><div class="ttdef"><b>Definition:</b> <a href="ApplyView_8cpp_source.html#l00190">ApplyView.cpp:190</a></div></div>
@@ -1167,10 +1290,14 @@ $(function() {
<div class="ttc" id="aclassripple_1_1ApplyView_html_ae21b78e549dc6188382bd49e7d77d473"><div class="ttname"><a href="classripple_1_1ApplyView.html#ae21b78e549dc6188382bd49e7d77d473">ripple::ApplyView::dirInsert</a></div><div class="ttdeci">std::optional&lt; std::uint64_t &gt; dirInsert(Keylet const &amp;directory, uint256 const &amp;key, std::function&lt; void(std::shared_ptr&lt; SLE &gt; const &amp;)&gt; const &amp;describe)</div><div class="ttdoc">Insert an entry to a directory.</div><div class="ttdef"><b>Definition:</b> <a href="ApplyView_8h_source.html#l00318">ApplyView.h:318</a></div></div>
<div class="ttc" id="aclassripple_1_1ApplyView_html_afa666aaa8eb0080d96f910f8a719291d"><div class="ttname"><a href="classripple_1_1ApplyView.html#afa666aaa8eb0080d96f910f8a719291d">ripple::ApplyView::peek</a></div><div class="ttdeci">virtual std::shared_ptr&lt; SLE &gt; peek(Keylet const &amp;k)=0</div><div class="ttdoc">Prepare to modify the SLE associated with key.</div></div>
<div class="ttc" id="aclassripple_1_1ApplyView_html_afda9c12acbda605becf20f54d45587d4"><div class="ttname"><a href="classripple_1_1ApplyView.html#afda9c12acbda605becf20f54d45587d4">ripple::ApplyView::erase</a></div><div class="ttdeci">virtual void erase(std::shared_ptr&lt; SLE &gt; const &amp;sle)=0</div><div class="ttdoc">Remove a peeked SLE.</div></div>
<div class="ttc" id="aclassripple_1_1Asset_html_ad01a6377ea4c6c8d14804d0954a49e6f"><div class="ttname"><a href="classripple_1_1Asset.html#ad01a6377ea4c6c8d14804d0954a49e6f">ripple::Asset::get</a></div><div class="ttdeci">constexpr TIss const &amp; get() const</div></div>
<div class="ttc" id="aclassripple_1_1Dir_1_1const__iterator_html_a0efad86ded9e329989050ac009f20798"><div class="ttname"><a href="classripple_1_1Dir_1_1const__iterator.html#a0efad86ded9e329989050ac009f20798">ripple::Dir::const_iterator::next_page</a></div><div class="ttdeci">const_iterator &amp; next_page()</div><div class="ttdef"><b>Definition:</b> <a href="Dir_8cpp_source.html#l00108">Dir.cpp:108</a></div></div>
<div class="ttc" id="aclassripple_1_1Dir_html"><div class="ttname"><a href="classripple_1_1Dir.html">ripple::Dir</a></div><div class="ttdoc">A class that simplifies iterating ledger directory pages.</div><div class="ttdef"><b>Definition:</b> <a href="Dir_8h_source.html#l00041">Dir.h:42</a></div></div>
<div class="ttc" id="aclassripple_1_1Dir_html_a69f16bc7296fba8206ab4dcfc28ecbe8"><div class="ttname"><a href="classripple_1_1Dir.html#a69f16bc7296fba8206ab4dcfc28ecbe8">ripple::Dir::end</a></div><div class="ttdeci">const_iterator end() const</div><div class="ttdef"><b>Definition:</b> <a href="Dir_8cpp_source.html#l00052">Dir.cpp:52</a></div></div>
<div class="ttc" id="aclassripple_1_1Dir_html_ae95c4bb3f21aaaea0fa1e804357d7338"><div class="ttname"><a href="classripple_1_1Dir.html#ae95c4bb3f21aaaea0fa1e804357d7338">ripple::Dir::begin</a></div><div class="ttdeci">const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="Dir_8cpp_source.html#l00034">Dir.cpp:34</a></div></div>
<div class="ttc" id="aclassripple_1_1Issue_html"><div class="ttname"><a href="classripple_1_1Issue.html">ripple::Issue</a></div><div class="ttdoc">A currency issued by an account.</div><div class="ttdef"><b>Definition:</b> <a href="Issue_8h_source.html#l00035">Issue.h:36</a></div></div>
<div class="ttc" id="aclassripple_1_1Issue_html_a46e4805870b1bad6a8691bed0b8acec8"><div class="ttname"><a href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">ripple::Issue::account</a></div><div class="ttdeci">AccountID account</div><div class="ttdef"><b>Definition:</b> <a href="Issue_8h_source.html#l00039">Issue.h:39</a></div></div>
<div class="ttc" id="aclassripple_1_1Issue_html_a4b723aa4198e4c630e41de06586e2fe7"><div class="ttname"><a href="classripple_1_1Issue.html#a4b723aa4198e4c630e41de06586e2fe7">ripple::Issue::currency</a></div><div class="ttdeci">Currency currency</div><div class="ttdef"><b>Definition:</b> <a href="Issue_8h_source.html#l00038">Issue.h:38</a></div></div>
<div class="ttc" id="aclassripple_1_1ReadView_html"><div class="ttname"><a href="classripple_1_1ReadView.html">ripple::ReadView</a></div><div class="ttdoc">A view into a ledger.</div><div class="ttdef"><b>Definition:</b> <a href="ReadView_8h_source.html#l00051">ReadView.h:52</a></div></div>
<div class="ttc" id="aclassripple_1_1ReadView_html_a0583a050ea7799ba331f6222a905f304"><div class="ttname"><a href="classripple_1_1ReadView.html#a0583a050ea7799ba331f6222a905f304">ripple::ReadView::read</a></div><div class="ttdeci">virtual std::shared_ptr&lt; SLE const &gt; read(Keylet const &amp;k) const =0</div><div class="ttdoc">Return the state item associated with a key.</div></div>
<div class="ttc" id="aclassripple_1_1ReadView_html_a15b3629cee45ef3f5af4cef06f42e54a"><div class="ttname"><a href="classripple_1_1ReadView.html#a15b3629cee45ef3f5af4cef06f42e54a">ripple::ReadView::succ</a></div><div class="ttdeci">virtual std::optional&lt; key_type &gt; succ(key_type const &amp;key, std::optional&lt; key_type &gt; const &amp;last=std::nullopt) const =0</div><div class="ttdoc">Return the key of the next state item.</div></div>
@@ -1180,6 +1307,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Rules_html"><div class="ttname"><a href="classripple_1_1Rules.html">ripple::Rules</a></div><div class="ttdoc">Rules controlling protocol behavior.</div><div class="ttdef"><b>Definition:</b> <a href="Rules_8h_source.html#l00037">Rules.h:38</a></div></div>
<div class="ttc" id="aclassripple_1_1Rules_html_a1a8388a2b9588aa9446ece92a88e0dd2"><div class="ttname"><a href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">ripple::Rules::enabled</a></div><div class="ttdeci">bool enabled(uint256 const &amp;feature) const</div><div class="ttdoc">Returns true if a feature is enabled.</div><div class="ttdef"><b>Definition:</b> <a href="Rules_8cpp_source.html#l00130">Rules.cpp:130</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html"><div class="ttname"><a href="classripple_1_1STAmount.html">ripple::STAmount</a></div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00049">STAmount.h:50</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html_a47d741e2043946647600882e7d8fe111"><div class="ttname"><a href="classripple_1_1STAmount.html#a47d741e2043946647600882e7d8fe111">ripple::STAmount::asset</a></div><div class="ttdeci">Asset const &amp; asset() const</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00483">STAmount.h:483</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html_a5c7b5375e72e2459d4b6d65797744ca6"><div class="ttname"><a href="classripple_1_1STAmount.html#a5c7b5375e72e2459d4b6d65797744ca6">ripple::STAmount::getCurrency</a></div><div class="ttdeci">Currency const &amp; getCurrency() const</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00502">STAmount.h:502</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html_aa068506da537548a864f80cf4128f7e9"><div class="ttname"><a href="classripple_1_1STAmount.html#aa068506da537548a864f80cf4128f7e9">ripple::STAmount::signum</a></div><div class="ttdeci">int signum() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00514">STAmount.h:514</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html_aa830654962840253139aa891659f7551"><div class="ttname"><a href="classripple_1_1STAmount.html#aa830654962840253139aa891659f7551">ripple::STAmount::negative</a></div><div class="ttdeci">bool negative() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00471">STAmount.h:471</a></div></div>
@@ -1221,8 +1349,9 @@ $(function() {
<div class="ttc" id="anamespaceripple_1_1nft_html_a25ab1d4dcf014936718ceda1727e7188"><div class="ttname"><a href="namespaceripple_1_1nft.html#a25ab1d4dcf014936718ceda1727e7188">ripple::nft::locatePage</a></div><div class="ttdeci">static std::shared_ptr&lt; SLE const &gt; locatePage(ReadView const &amp;view, AccountID const &amp;owner, uint256 const &amp;id)</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l00038">NFTokenUtils.cpp:38</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_a46a746841b4fdbd38b8aea0968b27be6"><div class="ttname"><a href="namespaceripple_1_1nft.html#a46a746841b4fdbd38b8aea0968b27be6">ripple::nft::removeToken</a></div><div class="ttdeci">TER removeToken(ApplyView &amp;view, AccountID const &amp;owner, uint256 const &amp;nftokenID)</div><div class="ttdoc">Remove the token from the owner's token directory.</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l00388">NFTokenUtils.cpp:388</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_a48d9e6b1a3c669529b75c8afa1291676"><div class="ttname"><a href="namespaceripple_1_1nft.html#a48d9e6b1a3c669529b75c8afa1291676">ripple::nft::tokenOfferCreatePreflight</a></div><div class="ttdeci">NotTEC tokenOfferCreatePreflight(AccountID const &amp;acctID, STAmount const &amp;amount, std::optional&lt; AccountID &gt; const &amp;dest, std::optional&lt; std::uint32_t &gt; const &amp;expiration, std::uint16_t nftFlags, Rules const &amp;rules, std::optional&lt; AccountID &gt; const &amp;owner, std::uint32_t txFlags)</div><div class="ttdoc">Preflight checks shared by NFTokenCreateOffer and NFTokenMint.</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l00837">NFTokenUtils.cpp:837</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_a494adc2da71fa028357e04fe4912a2ce"><div class="ttname"><a href="namespaceripple_1_1nft.html#a494adc2da71fa028357e04fe4912a2ce">ripple::nft::tokenOfferCreateApply</a></div><div class="ttdeci">TER tokenOfferCreateApply(ApplyView &amp;view, AccountID const &amp;acctID, STAmount const &amp;amount, std::optional&lt; AccountID &gt; const &amp;dest, std::optional&lt; std::uint32_t &gt; const &amp;expiration, SeqProxy seqProxy, uint256 const &amp;nftokenID, XRPAmount const &amp;priorBalance, beast::Journal j, std::uint32_t txFlags)</div><div class="ttdoc">doApply implementation shared by NFTokenCreateOffer and NFTokenMint</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l01011">NFTokenUtils.cpp:1011</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_a494adc2da71fa028357e04fe4912a2ce"><div class="ttname"><a href="namespaceripple_1_1nft.html#a494adc2da71fa028357e04fe4912a2ce">ripple::nft::tokenOfferCreateApply</a></div><div class="ttdeci">TER tokenOfferCreateApply(ApplyView &amp;view, AccountID const &amp;acctID, STAmount const &amp;amount, std::optional&lt; AccountID &gt; const &amp;dest, std::optional&lt; std::uint32_t &gt; const &amp;expiration, SeqProxy seqProxy, uint256 const &amp;nftokenID, XRPAmount const &amp;priorBalance, beast::Journal j, std::uint32_t txFlags)</div><div class="ttdoc">doApply implementation shared by NFTokenCreateOffer and NFTokenMint</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l01023">NFTokenUtils.cpp:1023</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_a5e5a21651e5185e7b375ed7ac5cea665"><div class="ttname"><a href="namespaceripple_1_1nft.html#a5e5a21651e5185e7b375ed7ac5cea665">ripple::nft::flagOnlyXRP</a></div><div class="ttdeci">constexpr std::uint16_t const flagOnlyXRP</div><div class="ttdef"><b>Definition:</b> <a href="nft_8h_source.html#l00054">nft.h:54</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_a6ea5cfec88b2915d85d3a4432eda57f8"><div class="ttname"><a href="namespaceripple_1_1nft.html#a6ea5cfec88b2915d85d3a4432eda57f8">ripple::nft::checkTrustlineDeepFrozen</a></div><div class="ttdeci">TER checkTrustlineDeepFrozen(ReadView const &amp;view, AccountID const id, beast::Journal const j, Issue const &amp;issue)</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l01153">NFTokenUtils.cpp:1153</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_a72de77616ffccacab0adc696f88de33f"><div class="ttname"><a href="namespaceripple_1_1nft.html#a72de77616ffccacab0adc696f88de33f">ripple::nft::tokenOfferCreatePreclaim</a></div><div class="ttdeci">TER tokenOfferCreatePreclaim(ReadView const &amp;view, AccountID const &amp;acctID, AccountID const &amp;nftIssuer, STAmount const &amp;amount, std::optional&lt; AccountID &gt; const &amp;dest, std::uint16_t nftFlags, std::uint16_t xferFee, beast::Journal j, std::optional&lt; AccountID &gt; const &amp;owner, std::uint32_t txFlags)</div><div class="ttdoc">Preclaim checks shared by NFTokenCreateOffer and NFTokenMint.</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l00897">NFTokenUtils.cpp:897</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_a73889ea9ec580b815b132cf432b0fd6c"><div class="ttname"><a href="namespaceripple_1_1nft.html#a73889ea9ec580b815b132cf432b0fd6c">ripple::nft::repairNFTokenDirectoryLinks</a></div><div class="ttdeci">bool repairNFTokenDirectoryLinks(ApplyView &amp;view, AccountID const &amp;owner)</div><div class="ttdoc">Repairs the links in an NFTokenPage directory.</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l00717">NFTokenUtils.cpp:717</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_a74236427e71356c6f0a3252a07927e1d"><div class="ttname"><a href="namespaceripple_1_1nft.html#a74236427e71356c6f0a3252a07927e1d">ripple::nft::deleteTokenOffer</a></div><div class="ttdeci">bool deleteTokenOffer(ApplyView &amp;view, std::shared_ptr&lt; SLE &gt; const &amp;offer)</div><div class="ttdoc">Deletes the given token offer.</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l00682">NFTokenUtils.cpp:682</a></div></div>
@@ -1235,6 +1364,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_1_1nft_html_aa185e09595bf533e445c46d28410a31d"><div class="ttname"><a href="namespaceripple_1_1nft.html#aa185e09595bf533e445c46d28410a31d">ripple::nft::flagCreateTrustLines</a></div><div class="ttdeci">constexpr std::uint16_t const flagCreateTrustLines</div><div class="ttdef"><b>Definition:</b> <a href="nft_8h_source.html#l00055">nft.h:55</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_aac025d0f24eeb383c0f902aec0629ea6"><div class="ttname"><a href="namespaceripple_1_1nft.html#aac025d0f24eeb383c0f902aec0629ea6">ripple::nft::changeTokenURI</a></div><div class="ttdeci">TER changeTokenURI(ApplyView &amp;view, AccountID const &amp;owner, uint256 const &amp;nftokenID, std::optional&lt; ripple::Slice &gt; const &amp;uri)</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l00246">NFTokenUtils.cpp:246</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_abb4362fd10edf10dd40898b0ba5cdd6e"><div class="ttname"><a href="namespaceripple_1_1nft.html#abb4362fd10edf10dd40898b0ba5cdd6e">ripple::nft::removeTokenOffersWithLimit</a></div><div class="ttdeci">std::size_t removeTokenOffersWithLimit(ApplyView &amp;view, Keylet const &amp;directory, std::size_t maxDeletableOffers)</div><div class="ttdoc">Delete up to a specified number of offers from the specified token offer directory.</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l00605">NFTokenUtils.cpp:605</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_ad643ebde066a4f36c062ee8b31df4cb4"><div class="ttname"><a href="namespaceripple_1_1nft.html#ad643ebde066a4f36c062ee8b31df4cb4">ripple::nft::checkTrustlineAuthorized</a></div><div class="ttdeci">TER checkTrustlineAuthorized(ReadView const &amp;view, AccountID const id, beast::Journal const j, Issue const &amp;issue)</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l01097">NFTokenUtils.cpp:1097</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_adab522de819bb8d3d9d229cf1ae33e4e"><div class="ttname"><a href="namespaceripple_1_1nft.html#adab522de819bb8d3d9d229cf1ae33e4e">ripple::nft::mergePages</a></div><div class="ttdeci">static bool mergePages(ApplyView &amp;view, std::shared_ptr&lt; SLE &gt; const &amp;p1, std::shared_ptr&lt; SLE &gt; const &amp;p2)</div><div class="ttdef"><b>Definition:</b> <a href="NFTokenUtils_8cpp_source.html#l00322">NFTokenUtils.cpp:322</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_ae14d4bb70598677d087143c83535243b"><div class="ttname"><a href="namespaceripple_1_1nft.html#ae14d4bb70598677d087143c83535243b">ripple::nft::pageMask</a></div><div class="ttdeci">uint256 constexpr pageMask(std::string_view(&quot;0000000000000000000000000000000000000000ffffffffffffffffffffffff&quot;))</div></div>
<div class="ttc" id="anamespaceripple_html"><div class="ttname"><a href="namespaceripple.html">ripple</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition:</b> <a href="algorithm_8h_source.html#l00026">algorithm.h:26</a></div></div>
@@ -1242,10 +1372,15 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a17a9a9b903b66e49f5413d82ce79f085a852cabbbe21a9b4d63aff777eceab2fd"><div class="ttname"><a href="namespaceripple.html#a17a9a9b903b66e49f5413d82ce79f085a852cabbbe21a9b4d63aff777eceab2fd">ripple::fhZERO_IF_FROZEN</a></div><div class="ttdeci">@ fhZERO_IF_FROZEN</div><div class="ttdef"><b>Definition:</b> <a href="View_8h_source.html#l00078">View.h:78</a></div></div>
<div class="ttc" id="anamespaceripple_html_a20d30277b9c78756b3d14493055a307c"><div class="ttname"><a href="namespaceripple.html#a20d30277b9c78756b3d14493055a307c">ripple::isXRP</a></div><div class="ttdeci">bool isXRP(AccountID const &amp;c)</div><div class="ttdef"><b>Definition:</b> <a href="AccountID_8h_source.html#l00091">AccountID.h:91</a></div></div>
<div class="ttc" id="anamespaceripple_html_a449cf5cfc4fd3f6c2a3577a57374bda5"><div class="ttname"><a href="namespaceripple.html#a449cf5cfc4fd3f6c2a3577a57374bda5">ripple::tfSellNFToken</a></div><div class="ttdeci">constexpr std::uint32_t const tfSellNFToken</div><div class="ttdef"><b>Definition:</b> <a href="TxFlags_8h_source.html#l00200">TxFlags.h:200</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5a0588f38e1840a06d715cb905801e0349"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a0588f38e1840a06d715cb905801e0349">ripple::lsfHighDeepFreeze</a></div><div class="ttdeci">@ lsfHighDeepFreeze</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00167">LedgerFormats.h:167</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5a44c3bc643086a0beb87e3aaeb544e6ad"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a44c3bc643086a0beb87e3aaeb544e6ad">ripple::lsfRequireAuth</a></div><div class="ttdeci">@ lsfRequireAuth</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00129">LedgerFormats.h:128</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5a51e9a2085c035de4de06c8b462382556"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a51e9a2085c035de4de06c8b462382556">ripple::lsfNFTokenBuyOffers</a></div><div class="ttdeci">@ lsfNFTokenBuyOffers</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00175">LedgerFormats.h:175</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5a6ef34056b7b7b1d985b5f4609c4fa904"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a6ef34056b7b7b1d985b5f4609c4fa904">ripple::lsfNFTokenSellOffers</a></div><div class="ttdeci">@ lsfNFTokenSellOffers</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00176">LedgerFormats.h:176</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5a9f25924b110b0f2debce6e0f71bc5a18"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a9f25924b110b0f2debce6e0f71bc5a18">ripple::lsfDisallowIncomingNFTokenOffer</a></div><div class="ttdeci">@ lsfDisallowIncomingNFTokenOffer</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00141">LedgerFormats.h:140</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5ae4ade68db17e8ced60ea7cff04c7fc6d"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5ae4ade68db17e8ced60ea7cff04c7fc6d">ripple::lsfLowDeepFreeze</a></div><div class="ttdeci">@ lsfLowDeepFreeze</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00166">LedgerFormats.h:166</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5ae6db21adf463a223e362b44f0fd54663"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5ae6db21adf463a223e362b44f0fd54663">ripple::lsfHighAuth</a></div><div class="ttdeci">@ lsfHighAuth</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00161">LedgerFormats.h:161</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5af09cb8ad3ecf501d7149dad344aada65"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5af09cb8ad3ecf501d7149dad344aada65">ripple::lsfSellNFToken</a></div><div class="ttdeci">@ lsfSellNFToken</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00179">LedgerFormats.h:179</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5af37617abe9ad741cd823746961f1fb3a"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5af37617abe9ad741cd823746961f1fb3a">ripple::lsfLowAuth</a></div><div class="ttdeci">@ lsfLowAuth</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00160">LedgerFormats.h:160</a></div></div>
<div class="ttc" id="anamespaceripple_html_a55a6147856ee62015775e16e617c0814"><div class="ttname"><a href="namespaceripple.html#a55a6147856ee62015775e16e617c0814">ripple::maxDeletableTokenOfferEntries</a></div><div class="ttdeci">std::size_t constexpr maxDeletableTokenOfferEntries</div><div class="ttdoc">The maximum number of offers in an offer directory for NFT to be burnable.</div><div class="ttdef"><b>Definition:</b> <a href="Protocol_8h_source.html#l00072">Protocol.h:72</a></div></div>
<div class="ttc" id="anamespaceripple_html_a5b498122d9b8c1acbeb9fe459faac22b"><div class="ttname"><a href="namespaceripple.html#a5b498122d9b8c1acbeb9fe459faac22b">ripple::describeOwnerDir</a></div><div class="ttdeci">std::function&lt; void(SLE::ref)&gt; describeOwnerDir(AccountID const &amp;account)</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l01036">View.cpp:1036</a></div></div>
<div class="ttc" id="anamespaceripple_html_a64ab08f4ab36c0454c62a0f70eeed527"><div class="ttname"><a href="namespaceripple.html#a64ab08f4ab36c0454c62a0f70eeed527">ripple::dirMaxTokensPerPage</a></div><div class="ttdeci">std::size_t constexpr dirMaxTokensPerPage</div><div class="ttdoc">The maximum number of items in an NFT page.</div><div class="ttdef"><b>Definition:</b> <a href="Protocol_8h_source.html#l00063">Protocol.h:63</a></div></div>
@@ -1265,6 +1400,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38ca9af7057961bc54674f4a6c2dd8ed6ab9"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca9af7057961bc54674f4a6c2dd8ed6ab9">ripple::tecNO_PERMISSION</a></div><div class="ttdeci">@ tecNO_PERMISSION</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00305">TER.h:305</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38cac480d742e7760c48047bb3ccc50a40ef"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38cac480d742e7760c48047bb3ccc50a40ef">ripple::tecNO_LINE</a></div><div class="ttdeci">@ tecNO_LINE</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00301">TER.h:301</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38cae930fb228ae74317976b57b4e87a7f0d"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38cae930fb228ae74317976b57b4e87a7f0d">ripple::tecINSUFFICIENT_RESERVE</a></div><div class="ttdeci">@ tecINSUFFICIENT_RESERVE</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00307">TER.h:307</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38caf5820ac855eaa9dfcd635cd411019a31"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caf5820ac855eaa9dfcd635cd411019a31">ripple::tecNO_AUTH</a></div><div class="ttdeci">@ tecNO_AUTH</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00300">TER.h:300</a></div></div>
<div class="ttc" id="anamespaceripple_html_aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151"><div class="ttname"><a href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">ripple::tesSUCCESS</a></div><div class="ttdeci">@ tesSUCCESS</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00245">TER.h:244</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab001e43f50e612727b1ce5985a2770d6"><div class="ttname"><a href="namespaceripple.html#ab001e43f50e612727b1ce5985a2770d6">ripple::accountHolds</a></div><div class="ttdeci">STAmount accountHolds(ReadView const &amp;view, AccountID const &amp;account, Currency const &amp;currency, AccountID const &amp;issuer, FreezeHandling zeroIfFrozen, beast::Journal j)</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l00386">View.cpp:386</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac124fe6744b7fe887dec949b56b16d50"><div class="ttname"><a href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">ripple::to_string</a></div><div class="ttdeci">std::string to_string(base_uint&lt; Bits, Tag &gt; const &amp;a)</div><div class="ttdef"><b>Definition:</b> <a href="base__uint_8h_source.html#l00630">base_uint.h:630</a></div></div>