This commit is contained in:
bthomee
2025-05-20 18:10:54 +00:00
parent 39d241def5
commit 90cc35d381
3215 changed files with 96027 additions and 70734 deletions

View File

@@ -138,7 +138,7 @@ $(function() {
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="comment">// tells us the taxon value we should pass in in order for the</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// internal representation to match the passed in value.</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="keyword">auto</span> internalTaxon = [<span class="keyword">this</span>, &amp;env](</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> Account <span class="keyword">const</span>&amp; acct,</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span>&amp; acct,</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> taxon) -&gt; <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> {</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> tokenSeq = [<span class="keyword">this</span>, &amp;env, &amp;acct]() {</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="keyword">auto</span> <span class="keyword">const</span> le = env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#af928cd176555b2cf28da85e274c571bc">le</a>(acct);</div>
@@ -168,8 +168,8 @@ $(function() {
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <span class="keyword">const</span> intTaxon = (i / 16) + (i &amp; 0b10000 ? 2 : 0);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> uint32_t <span class="keyword">const</span> extTaxon = internalTaxon(owner, intTaxon);</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> nfts.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> token::getNextID(env, owner, extTaxon, <a class="code hl_variable" href="namespaceripple.html#af6dbd01af49aa6a39b96cee44add0df1">tfTransferable</a>));</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> env(token::mint(owner, extTaxon), txflags(<a class="code hl_variable" href="namespaceripple.html#af6dbd01af49aa6a39b96cee44add0df1">tfTransferable</a>));</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1token.html#a2749ac7d2df5bd6424972b8de5cb0ad8">token::getNextID</a>(env, owner, extTaxon, <a class="code hl_variable" href="namespaceripple.html#af6dbd01af49aa6a39b96cee44add0df1">tfTransferable</a>));</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1token.html#ab5b8b8289e756cf37a6ad2d1adb876b5">token::mint</a>(owner, extTaxon), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1txflags.html">txflags</a>(<a class="code hl_variable" href="namespaceripple.html#af6dbd01af49aa6a39b96cee44add0df1">tfTransferable</a>));</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> env.<a class="code hl_function" href="classripple_1_1test_1_1jtx_1_1Env.html#a69095691c9bcfab1f3d69c645f2dbe33">close</a>();</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> }</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
@@ -212,67 +212,67 @@ $(function() {
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keyword">using namespace </span>test::jtx;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> Account <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> {</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> <span class="comment">// Verify that the LedgerStateFix transaction is disabled</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// without the fixNFTokenPageLinks amendment.</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> Env env{*<span class="keyword">this</span>, supported_amendments() - fixNFTokenPageLinks};</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> env.fund(XRP(1000), alice);</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">supported_amendments</a>() - fixNFTokenPageLinks};</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1000), alice);</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keyword">auto</span> <span class="keyword">const</span> linkFixFee = drops(env.current()-&gt;fees().increment);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> env(ledgerStateFix::nftPageLinks(alice, alice),</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> fee(linkFixFee),</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> ter(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46ac3482079467d517ea82aa9c8fa693d21">temDISABLED</a>));</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> <span class="keyword">auto</span> <span class="keyword">const</span> linkFixFee = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(alice, alice),</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee),</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46ac3482079467d517ea82aa9c8fa693d21">temDISABLED</a>));</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> }</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> Env env{*<span class="keyword">this</span>, supported_amendments()};</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> env.fund(XRP(1000), alice);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">supported_amendments</a>()};</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1000), alice);</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> <span class="keyword">const</span> ticketSeq = env.seq(alice);</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> env(ticket::create(alice, 1));</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ticket.html#a1e24650b39bab99fc665d9f80365cc27">ticket::create</a>(alice, 1));</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> </div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> <span class="comment">// Preflight</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> {</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> <span class="comment">// Fail preflight1. Can&#39;t combine AcccountTxnID and ticket.</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> tx = ledgerStateFix::nftPageLinks(alice, alice);</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> tx = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(alice, alice);</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> tx[sfAccountTxnID.jsonName] =</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> <span class="stringliteral">&quot;00000000000000000000000000000000&quot;</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="stringliteral">&quot;00000000000000000000000000000000&quot;</span>;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> env(tx, ticket::use(ticketSeq), ter(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a76453a8d513e20754ca7cff63d7546b8">temINVALID</a>));</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> env(tx, <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ticket::use</a>(ticketSeq), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a76453a8d513e20754ca7cff63d7546b8">temINVALID</a>));</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> }</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> <span class="comment">// Fee too low.</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> env(ledgerStateFix::nftPageLinks(alice, alice), ter(<a class="code hl_enumvalue" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba">telINSUF_FEE_P</a>));</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(alice, alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba">telINSUF_FEE_P</a>));</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="comment">// Invalid flags.</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">auto</span> <span class="keyword">const</span> linkFixFee = drops(env.current()-&gt;fees().increment);</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> env(ledgerStateFix::nftPageLinks(alice, alice),</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> fee(linkFixFee),</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> txflags(<a class="code hl_variable" href="namespaceripple.html#a61d9fbb44b335fbb5e82e3211e6639a2">tfPassive</a>),</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> ter(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46aa4754e0f122658747650b3b1c0a846a8">temINVALID_FLAG</a>));</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> <span class="keyword">auto</span> <span class="keyword">const</span> linkFixFee = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment);</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(alice, alice),</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee),</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1txflags.html">txflags</a>(<a class="code hl_variable" href="namespaceripple.html#a61d9fbb44b335fbb5e82e3211e6639a2">tfPassive</a>),</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46aa4754e0f122658747650b3b1c0a846a8">temINVALID_FLAG</a>));</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> {</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> <span class="comment">// ledgerStateFix::nftPageLinks requires an Owner field.</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> tx = ledgerStateFix::nftPageLinks(alice, alice);</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> tx = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(alice, alice);</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> tx.<a class="code hl_function" href="classJson_1_1Value.html#a9c9ee172f3387d37d5382d991c591219">removeMember</a>(sfOwner.jsonName);</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> env(tx, fee(linkFixFee), ter(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a76453a8d513e20754ca7cff63d7546b8">temINVALID</a>));</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> env(tx, <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a76453a8d513e20754ca7cff63d7546b8">temINVALID</a>));</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> }</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> {</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> <span class="comment">// Invalid LedgerFixType codes.</span></div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> tx = ledgerStateFix::nftPageLinks(alice, alice);</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> <a class="code hl_class" href="classJson_1_1Value.html">Json::Value</a> tx = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(alice, alice);</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> tx[sfLedgerFixType.jsonName] = 0;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> env(tx, fee(linkFixFee), ter(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4a7fd8320b8bba5352c9be80ede4efba5b">tefINVALID_LEDGER_FIX_TYPE</a>));</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> env(tx, <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4a7fd8320b8bba5352c9be80ede4efba5b">tefINVALID_LEDGER_FIX_TYPE</a>));</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> </div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> tx[sfLedgerFixType.jsonName] = 200;</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> env(tx, fee(linkFixFee), ter(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4a7fd8320b8bba5352c9be80ede4efba5b">tefINVALID_LEDGER_FIX_TYPE</a>));</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> env(tx, <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4a7fd8320b8bba5352c9be80ede4efba5b">tefINVALID_LEDGER_FIX_TYPE</a>));</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> }</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="comment">// Preclaim</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> Account <span class="keyword">const</span> carol(<span class="stringliteral">&quot;carol&quot;</span>);</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> carol(<span class="stringliteral">&quot;carol&quot;</span>);</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> env.memoize(carol);</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> env(ledgerStateFix::nftPageLinks(alice, carol),</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> fee(linkFixFee),</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> ter(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca2f3fdd22dc22973eca4c97cb3f9e65fc">tecOBJECT_NOT_FOUND</a>));</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(alice, carol),</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee),</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca2f3fdd22dc22973eca4c97cb3f9e65fc">tecOBJECT_NOT_FOUND</a>));</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> }</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="keywordtype">void</span></div>
@@ -282,39 +282,39 @@ $(function() {
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="keyword">using namespace </span>test::jtx;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> Account <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> Env env{*<span class="keyword">this</span>, supported_amendments()};</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> env.fund(XRP(1000), alice);</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">supported_amendments</a>()};</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1000), alice);</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> <span class="comment">// These cases all return the same TER code, but they exercise</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// different cases where there is nothing to fix in an owner&#39;s</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> <span class="comment">// NFToken pages. So they increase test coverage.</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> </div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="comment">// Owner has no pages to fix.</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keyword">auto</span> <span class="keyword">const</span> linkFixFee = drops(env.current()-&gt;fees().increment);</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> env(ledgerStateFix::nftPageLinks(alice, alice),</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> fee(linkFixFee),</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> ter(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caecd11145ac07375d1c0793e699932969">tecFAILED_PROCESSING</a>));</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> <span class="keyword">auto</span> <span class="keyword">const</span> linkFixFee = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment);</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(alice, alice),</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee),</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caecd11145ac07375d1c0793e699932969">tecFAILED_PROCESSING</a>));</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> </div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="comment">// Alice has only one page.</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> env(token::mint(alice), txflags(<a class="code hl_variable" href="namespaceripple.html#af6dbd01af49aa6a39b96cee44add0df1">tfTransferable</a>));</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1token.html#ab5b8b8289e756cf37a6ad2d1adb876b5">token::mint</a>(alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1txflags.html">txflags</a>(<a class="code hl_variable" href="namespaceripple.html#af6dbd01af49aa6a39b96cee44add0df1">tfTransferable</a>));</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> env.close();</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> </div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> env(ledgerStateFix::nftPageLinks(alice, alice),</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> fee(linkFixFee),</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> ter(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caecd11145ac07375d1c0793e699932969">tecFAILED_PROCESSING</a>));</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(alice, alice),</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee),</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caecd11145ac07375d1c0793e699932969">tecFAILED_PROCESSING</a>));</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> </div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="comment">// Alice has at least three pages.</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="keywordflow">for</span> (<a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> i = 0; i &lt; 64; ++i)</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> {</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> env(token::mint(alice), txflags(<a class="code hl_variable" href="namespaceripple.html#af6dbd01af49aa6a39b96cee44add0df1">tfTransferable</a>));</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1token.html#ab5b8b8289e756cf37a6ad2d1adb876b5">token::mint</a>(alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1txflags.html">txflags</a>(<a class="code hl_variable" href="namespaceripple.html#af6dbd01af49aa6a39b96cee44add0df1">tfTransferable</a>));</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> env.close();</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> }</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> </div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> env(ledgerStateFix::nftPageLinks(alice, alice),</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> fee(linkFixFee),</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> ter(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caecd11145ac07375d1c0793e699932969">tecFAILED_PROCESSING</a>));</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(alice, alice),</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee),</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caecd11145ac07375d1c0793e699932969">tecFAILED_PROCESSING</a>));</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> }</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> </div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordtype">void</span></div>
@@ -332,13 +332,13 @@ $(function() {
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> </div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keyword">using namespace </span>test::jtx;</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> </div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> Account <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> Account <span class="keyword">const</span> bob(<span class="stringliteral">&quot;bob&quot;</span>);</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> Account <span class="keyword">const</span> carol(<span class="stringliteral">&quot;carol&quot;</span>);</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> Account <span class="keyword">const</span> daria(<span class="stringliteral">&quot;daria&quot;</span>);</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> alice(<span class="stringliteral">&quot;alice&quot;</span>);</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> bob(<span class="stringliteral">&quot;bob&quot;</span>);</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> carol(<span class="stringliteral">&quot;carol&quot;</span>);</div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Account.html">Account</a> <span class="keyword">const</span> daria(<span class="stringliteral">&quot;daria&quot;</span>);</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> </div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> Env env{*<span class="keyword">this</span>, supported_amendments() - fixNFTokenPageLinks};</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> env.fund(XRP(1000), alice, bob, carol, daria);</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1Env.html">Env</a> env{*<span class="keyword">this</span>, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">supported_amendments</a>() - fixNFTokenPageLinks};</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> env.fund(<a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(1000), alice, bob, carol, daria);</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> </div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="comment">//**********************************************************************</span></div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span> <span class="comment">// Step 1A: Create damaged NFToken directories:</span></div>
@@ -348,7 +348,7 @@ $(function() {
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span> <span class="comment">// alice generates three packed pages.</span></div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> aliceNFTs = <a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a2fc1eb336baff65917e9a9299dbbdcb0">genPackedTokens</a>(env, alice);</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> BEAST_EXPECT(<a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a3b0ee9c395198f12ffc3113378498121">nftCount</a>(env, alice) == 96);</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> BEAST_EXPECT(ownerCount(env, alice) == 3);</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, alice) == 3);</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> </div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> <span class="comment">// Get the index of the middle page.</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span> aliceMiddleNFTokenPageIndex = [&amp;env, &amp;alice]() {</div>
@@ -359,17 +359,17 @@ $(function() {
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span> <span class="comment">// alice burns all the tokens in the first and last pages.</span></div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 32; ++i)</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> {</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> env(token::burn(alice, {aliceNFTs[i]}));</div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"> 284</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1token.html#ac8f58dedb4946a2d5681304c8bf03929">token::burn</a>(alice, {aliceNFTs[i]}));</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> env.close();</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> }</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> aliceNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/erase.html">erase</a>(aliceNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>(), aliceNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/begin.html">begin</a>() + 32);</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 32; ++i)</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> {</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> env(token::burn(alice, {aliceNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>()}));</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1token.html#ac8f58dedb4946a2d5681304c8bf03929">token::burn</a>(alice, {aliceNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>()}));</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> aliceNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/pop_back.html">pop_back</a>();</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"> 292</span> env.close();</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> }</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> BEAST_EXPECT(ownerCount(env, alice) == 1);</div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, alice) == 1);</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> BEAST_EXPECT(<a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a3b0ee9c395198f12ffc3113378498121">nftCount</a>(env, alice) == 32);</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> </div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> <span class="comment">// Removing the last token from the last page deletes the last</span></div>
@@ -398,7 +398,7 @@ $(function() {
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> <span class="comment">// bob generates three packed pages.</span></div>
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"> 321</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> bobNFTs = <a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a2fc1eb336baff65917e9a9299dbbdcb0">genPackedTokens</a>(env, bob);</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> BEAST_EXPECT(<a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a3b0ee9c395198f12ffc3113378498121">nftCount</a>(env, bob) == 96);</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> BEAST_EXPECT(ownerCount(env, bob) == 3);</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, bob) == 3);</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"> 324</span> </div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> <span class="comment">// Get the index of the middle page.</span></div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span> bobMiddleNFTokenPageIndex = [&amp;env, &amp;bob]() {</div>
@@ -409,12 +409,12 @@ $(function() {
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> <span class="comment">// bob burns all the tokens in the very last page.</span></div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"> 332</span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 32; ++i)</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> {</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> env(token::burn(bob, {bobNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>()}));</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1token.html#ac8f58dedb4946a2d5681304c8bf03929">token::burn</a>(bob, {bobNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>()}));</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno"> 335</span> bobNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/pop_back.html">pop_back</a>();</div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"> 336</span> env.close();</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> }</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"> 338</span> BEAST_EXPECT(<a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a3b0ee9c395198f12ffc3113378498121">nftCount</a>(env, bob) == 64);</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> BEAST_EXPECT(ownerCount(env, bob) == 2);</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, bob) == 2);</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> </div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="comment">// Removing the last token from the last page deletes the last</span></div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <span class="comment">// page. This is a bug. The contents of the next-to-last page</span></div>
@@ -442,7 +442,7 @@ $(function() {
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <span class="comment">// carol generates three packed pages.</span></div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> carolNFTs = <a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a2fc1eb336baff65917e9a9299dbbdcb0">genPackedTokens</a>(env, carol);</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> BEAST_EXPECT(<a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a3b0ee9c395198f12ffc3113378498121">nftCount</a>(env, carol) == 96);</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> BEAST_EXPECT(ownerCount(env, carol) == 3);</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, carol) == 3);</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> </div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> <span class="comment">// Get the index of the middle page.</span></div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span> carolMiddleNFTokenPageIndex = [&amp;env, &amp;carol]() {</div>
@@ -457,18 +457,18 @@ $(function() {
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> {</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span> offerIndex =</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#adddc4768b4e412ab96f6fff32b8c3903">keylet::nftoffer</a>(carol, env.seq(carol)).<a class="code hl_variable" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>;</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> env(token::createOffer(carol, carolNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>(), XRP(0)),</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> txflags(<a class="code hl_variable" href="namespaceripple.html#a449cf5cfc4fd3f6c2a3577a57374bda5">tfSellNFToken</a>));</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1token.html#a40dfafd85108b010176f95d9af3b9c33">token::createOffer</a>(carol, carolNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>(), <a class="code hl_variable" href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">XRP</a>(0)),</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1txflags.html">txflags</a>(<a class="code hl_variable" href="namespaceripple.html#a449cf5cfc4fd3f6c2a3577a57374bda5">tfSellNFToken</a>));</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> env.close();</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> </div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> env(token::acceptSellOffer(daria, offerIndex));</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1token.html#a91831cf96998d1ec5c992805bc2c4cde">token::acceptSellOffer</a>(daria, offerIndex));</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> env.close();</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> </div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> dariaNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(carolNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/back.html">back</a>());</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> carolNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/pop_back.html">pop_back</a>();</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> }</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> BEAST_EXPECT(<a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a3b0ee9c395198f12ffc3113378498121">nftCount</a>(env, carol) == 64);</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> BEAST_EXPECT(ownerCount(env, carol) == 2);</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, carol) == 2);</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> </div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> <span class="comment">// Removing the last token from the last page deletes the last</span></div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="comment">// page. This is a bug. The contents of the next-to-last page</span></div>
@@ -493,10 +493,10 @@ $(function() {
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> {</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> <a class="code hl_class" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span> offerIndex =</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#adddc4768b4e412ab96f6fff32b8c3903">keylet::nftoffer</a>(carol, env.seq(carol)).<a class="code hl_variable" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>;</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> env(token::createOffer(carol, nft, drops(1)), token::owner(daria));</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1token.html#a40dfafd85108b010176f95d9af3b9c33">token::createOffer</a>(carol, nft, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(1)), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1token_1_1owner.html">token::owner</a>(daria));</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> env.close();</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> </div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> env(token::acceptBuyOffer(daria, offerIndex));</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1token.html#aa4658d13738040f1fae989bbf053e488">token::acceptBuyOffer</a>(daria, offerIndex));</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> env.close();</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> </div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> carolNFTs.<a class="code hl_functionRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(nft);</div>
@@ -505,7 +505,7 @@ $(function() {
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <span class="comment">// Note that carol actually owns 96 NFTs, but only 64 are reported</span></div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> <span class="comment">// because the links are damaged.</span></div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> BEAST_EXPECT(<a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a3b0ee9c395198f12ffc3113378498121">nftCount</a>(env, carol) == 64);</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> BEAST_EXPECT(ownerCount(env, carol) == 3);</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, carol) == 3);</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> </div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> <span class="comment">// carol&#39;s &quot;middle&quot; page is present and still has no NextPageMin field.</span></div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> {</div>
@@ -532,10 +532,10 @@ $(function() {
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <span class="comment">// Step 2: Enable the fixNFTokenPageLinks amendment.</span></div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <span class="comment">//**********************************************************************</span></div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <span class="comment">// Verify that the LedgerStateFix transaction is not enabled.</span></div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="keyword">auto</span> <span class="keyword">const</span> linkFixFee = drops(env.current()-&gt;fees().increment);</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> env(ledgerStateFix::nftPageLinks(daria, alice),</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> fee(linkFixFee),</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> ter(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46ac3482079467d517ea82aa9c8fa693d21">temDISABLED</a>));</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="keyword">auto</span> <span class="keyword">const</span> linkFixFee = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">drops</a>(env.current()-&gt;fees().increment);</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(daria, alice),</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee),</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>(<a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46ac3482079467d517ea82aa9c8fa693d21">temDISABLED</a>));</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> </div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="comment">// Wait 15 ledgers so the LedgerStateFix transaction is no longer</span></div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> <span class="comment">// retried.</span></div>
@@ -573,7 +573,7 @@ $(function() {
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> env(<a class="code hl_enumvalue" href="namespaceripple.html#ac34a69f56216ea1e430c09ba049bf0aea5483bf26dec486ec0175e2a3ca816a0a">noop</a>(daria));</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> </div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> <span class="comment">// daria fixes the links in alice&#39;s NFToken directory.</span></div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> env(ledgerStateFix::nftPageLinks(daria, alice), fee(linkFixFee));</div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(daria, alice), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee));</div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> env.close();</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> </div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> <span class="comment">// alices&#39;s last page should now be present and include no links.</span></div>
@@ -592,7 +592,7 @@ $(function() {
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#abf6a2f8678a82fc0ea6bf41e3972a9eb">keylet::nftpage_min</a>(alice), aliceMiddleNFTokenPageIndex)));</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span> </div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> BEAST_EXPECT(<a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a3b0ee9c395198f12ffc3113378498121">nftCount</a>(env, alice) == 32);</div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> BEAST_EXPECT(ownerCount(env, alice) == 1);</div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, alice) == 1);</div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> </div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> <span class="comment">//**********************************************************************</span></div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> <span class="comment">// Step 3B: Repair the two-page directory (bob&#39;s)</span></div>
@@ -616,7 +616,7 @@ $(function() {
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> }</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> </div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> <span class="comment">// daria fixes the links in bob&#39;s NFToken directory.</span></div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> env(ledgerStateFix::nftPageLinks(daria, bob), fee(linkFixFee));</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(daria, bob), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee));</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> env.close();</div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> </div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> <span class="comment">// bob&#39;s last page should now be present and include a previous</span></div>
@@ -652,7 +652,7 @@ $(function() {
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#abf6a2f8678a82fc0ea6bf41e3972a9eb">keylet::nftpage_min</a>(bob), bobMiddleNFTokenPageIndex)));</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> </div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> BEAST_EXPECT(<a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a3b0ee9c395198f12ffc3113378498121">nftCount</a>(env, bob) == 64);</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> BEAST_EXPECT(ownerCount(env, bob) == 2);</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, bob) == 2);</div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span> </div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> <span class="comment">//**********************************************************************</span></div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> <span class="comment">// Step 3C: Repair the three-page directory (carol&#39;s)</span></div>
@@ -682,7 +682,7 @@ $(function() {
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> }</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> </div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> <span class="comment">// carol fixes the links in their own NFToken directory.</span></div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> env(ledgerStateFix::nftPageLinks(carol, carol), fee(linkFixFee));</div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> env(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ledgerStateFix::nftPageLinks</a>(carol, carol), <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1fee.html">fee</a>(linkFixFee));</div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> env.close();</div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> </div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> {</div>
@@ -728,7 +728,7 @@ $(function() {
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> </div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> <span class="comment">// With the link repair, the server knows that carol has 96 NFTs.</span></div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> BEAST_EXPECT(<a class="code hl_function" href="classripple_1_1FixNFTokenPageLinks__test.html#a3b0ee9c395198f12ffc3113378498121">nftCount</a>(env, carol) == 96);</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> BEAST_EXPECT(ownerCount(env, carol) == 3);</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> BEAST_EXPECT(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ownerCount</a>(env, carol) == 3);</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> }</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> </div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span><span class="keyword">public</span>:</div>
@@ -746,10 +746,10 @@ $(function() {
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span>} <span class="comment">// namespace ripple</span></div>
<div class="ttc" id="aback_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/back.html">std::vector::back</a></div><div class="ttdeci">T back(T... args)</div></div>
<div class="ttc" id="abegin_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/begin.html">std::vector::begin</a></div><div class="ttdeci">T begin(T... args)</div></div>
<div class="ttc" id="aclassJson_1_1Value_html"><div class="ttname"><a href="classJson_1_1Value.html">Json::Value</a></div><div class="ttdoc">Represents a JSON value.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8h_source.html#l00147">json_value.h:148</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a1627eb9d6568d6d0252fa8bb711c0a59"><div class="ttname"><a href="classJson_1_1Value.html#a1627eb9d6568d6d0252fa8bb711c0a59">Json::Value::isArray</a></div><div class="ttdeci">bool isArray() const</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l01034">json_value.cpp:1034</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a23c7027ca674f989f90564d63ef36c74"><div class="ttname"><a href="classJson_1_1Value.html#a23c7027ca674f989f90564d63ef36c74">Json::Value::size</a></div><div class="ttdeci">UInt size() const</div><div class="ttdoc">Number of values in array or object.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00712">json_value.cpp:712</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a9c9ee172f3387d37d5382d991c591219"><div class="ttname"><a href="classJson_1_1Value.html#a9c9ee172f3387d37d5382d991c591219">Json::Value::removeMember</a></div><div class="ttdeci">Value removeMember(char const *key)</div><div class="ttdoc">Remove and return the named member.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00922">json_value.cpp:922</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html"><div class="ttname"><a href="classJson_1_1Value.html">Json::Value</a></div><div class="ttdoc">Represents a JSON value.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8h_source.html#l00149">json_value.h:150</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a1627eb9d6568d6d0252fa8bb711c0a59"><div class="ttname"><a href="classJson_1_1Value.html#a1627eb9d6568d6d0252fa8bb711c0a59">Json::Value::isArray</a></div><div class="ttdeci">bool isArray() const</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l01047">json_value.cpp:1047</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a23c7027ca674f989f90564d63ef36c74"><div class="ttname"><a href="classJson_1_1Value.html#a23c7027ca674f989f90564d63ef36c74">Json::Value::size</a></div><div class="ttdeci">UInt size() const</div><div class="ttdoc">Number of values in array or object.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00719">json_value.cpp:719</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a9c9ee172f3387d37d5382d991c591219"><div class="ttname"><a href="classJson_1_1Value.html#a9c9ee172f3387d37d5382d991c591219">Json::Value::removeMember</a></div><div class="ttdeci">Value removeMember(char const *key)</div><div class="ttdoc">Remove and return the named member.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00935">json_value.cpp:935</a></div></div>
<div class="ttc" id="aclassbeast_1_1unit__test_1_1suite_html"><div class="ttname"><a href="classbeast_1_1unit__test_1_1suite.html">beast::unit_test::suite</a></div><div class="ttdoc">A testsuite class.</div><div class="ttdef"><b>Definition:</b> <a href="suite_8h_source.html#l00054">suite.h:55</a></div></div>
<div class="ttc" id="aclassbeast_1_1unit__test_1_1suite_html_aaa1237d9b85c69d35fe86645cee094b5"><div class="ttname"><a href="classbeast_1_1unit__test_1_1suite.html#aaa1237d9b85c69d35fe86645cee094b5">beast::unit_test::suite::testcase</a></div><div class="ttdeci">testcase_t testcase</div><div class="ttdoc">Memberspace for declaring test cases.</div><div class="ttdef"><b>Definition:</b> <a href="suite_8h_source.html#l00155">suite.h:155</a></div></div>
<div class="ttc" id="aclassripple_1_1FixNFTokenPageLinks__test_html"><div class="ttname"><a href="classripple_1_1FixNFTokenPageLinks__test.html">ripple::FixNFTokenPageLinks_test</a></div><div class="ttdef"><b>Definition:</b> <a href="FixNFTokenPageLinks__test_8cpp_source.html#l00030">FixNFTokenPageLinks_test.cpp:31</a></div></div>
@@ -762,29 +762,46 @@ $(function() {
<div class="ttc" id="aclassripple_1_1base__uint_html"><div class="ttname"><a href="classripple_1_1base__uint.html">ripple::base_uint&lt; 256 &gt;</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Account_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Account.html">ripple::test::jtx::Account</a></div><div class="ttdoc">Immutable cryptographic account descriptor.</div><div class="ttdef"><b>Definition:</b> <a href="Account_8h_source.html#l00038">Account.h:39</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Account_html_af418ef1752815f3b0d0c80e7e9891004"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Account.html#af418ef1752815f3b0d0c80e7e9891004">ripple::test::jtx::Account::human</a></div><div class="ttdeci">std::string const &amp; human() const</div><div class="ttdoc">Returns the human readable public key.</div><div class="ttdef"><b>Definition:</b> <a href="Account_8h_source.html#l00114">Account.h:114</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html">ripple::test::jtx::Env</a></div><div class="ttdoc">A transaction testing environment.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8h_source.html#l00119">Env.h:120</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html">ripple::test::jtx::Env</a></div><div class="ttdoc">A transaction testing environment.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8h_source.html#l00120">Env.h:121</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_a2ef09f6f41b7d8a2dc89175e3b108f87"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#a2ef09f6f41b7d8a2dc89175e3b108f87">ripple::test::jtx::Env::seq</a></div><div class="ttdeci">std::uint32_t seq(Account const &amp;account) const</div><div class="ttdoc">Returns the next sequence number on account.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8cpp_source.html#l00212">Env.cpp:212</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_a65bedb2e0babbd55343f721de9008a37"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#a65bedb2e0babbd55343f721de9008a37">ripple::test::jtx::Env::current</a></div><div class="ttdeci">std::shared_ptr&lt; OpenView const &gt; current() const</div><div class="ttdoc">Returns the current ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8h_source.html#l00330">Env.h:330</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_a65bedb2e0babbd55343f721de9008a37"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#a65bedb2e0babbd55343f721de9008a37">ripple::test::jtx::Env::current</a></div><div class="ttdeci">std::shared_ptr&lt; OpenView const &gt; current() const</div><div class="ttdoc">Returns the current ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8h_source.html#l00331">Env.h:331</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_a69095691c9bcfab1f3d69c645f2dbe33"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#a69095691c9bcfab1f3d69c645f2dbe33">ripple::test::jtx::Env::close</a></div><div class="ttdeci">bool close(NetClock::time_point closeTime, std::optional&lt; std::chrono::milliseconds &gt; consensusDelay=std::nullopt)</div><div class="ttdoc">Close and advance the ledger.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8cpp_source.html#l00117">Env.cpp:117</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_ad69855b4b26fc3c83922c5783487592c"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#ad69855b4b26fc3c83922c5783487592c">ripple::test::jtx::Env::rpc</a></div><div class="ttdeci">Json::Value rpc(unsigned apiVersion, std::unordered_map&lt; std::string, std::string &gt; const &amp;headers, std::string const &amp;cmd, Args &amp;&amp;... args)</div><div class="ttdoc">Execute an RPC command.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8h_source.html#l00769">Env.h:769</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_ad69855b4b26fc3c83922c5783487592c"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#ad69855b4b26fc3c83922c5783487592c">ripple::test::jtx::Env::rpc</a></div><div class="ttdeci">Json::Value rpc(unsigned apiVersion, std::unordered_map&lt; std::string, std::string &gt; const &amp;headers, std::string const &amp;cmd, Args &amp;&amp;... args)</div><div class="ttdoc">Execute an RPC command.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8h_source.html#l00770">Env.h:770</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1Env_html_af928cd176555b2cf28da85e274c571bc"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1Env.html#af928cd176555b2cf28da85e274c571bc">ripple::test::jtx::Env::le</a></div><div class="ttdeci">std::shared_ptr&lt; SLE const &gt; le(Account const &amp;account) const</div><div class="ttdoc">Return an account root.</div><div class="ttdef"><b>Definition:</b> <a href="Env_8cpp_source.html#l00221">Env.cpp:221</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1fee_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1fee.html">ripple::test::jtx::fee</a></div><div class="ttdoc">Set the fee on a JTx.</div><div class="ttdef"><b>Definition:</b> <a href="fee_8h_source.html#l00036">fee.h:37</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1ter_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1ter.html">ripple::test::jtx::ter</a></div><div class="ttdoc">Set the expected result code for a JTx The test will fail if the code doesn't match.</div><div class="ttdef"><b>Definition:</b> <a href="ter_8h_source.html#l00034">ter.h:35</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1ticket_1_1use_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1ticket_1_1use.html">ripple::test::jtx::ticket::use</a></div><div class="ttdoc">Set a ticket sequence on a JTx.</div><div class="ttdef"><b>Definition:</b> <a href="ticket_8h_source.html#l00047">ticket.h:48</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1token_1_1owner_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1token_1_1owner.html">ripple::test::jtx::token::owner</a></div><div class="ttdoc">Sets the optional Owner on an NFTokenOffer.</div><div class="ttdef"><b>Definition:</b> <a href="token_8h_source.html#l00132">token.h:133</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1txflags_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1txflags.html">ripple::test::jtx::txflags</a></div><div class="ttdoc">Set the flags on a JTx.</div><div class="ttdef"><b>Definition:</b> <a href="txflags_8h_source.html#l00030">txflags.h:31</a></div></div>
<div class="ttc" id="aend_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/end.html">std::vector::end</a></div><div class="ttdeci">T end(T... args)</div></div>
<div class="ttc" id="aerase_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector/erase.html">std::vector::erase</a></div><div class="ttdeci">T erase(T... args)</div></div>
<div class="ttc" id="ainteger_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a></div></div>
<div class="ttc" id="anamespaceJson_html_ab1488c31a37eea2d37f36a0961372572"><div class="ttname"><a href="namespaceJson.html#ab1488c31a37eea2d37f36a0961372572">Json::UInt</a></div><div class="ttdeci">unsigned int UInt</div><div class="ttdef"><b>Definition:</b> <a href="json__forwards_8h_source.html#l00027">json_forwards.h:27</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_a7c16b0abc727e34b4d83377b7f3da2dd"><div class="ttname"><a href="namespaceripple_1_1keylet.html#a7c16b0abc727e34b4d83377b7f3da2dd">ripple::keylet::nftpage</a></div><div class="ttdeci">Keylet nftpage(Keylet const &amp;k, uint256 const &amp;token)</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00411">Indexes.cpp:411</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_abf6a2f8678a82fc0ea6bf41e3972a9eb"><div class="ttname"><a href="namespaceripple_1_1keylet.html#abf6a2f8678a82fc0ea6bf41e3972a9eb">ripple::keylet::nftpage_min</a></div><div class="ttdeci">Keylet nftpage_min(AccountID const &amp;owner)</div><div class="ttdoc">NFT page keylets.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00395">Indexes.cpp:395</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_acbbf19b6eb7d5e93f6448832d9e0288c"><div class="ttname"><a href="namespaceripple_1_1keylet.html#acbbf19b6eb7d5e93f6448832d9e0288c">ripple::keylet::nftpage_max</a></div><div class="ttdeci">Keylet nftpage_max(AccountID const &amp;owner)</div><div class="ttdoc">A keylet for the owner's last possible NFT page.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00403">Indexes.cpp:403</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_adddc4768b4e412ab96f6fff32b8c3903"><div class="ttname"><a href="namespaceripple_1_1keylet.html#adddc4768b4e412ab96f6fff32b8c3903">ripple::keylet::nftoffer</a></div><div class="ttdeci">Keylet nftoffer(AccountID const &amp;owner, std::uint32_t seq)</div><div class="ttdoc">An offer from an account to buy or sell an NFT.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00419">Indexes.cpp:419</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_a7c16b0abc727e34b4d83377b7f3da2dd"><div class="ttname"><a href="namespaceripple_1_1keylet.html#a7c16b0abc727e34b4d83377b7f3da2dd">ripple::keylet::nftpage</a></div><div class="ttdeci">Keylet nftpage(Keylet const &amp;k, uint256 const &amp;token)</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00412">Indexes.cpp:412</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_abf6a2f8678a82fc0ea6bf41e3972a9eb"><div class="ttname"><a href="namespaceripple_1_1keylet.html#abf6a2f8678a82fc0ea6bf41e3972a9eb">ripple::keylet::nftpage_min</a></div><div class="ttdeci">Keylet nftpage_min(AccountID const &amp;owner)</div><div class="ttdoc">NFT page keylets.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00396">Indexes.cpp:396</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_acbbf19b6eb7d5e93f6448832d9e0288c"><div class="ttname"><a href="namespaceripple_1_1keylet.html#acbbf19b6eb7d5e93f6448832d9e0288c">ripple::keylet::nftpage_max</a></div><div class="ttdeci">Keylet nftpage_max(AccountID const &amp;owner)</div><div class="ttdoc">A keylet for the owner's last possible NFT page.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00404">Indexes.cpp:404</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_adddc4768b4e412ab96f6fff32b8c3903"><div class="ttname"><a href="namespaceripple_1_1keylet.html#adddc4768b4e412ab96f6fff32b8c3903">ripple::keylet::nftoffer</a></div><div class="ttdeci">Keylet nftoffer(AccountID const &amp;owner, std::uint32_t seq)</div><div class="ttdoc">An offer from an account to buy or sell an NFT.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00420">Indexes.cpp:420</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_a6ff9377be53296a54dd73bff1a4ae934"><div class="ttname"><a href="namespaceripple_1_1nft.html#a6ff9377be53296a54dd73bff1a4ae934">ripple::nft::cipheredTaxon</a></div><div class="ttdeci">Taxon cipheredTaxon(std::uint32_t tokenSeq, Taxon taxon)</div><div class="ttdef"><b>Definition:</b> <a href="nft_8h_source.html#l00084">nft.h:84</a></div></div>
<div class="ttc" id="anamespaceripple_1_1nft_html_a8878ae3c753ff4fe6bb04e5c516ccea5"><div class="ttname"><a href="namespaceripple_1_1nft.html#a8878ae3c753ff4fe6bb04e5c516ccea5">ripple::nft::toTaxon</a></div><div class="ttdeci">Taxon toTaxon(std::uint32_t i)</div><div class="ttdef"><b>Definition:</b> <a href="nft_8h_source.html#l00042">nft.h:42</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1ledgerStateFix_html_a983169203e4815e74c20df4cbc657a90"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1ledgerStateFix.html#a983169203e4815e74c20df4cbc657a90">ripple::test::jtx::ledgerStateFix::nftPageLinks</a></div><div class="ttdeci">Json::Value nftPageLinks(jtx::Account const &amp;acct, jtx::Account const &amp;owner)</div><div class="ttdoc">Repair the links in an NFToken directory.</div><div class="ttdef"><b>Definition:</b> <a href="ledgerStateFixes_8cpp_source.html#l00035">ledgerStateFixes.cpp:35</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1ticket_html_a1e24650b39bab99fc665d9f80365cc27"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1ticket.html#a1e24650b39bab99fc665d9f80365cc27">ripple::test::jtx::ticket::create</a></div><div class="ttdeci">Json::Value create(Account const &amp;account, std::uint32_t count)</div><div class="ttdoc">Create one of more tickets.</div><div class="ttdef"><b>Definition:</b> <a href="ticket_8cpp_source.html#l00031">ticket.cpp:31</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1token_html_a2749ac7d2df5bd6424972b8de5cb0ad8"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1token.html#a2749ac7d2df5bd6424972b8de5cb0ad8">ripple::test::jtx::token::getNextID</a></div><div class="ttdeci">uint256 getNextID(jtx::Env const &amp;env, jtx::Account const &amp;issuer, std::uint32_t nfTokenTaxon, std::uint16_t flags, std::uint16_t xferFee)</div><div class="ttdoc">Get the next NFTokenID that will be issued.</div><div class="ttdef"><b>Definition:</b> <a href="token_8cpp_source.html#l00068">token.cpp:68</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1token_html_a40dfafd85108b010176f95d9af3b9c33"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1token.html#a40dfafd85108b010176f95d9af3b9c33">ripple::test::jtx::token::createOffer</a></div><div class="ttdeci">Json::Value createOffer(jtx::Account const &amp;account, uint256 const &amp;nftokenID, STAmount const &amp;amount)</div><div class="ttdoc">Create an NFTokenOffer.</div><div class="ttdef"><b>Definition:</b> <a href="token_8cpp_source.html#l00113">token.cpp:113</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1token_html_a91831cf96998d1ec5c992805bc2c4cde"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1token.html#a91831cf96998d1ec5c992805bc2c4cde">ripple::test::jtx::token::acceptSellOffer</a></div><div class="ttdeci">Json::Value acceptSellOffer(jtx::Account const &amp;account, uint256 const &amp;offerIndex)</div><div class="ttdoc">Accept an NFToken sell offer.</div><div class="ttdef"><b>Definition:</b> <a href="token_8cpp_source.html#l00193">token.cpp:193</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1token_html_aa4658d13738040f1fae989bbf053e488"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1token.html#aa4658d13738040f1fae989bbf053e488">ripple::test::jtx::token::acceptBuyOffer</a></div><div class="ttdeci">Json::Value acceptBuyOffer(jtx::Account const &amp;account, uint256 const &amp;offerIndex)</div><div class="ttdoc">Accept an NFToken buy offer.</div><div class="ttdef"><b>Definition:</b> <a href="token_8cpp_source.html#l00183">token.cpp:183</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1token_html_ab5b8b8289e756cf37a6ad2d1adb876b5"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1token.html#ab5b8b8289e756cf37a6ad2d1adb876b5">ripple::test::jtx::token::mint</a></div><div class="ttdeci">Json::Value mint(jtx::Account const &amp;account, std::uint32_t nfTokenTaxon)</div><div class="ttdoc">Mint an NFToken.</div><div class="ttdef"><b>Definition:</b> <a href="token_8cpp_source.html#l00034">token.cpp:34</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_1_1token_html_ac8f58dedb4946a2d5681304c8bf03929"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx_1_1token.html#ac8f58dedb4946a2d5681304c8bf03929">ripple::test::jtx::token::burn</a></div><div class="ttdeci">Json::Value burn(jtx::Account const &amp;account, uint256 const &amp;nftokenID)</div><div class="ttdoc">Burn an NFToken.</div><div class="ttdef"><b>Definition:</b> <a href="token_8cpp_source.html#l00103">token.cpp:103</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a12abe185058a3db015909ed92c421097"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a12abe185058a3db015909ed92c421097">ripple::test::jtx::ownerCount</a></div><div class="ttdeci">std::uint32_t ownerCount(Env const &amp;env, Account const &amp;account)</div><div class="ttdef"><b>Definition:</b> <a href="TestHelpers_8cpp_source.html#l00054">TestHelpers.cpp:54</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a47271eb5e7eb9b5aada383ccfaf9c0cf"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a47271eb5e7eb9b5aada383ccfaf9c0cf">ripple::test::jtx::drops</a></div><div class="ttdeci">PrettyAmount drops(Integer i)</div><div class="ttdoc">Returns an XRP PrettyAmount, which is trivially convertible to STAmount.</div><div class="ttdef"><b>Definition:</b> <a href="src_2test_2jtx_2amount_8h_source.html#l00297">src/test/jtx/amount.h:297</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_aea9cd3d4e6b5df2e62d53b34b605957e"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#aea9cd3d4e6b5df2e62d53b34b605957e">ripple::test::jtx::XRP</a></div><div class="ttdeci">XRP_t const XRP</div><div class="ttdoc">Converts to XRP Issue or STAmount.</div><div class="ttdef"><b>Definition:</b> <a href="amount_8cpp_source.html#l00105">amount.cpp:105</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_af5441d84d5977d52246c5226313560d4"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#af5441d84d5977d52246c5226313560d4">ripple::test::jtx::supported_amendments</a></div><div class="ttdeci">FeatureBitset supported_amendments()</div><div class="ttdef"><b>Definition:</b> <a href="Env_8h_source.html#l00074">Env.h:74</a></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>
<div class="ttc" id="anamespaceripple_html_a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba"><div class="ttname"><a href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba">ripple::telINSUF_FEE_P</a></div><div class="ttdeci">@ telINSUF_FEE_P</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00057">TER.h:57</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#l00198">TxFlags.h:198</a></div></div>
<div class="ttc" id="anamespaceripple_html_a61d9fbb44b335fbb5e82e3211e6639a2"><div class="ttname"><a href="namespaceripple.html#a61d9fbb44b335fbb5e82e3211e6639a2">ripple::tfPassive</a></div><div class="ttdeci">constexpr std::uint32_t tfPassive</div><div class="ttdef"><b>Definition:</b> <a href="TxFlags_8h_source.html#l00096">TxFlags.h:96</a></div></div>
<div class="ttc" id="anamespaceripple_html_a75cb21d7f1df42f2fdc8efddb79b63f4a7fd8320b8bba5352c9be80ede4efba5b"><div class="ttname"><a href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4a7fd8320b8bba5352c9be80ede4efba5b">ripple::tefINVALID_LEDGER_FIX_TYPE</a></div><div class="ttdeci">@ tefINVALID_LEDGER_FIX_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00187">TER.h:187</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38ca2f3fdd22dc22973eca4c97cb3f9e65fc"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca2f3fdd22dc22973eca4c97cb3f9e65fc">ripple::tecOBJECT_NOT_FOUND</a></div><div class="ttdeci">@ tecOBJECT_NOT_FOUND</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00313">TER.h:313</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38caecd11145ac07375d1c0793e699932969"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caecd11145ac07375d1c0793e699932969">ripple::tecFAILED_PROCESSING</a></div><div class="ttdeci">@ tecFAILED_PROCESSING</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00273">TER.h:273</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38ca2f3fdd22dc22973eca4c97cb3f9e65fc"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca2f3fdd22dc22973eca4c97cb3f9e65fc">ripple::tecOBJECT_NOT_FOUND</a></div><div class="ttdeci">@ tecOBJECT_NOT_FOUND</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00326">TER.h:326</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38caecd11145ac07375d1c0793e699932969"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caecd11145ac07375d1c0793e699932969">ripple::tecFAILED_PROCESSING</a></div><div class="ttdeci">@ tecFAILED_PROCESSING</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00286">TER.h:286</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>
<div class="ttc" id="anamespaceripple_html_ac34a69f56216ea1e430c09ba049bf0aea5483bf26dec486ec0175e2a3ca816a0a"><div class="ttname"><a href="namespaceripple.html#ac34a69f56216ea1e430c09ba049bf0aea5483bf26dec486ec0175e2a3ca816a0a">ripple::ReleaseStrongRefAction::noop</a></div><div class="ttdeci">@ noop</div></div>
<div class="ttc" id="anamespaceripple_html_af6dbd01af49aa6a39b96cee44add0df1"><div class="ttname"><a href="namespaceripple.html#af6dbd01af49aa6a39b96cee44add0df1">ripple::tfTransferable</a></div><div class="ttdeci">constexpr std::uint32_t const tfTransferable</div><div class="ttdef"><b>Definition:</b> <a href="TxFlags_8h_source.html#l00143">TxFlags.h:143</a></div></div>