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

@@ -303,7 +303,7 @@ $(function() {
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"><a class="line" href="classripple_1_1BookStep.html#a4bc1a7ac0a842e8774fb66ed15c87e23"> 233</a></span> <a class="code hl_function" href="classripple_1_1BookStep.html#a4bc1a7ac0a842e8774fb66ed15c87e23">consumeOffer</a>(</div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <a class="code hl_class" href="classripple_1_1PaymentSandbox.html">PaymentSandbox</a>&amp; sb,</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer&lt;TIn, TOut&gt;</a>&amp; offer,</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer&lt;TIn, TOut&gt;</a>&amp; <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>,</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> TAmounts&lt;TIn, TOut&gt; <span class="keyword">const</span>&amp; ofrAmt,</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> TAmounts&lt;TIn, TOut&gt; <span class="keyword">const</span>&amp; stepAmt,</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> TOut <span class="keyword">const</span>&amp; ownerGives) <span class="keyword">const</span>;</div>
@@ -355,7 +355,7 @@ $(function() {
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno"><a class="line" href="classripple_1_1BookPaymentStep.html#a41697bafb9aea4aee6267fe339f2ee3e"> 284</a></span> <a class="code hl_function" href="classripple_1_1BookPaymentStep.html#a41697bafb9aea4aee6267fe339f2ee3e">limitSelfCrossQuality</a>(</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp;,</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno"> 286</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp;,</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer&lt;TIn, TOut&gt;</a> <span class="keyword">const</span>&amp; offer,</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"> 287</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer&lt;TIn, TOut&gt;</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>,</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"> 288</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;Quality&gt;</a>&amp;,</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> <a class="code hl_class" href="classripple_1_1FlowOfferStream.html">FlowOfferStream&lt;TIn, TOut&gt;</a>&amp;,</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"> 290</span> <span class="keywordtype">bool</span>)<span class="keyword"> const</span></div>
@@ -410,19 +410,19 @@ $(function() {
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> <span class="comment">// (the old code does not charge a fee)</span></div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno"> 340</span> <span class="comment">// Calculate amount that goes to the taker and the amount charged the</span></div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno"> 341</span> <span class="comment">// offer owner</span></div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">auto</span> rate = [&amp;](<a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; id) {</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">auto</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e8d814b8820ce0b6979abde0d6a2618">rate</a> = [&amp;](<a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; id) {</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"> 343</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="namespaceripple.html#a20d30277b9c78756b3d14493055a307c">isXRP</a>(<span class="keywordtype">id</span>) || <span class="keywordtype">id</span> == this-&gt;<a class="code hl_variable" href="classripple_1_1BookStep.html#aca9d4f2a380bfab569355b12fbbab6ee">strandDst_</a>)</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="namespaceripple.html#afbcd0117839fb629a769c600a741f452">parityRate</a>;</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"> 345</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespaceripple.html#a40a2f551909e4b709699f6d41292d374">transferRate</a>(v, <span class="keywordtype">id</span>);</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> };</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> </div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"> 348</span> <span class="keyword">auto</span> <span class="keyword">const</span> trIn =</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <a class="code hl_enumvalue" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401ea7e611dd9f79193db43a5e9983752239e">redeems</a>(prevStepDir) ? rate(this-&gt;<a class="code hl_variable" href="classripple_1_1BookStep.html#ae1c9905d2af71cf8b6695ad869685c36">book_</a>.<a class="code hl_variable" href="classripple_1_1Book.html#a44f1acfd1d549e7f025f5372fb345f27">in</a>.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>) : <a class="code hl_variable" href="namespaceripple.html#afbcd0117839fb629a769c600a741f452">parityRate</a>;</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> <a class="code hl_enumvalue" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401ea7e611dd9f79193db43a5e9983752239e">redeems</a>(prevStepDir) ? <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e8d814b8820ce0b6979abde0d6a2618">rate</a>(this-&gt;<a class="code hl_variable" href="classripple_1_1BookStep.html#ae1c9905d2af71cf8b6695ad869685c36">book_</a>.<a class="code hl_variable" href="classripple_1_1Book.html#a44f1acfd1d549e7f025f5372fb345f27">in</a>.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>) : <a class="code hl_variable" href="namespaceripple.html#afbcd0117839fb629a769c600a741f452">parityRate</a>;</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> <span class="comment">// Always charge the transfer fee, even if the owner is the issuer,</span></div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> <span class="comment">// unless the fee is waived</span></div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno"> 352</span> <span class="keyword">auto</span> <span class="keyword">const</span> trOut =</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"> 353</span> (this-&gt;<a class="code hl_variable" href="classripple_1_1BookStep.html#aea2831bee7a5772916195fa1489cb09c">ownerPaysTransferFee_</a> &amp;&amp; waiveFee == <a class="code hl_enumvalue" href="namespaceripple.html#a9d22f4d38ac33f4258a0205f8e11d27eabafd7322c6e97d25b6299b5d6fe8920b">WaiveTransferFee::No</a>)</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> ? rate(this-&gt;<a class="code hl_variable" href="classripple_1_1BookStep.html#ae1c9905d2af71cf8b6695ad869685c36">book_</a>.<a class="code hl_variable" href="classripple_1_1Book.html#a6992e8a5da385182ec3ab51a0216281a">out</a>.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>)</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> ? <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e8d814b8820ce0b6979abde0d6a2618">rate</a>(this-&gt;<a class="code hl_variable" href="classripple_1_1BookStep.html#ae1c9905d2af71cf8b6695ad869685c36">book_</a>.<a class="code hl_variable" href="classripple_1_1Book.html#a6992e8a5da385182ec3ab51a0216281a">out</a>.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>)</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> : <a class="code hl_variable" href="namespaceripple.html#afbcd0117839fb629a769c600a741f452">parityRate</a>;</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> </div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> Quality <span class="keyword">const</span> q1{<a class="code hl_function" href="namespaceripple.html#a73cc988e7ba5d5ee0fd9db53740917ec">getRate</a>(<a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a>(trOut.value), <a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a>(trIn.value))};</div>
@@ -477,9 +477,9 @@ $(function() {
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"><a class="line" href="classripple_1_1BookOfferCrossingStep.html#aa37d2f7c09a0adca9513c943664e9254"> 406</a></span> <a class="code hl_function" href="classripple_1_1BookOfferCrossingStep.html#aa37d2f7c09a0adca9513c943664e9254">limitSelfCrossQuality</a>(</div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; strandSrc,</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; strandDst,</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer&lt;TIn, TOut&gt;</a> <span class="keyword">const</span>&amp; offer,</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer&lt;TIn, TOut&gt;</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>,</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;Quality&gt;</a>&amp; ofrQ,</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <a class="code hl_class" href="classripple_1_1FlowOfferStream.html">FlowOfferStream&lt;TIn, TOut&gt;</a>&amp; offers,</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <a class="code hl_class" href="classripple_1_1FlowOfferStream.html">FlowOfferStream&lt;TIn, TOut&gt;</a>&amp; <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owner__count.html">offers</a>,</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> offerAttempted)<span class="keyword"> const</span></div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <span class="comment">// This method supports some correct but slightly surprising</span></div>
@@ -511,12 +511,12 @@ $(function() {
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="comment">// b. The offer&#39;s quality is at least as good as our quality, and</span></div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="comment">// c. We&#39;re about to cross one of our own offers, then</span></div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <span class="comment">// d. Delete the old offer from the ledger.</span></div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classripple_1_1BookOfferCrossingStep.html#a3ee9a446068fd6570a4a9b5a34879fb7">defaultPath_</a> &amp;&amp; offer.quality() &gt;= <a class="code hl_variable" href="classripple_1_1BookOfferCrossingStep.html#aac32b8bb4caf8afce4b0e0398fc25ed7">qualityThreshold_</a> &amp;&amp;</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> strandSrc == offer.owner() &amp;&amp; strandDst == offer.owner())</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="keywordflow">if</span> (<a class="code hl_variable" href="classripple_1_1BookOfferCrossingStep.html#a3ee9a446068fd6570a4a9b5a34879fb7">defaultPath_</a> &amp;&amp; <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.quality() &gt;= <a class="code hl_variable" href="classripple_1_1BookOfferCrossingStep.html#aac32b8bb4caf8afce4b0e0398fc25ed7">qualityThreshold_</a> &amp;&amp;</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> strandSrc == <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.owner() &amp;&amp; strandDst == <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.owner())</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> {</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <span class="comment">// Remove this offer even if no crossing occurs.</span></div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> <span class="keyword">const</span> key = offer.<a class="code hl_variable" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>())</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> offers.permRmOffer(*key);</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> <span class="keyword">const</span> key = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.key())</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owner__count.html">offers</a>.permRmOffer(*key);</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> </div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> <span class="comment">// If no offers have been attempted yet then it&#39;s okay to move to</span></div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> <span class="comment">// a different quality.</span></div>
@@ -613,14 +613,14 @@ $(function() {
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> (this-&gt;<a class="code hl_variable" href="classripple_1_1BookStep.html#a0c97112fdc6d159607fa01683d1dd8ca">ammLiquidity_</a> &amp;&amp; this-&gt;<a class="code hl_variable" href="classripple_1_1BookStep.html#a0c97112fdc6d159607fa01683d1dd8ca">ammLiquidity_</a>-&gt;multiPath()))</div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> <span class="keywordflow">return</span> ofrQ;</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> </div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> <span class="keyword">auto</span> rate = [&amp;](<a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; id) {</div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> <span class="keyword">auto</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e8d814b8820ce0b6979abde0d6a2618">rate</a> = [&amp;](<a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; id) {</div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="namespaceripple.html#a20d30277b9c78756b3d14493055a307c">isXRP</a>(<span class="keywordtype">id</span>) || <span class="keywordtype">id</span> == this-&gt;<a class="code hl_variable" href="classripple_1_1BookStep.html#aca9d4f2a380bfab569355b12fbbab6ee">strandDst_</a>)</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> <span class="keywordflow">return</span> <a class="code hl_variable" href="namespaceripple.html#afbcd0117839fb629a769c600a741f452">parityRate</a>;</div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespaceripple.html#a40a2f551909e4b709699f6d41292d374">transferRate</a>(v, <span class="keywordtype">id</span>);</div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> };</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> </div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> <span class="keyword">auto</span> <span class="keyword">const</span> trIn =</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <a class="code hl_enumvalue" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401ea7e611dd9f79193db43a5e9983752239e">redeems</a>(prevStepDir) ? rate(this-&gt;<a class="code hl_variable" href="classripple_1_1BookStep.html#ae1c9905d2af71cf8b6695ad869685c36">book_</a>.<a class="code hl_variable" href="classripple_1_1Book.html#a44f1acfd1d549e7f025f5372fb345f27">in</a>.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>) : <a class="code hl_variable" href="namespaceripple.html#afbcd0117839fb629a769c600a741f452">parityRate</a>;</div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <a class="code hl_enumvalue" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401ea7e611dd9f79193db43a5e9983752239e">redeems</a>(prevStepDir) ? <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e8d814b8820ce0b6979abde0d6a2618">rate</a>(this-&gt;<a class="code hl_variable" href="classripple_1_1BookStep.html#ae1c9905d2af71cf8b6695ad869685c36">book_</a>.<a class="code hl_variable" href="classripple_1_1Book.html#a44f1acfd1d549e7f025f5372fb345f27">in</a>.<a class="code hl_variable" href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">account</a>) : <a class="code hl_variable" href="namespaceripple.html#afbcd0117839fb629a769c600a741f452">parityRate</a>;</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> <span class="comment">// AMM doesn&#39;t pay the transfer fee on the out amount</span></div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> <span class="keyword">auto</span> <span class="keyword">const</span> trOut = <a class="code hl_variable" href="namespaceripple.html#afbcd0117839fb629a769c600a741f452">parityRate</a>;</div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> </div>
@@ -729,7 +729,7 @@ $(function() {
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> TIn, <span class="keyword">class</span> TOut, <span class="keyword">class</span> Offer&gt;</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span><span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"><a class="line" href="namespaceripple.html#a263796a7830204a27620035c603d2f15"> 660</a></span><a class="code hl_function" href="namespaceripple.html#a263796a7830204a27620035c603d2f15">limitStepIn</a>(</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer</a> <span class="keyword">const</span>&amp; offer,</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>,</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> TAmounts&lt;TIn, TOut&gt;&amp; ofrAmt,</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> TAmounts&lt;TIn, TOut&gt;&amp; stpAmt,</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> TOut&amp; ownerGives,</div>
@@ -749,7 +749,7 @@ $(function() {
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> <span class="comment">//</span></div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> <span class="comment">// This adjustment changes transaction outcomes, so it must be made</span></div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> <span class="comment">// under an amendment.</span></div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> ofrAmt = offer.limitIn(ofrAmt, inLmt, <span class="comment">/* roundUp */</span> <span class="keyword">false</span>);</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> ofrAmt = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.limitIn(ofrAmt, inLmt, <span class="comment">/* roundUp */</span> <span class="keyword">false</span>);</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> stpAmt.out = ofrAmt.out;</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> ownerGives = <a class="code hl_function" href="namespaceripple.html#aaed451aa78786841714de20f3f345f23">mulRatio</a>(</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> ofrAmt.out, transferRateOut, QUALITY_ONE, <span class="comment">/*roundUp*/</span> <span class="keyword">false</span>);</div>
@@ -760,7 +760,7 @@ $(function() {
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> TIn, <span class="keyword">class</span> TOut, <span class="keyword">class</span> Offer&gt;</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span><span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"><a class="line" href="namespaceripple.html#aa16a5e66c64d7a8b5c3a5123a2d21dfe"> 691</a></span><a class="code hl_function" href="namespaceripple.html#aa16a5e66c64d7a8b5c3a5123a2d21dfe">limitStepOut</a>(</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer</a> <span class="keyword">const</span>&amp; offer,</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer</a> <span class="keyword">const</span>&amp; <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>,</div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span> TAmounts&lt;TIn, TOut&gt;&amp; ofrAmt,</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> TAmounts&lt;TIn, TOut&gt;&amp; stpAmt,</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span> TOut&amp; ownerGives,</div>
@@ -773,7 +773,7 @@ $(function() {
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno"> 702</span> stpAmt.out = limit;</div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno"> 703</span> ownerGives = <a class="code hl_function" href="namespaceripple.html#aaed451aa78786841714de20f3f345f23">mulRatio</a>(</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno"> 704</span> stpAmt.out, transferRateOut, QUALITY_ONE, <span class="comment">/*roundUp*/</span> <span class="keyword">false</span>);</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span> ofrAmt = offer.limitOut(</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno"> 705</span> ofrAmt = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.limitOut(</div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno"> 706</span> ofrAmt,</div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno"> 707</span> stpAmt.out,</div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"> 708</span> <span class="comment">/*roundUp*/</span> <span class="keyword">true</span>);</div>
@@ -796,62 +796,62 @@ $(function() {
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno"> 725</span> <span class="comment">// (the old code does not charge a fee)</span></div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno"> 726</span> <span class="comment">// Calculate amount that goes to the taker and the amount charged the offer</span></div>
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno"> 727</span> <span class="comment">// owner</span></div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno"> 728</span> <span class="keyword">auto</span> rate = [<span class="keyword">this</span>, &amp;sb](<a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; id) -&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="l00728" name="l00728"></a><span class="lineno"> 728</span> <span class="keyword">auto</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e8d814b8820ce0b6979abde0d6a2618">rate</a> = [<span class="keyword">this</span>, &amp;sb](<a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; id) -&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="l00729" name="l00729"></a><span class="lineno"> 729</span> <span class="keywordflow">if</span> (<a class="code hl_function" href="namespaceripple.html#a20d30277b9c78756b3d14493055a307c">isXRP</a>(<span class="keywordtype">id</span>) || <span class="keywordtype">id</span> == this-&gt;strandDst_)</div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno"> 730</span> <span class="keywordflow">return</span> QUALITY_ONE;</div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno"> 731</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespaceripple.html#a40a2f551909e4b709699f6d41292d374">transferRate</a>(sb, <span class="keywordtype">id</span>).<a class="code hl_variable" href="structripple_1_1Rate.html#a59fd441d04e641347e6dc62c2301f671">value</a>;</div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"> 732</span> };</div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno"> 733</span> </div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno"> 734</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> trIn =</div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span> <a class="code hl_enumvalue" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401ea7e611dd9f79193db43a5e9983752239e">redeems</a>(prevStepDir) ? rate(book_.in.account) : QUALITY_ONE;</div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno"> 735</span> <a class="code hl_enumvalue" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401ea7e611dd9f79193db43a5e9983752239e">redeems</a>(prevStepDir) ? <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e8d814b8820ce0b6979abde0d6a2618">rate</a>(book_.in.account) : QUALITY_ONE;</div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno"> 736</span> <span class="comment">// Always charge the transfer fee, even if the owner is the issuer</span></div>
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno"> 737</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> trOut =</div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> ownerPaysTransferFee_ ? rate(book_.out.account) : QUALITY_ONE;</div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno"> 738</span> ownerPaysTransferFee_ ? <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#a8e8d814b8820ce0b6979abde0d6a2618">rate</a>(book_.out.account) : QUALITY_ONE;</div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno"> 739</span> </div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno"> 740</span> <span class="keyword">typename</span> <a class="code hl_class" href="classripple_1_1TOfferStreamBase_1_1StepCounter.html">FlowOfferStream&lt;TIn, TOut&gt;::StepCounter</a> counter(</div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno"> 741</span> maxOffersToConsume_, j_);</div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno"> 742</span> </div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span> <a class="code hl_class" href="classripple_1_1FlowOfferStream.html">FlowOfferStream&lt;TIn, TOut&gt;</a> offers(</div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno"> 743</span> <a class="code hl_class" href="classripple_1_1FlowOfferStream.html">FlowOfferStream&lt;TIn, TOut&gt;</a> <a class="code hl_typedef" href="namespaceripple_1_1test_1_1jtx.html#a3beb715a43d7e5bc771c333529bbf92d">offers</a>(</div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno"> 744</span> sb, afView, book_, sb.<a class="code hl_function" href="classripple_1_1ReadView.html#a1427aa6cbbda99c50b9ca0ebf6e0d0b3">parentCloseTime</a>(), counter, j_);</div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno"> 745</span> </div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno"> 746</span> <span class="keywordtype">bool</span> <span class="keyword">const</span> flowCross = afView.<a class="code hl_function" href="classripple_1_1ReadView.html#aceb3d74acaae18b238022337e5f250ce">rules</a>().<a class="code hl_function" href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">enabled</a>(featureFlowCross);</div>
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno"> 747</span> <span class="keywordtype">bool</span> offerAttempted = <span class="keyword">false</span>;</div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno"> 748</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional&lt;Quality&gt;</a> ofrQ;</div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span> <span class="keyword">auto</span> execOffer = [&amp;](<span class="keyword">auto</span>&amp; offer) {</div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"> 749</span> <span class="keyword">auto</span> execOffer = [&amp;](<span class="keyword">auto</span>&amp; <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>) {</div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno"> 750</span> <span class="comment">// Note that offer.quality() returns a (non-optional) Quality. So</span></div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno"> 751</span> <span class="comment">// ofrQ is always safe to use below this point in the lambda.</span></div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno"> 752</span> <span class="keywordflow">if</span> (!ofrQ)</div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> ofrQ = offer.quality();</div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*ofrQ != offer.quality())</div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno"> 753</span> ofrQ = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.quality();</div>
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"> 754</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (*ofrQ != <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.quality())</div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno"> 755</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno"> 756</span> </div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno"> 757</span> <span class="keywordflow">if</span> (<span class="keyword">static_cast&lt;</span>TDerived const*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;limitSelfCrossQuality(</div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"> 758</span> strandSrc_, strandDst_, offer, ofrQ, offers, offerAttempted))</div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno"> 758</span> strandSrc_, strandDst_, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>, ofrQ, <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owner__count.html">offers</a>, offerAttempted))</div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno"> 759</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno"> 760</span> </div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno"> 761</span> <span class="comment">// Make sure offer owner has authorization to own IOUs from issuer.</span></div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno"> 762</span> <span class="comment">// An account can always own XRP or their own IOUs.</span></div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> <span class="keywordflow">if</span> (flowCross &amp;&amp; (!<a class="code hl_function" href="namespaceripple.html#a20d30277b9c78756b3d14493055a307c">isXRP</a>(offer.issueIn().currency)) &amp;&amp;</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</span> (offer.owner() != offer.issueIn().account))</div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno"> 763</span> <span class="keywordflow">if</span> (flowCross &amp;&amp; (!<a class="code hl_function" href="namespaceripple.html#a20d30277b9c78756b3d14493055a307c">isXRP</a>(<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.issueIn().currency)) &amp;&amp;</div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno"> 764</span> (<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.owner() != <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.issueIn().account))</div>
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno"> 765</span> {</div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> <span class="keyword">auto</span> <span class="keyword">const</span>&amp; issuerID = offer.issueIn().account;</div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno"> 766</span> <span class="keyword">auto</span> <span class="keyword">const</span>&amp; issuerID = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.issueIn().account;</div>
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno"> 767</span> <span class="keyword">auto</span> <span class="keyword">const</span> issuer = afView.<a class="code hl_function" href="classripple_1_1ReadView.html#a0583a050ea7799ba331f6222a905f304">read</a>(<a class="code hl_function" href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">keylet::account</a>(issuerID));</div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno"> 768</span> <span class="keywordflow">if</span> (issuer &amp;&amp; ((*issuer)[sfFlags] &amp; <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a44c3bc643086a0beb87e3aaeb544e6ad">lsfRequireAuth</a>))</div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno"> 769</span> {</div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno"> 770</span> <span class="comment">// Issuer requires authorization. See if offer owner has that.</span></div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> <span class="keyword">auto</span> <span class="keyword">const</span>&amp; ownerID = offer.owner();</div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno"> 771</span> <span class="keyword">auto</span> <span class="keyword">const</span>&amp; ownerID = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.owner();</div>
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"> 772</span> <span class="keyword">auto</span> <span class="keyword">const</span> authFlag =</div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno"> 773</span> issuerID &gt; ownerID ? <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5ae6db21adf463a223e362b44f0fd54663">lsfHighAuth</a> : <a class="code hl_enumvalue" href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5af37617abe9ad741cd823746961f1fb3a">lsfLowAuth</a>;</div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno"> 774</span> </div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno"> 775</span> <span class="keyword">auto</span> <span class="keyword">const</span> line = afView.<a class="code hl_function" href="classripple_1_1ReadView.html#a0583a050ea7799ba331f6222a905f304">read</a>(</div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a55890af7192834c632299746ba300be8">keylet::line</a>(ownerID, issuerID, offer.issueIn().currency));</div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno"> 776</span> <a class="code hl_function" href="namespaceripple_1_1keylet.html#a55890af7192834c632299746ba300be8">keylet::line</a>(ownerID, issuerID, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.issueIn().currency));</div>
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno"> 777</span> </div>
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno"> 778</span> <span class="keywordflow">if</span> (!line || (((*line)[sfFlags] &amp; authFlag) == 0))</div>
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno"> 779</span> {</div>
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno"> 780</span> <span class="comment">// Offer owner not authorized to hold IOU from issuer.</span></div>
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno"> 781</span> <span class="comment">// Remove this offer even if no crossing occurs.</span></div>
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"> 782</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> <span class="keyword">const</span> key = offer.<a class="code hl_variable" href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">key</a>())</div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span> offers.permRmOffer(*key);</div>
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno"> 782</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> <span class="keyword">const</span> key = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.key())</div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno"> 783</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owner__count.html">offers</a>.permRmOffer(*key);</div>
<div class="line"><a id="l00784" name="l00784"></a><span class="lineno"> 784</span> <span class="keywordflow">if</span> (!offerAttempted)</div>
<div class="line"><a id="l00785" name="l00785"></a><span class="lineno"> 785</span> <span class="comment">// Change quality only if no previous offers were tried.</span></div>
<div class="line"><a id="l00786" name="l00786"></a><span class="lineno"> 786</span> ofrQ = std::nullopt;</div>
@@ -862,16 +862,16 @@ $(function() {
<div class="line"><a id="l00791" name="l00791"></a><span class="lineno"> 791</span> }</div>
<div class="line"><a id="l00792" name="l00792"></a><span class="lineno"> 792</span> </div>
<div class="line"><a id="l00793" name="l00793"></a><span class="lineno"> 793</span> <span class="keywordflow">if</span> (!<span class="keyword">static_cast&lt;</span>TDerived const*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;checkQualityThreshold(</div>
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno"> 794</span> offer.quality()))</div>
<div class="line"><a id="l00794" name="l00794"></a><span class="lineno"> 794</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.quality()))</div>
<div class="line"><a id="l00795" name="l00795"></a><span class="lineno"> 795</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00796" name="l00796"></a><span class="lineno"> 796</span> </div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"> 797</span> <span class="keyword">auto</span> <span class="keyword">const</span> [ofrInRate, ofrOutRate] = offer.adjustRates(</div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"> 797</span> <span class="keyword">auto</span> <span class="keyword">const</span> [ofrInRate, ofrOutRate] = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.adjustRates(</div>
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"> 798</span> <span class="keyword">static_cast&lt;</span>TDerived const*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;getOfrInRate(</div>
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno"> 799</span> prevStep_, offer.owner(), trIn),</div>
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno"> 799</span> prevStep_, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.owner(), trIn),</div>
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno"> 800</span> <span class="keyword">static_cast&lt;</span>TDerived const*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;getOfrOutRate(</div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"> 801</span> prevStep_, offer.owner(), strandDst_, trOut));</div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno"> 801</span> prevStep_, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.owner(), strandDst_, trOut));</div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"> 802</span> </div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span> <span class="keyword">auto</span> ofrAmt = offer.amount();</div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno"> 803</span> <span class="keyword">auto</span> ofrAmt = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.amount();</div>
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno"> 804</span> TAmounts stpAmt{</div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno"> 805</span> <a class="code hl_function" href="namespaceripple.html#aaed451aa78786841714de20f3f345f23">mulRatio</a>(ofrAmt.in, ofrInRate, QUALITY_ONE, <span class="comment">/*roundUp*/</span> <span class="keyword">true</span>),</div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno"> 806</span> ofrAmt.out};</div>
@@ -880,9 +880,9 @@ $(function() {
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno"> 809</span> <span class="keyword">auto</span> ownerGives =</div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno"> 810</span> <a class="code hl_function" href="namespaceripple.html#aaed451aa78786841714de20f3f345f23">mulRatio</a>(ofrAmt.out, ofrOutRate, QUALITY_ONE, <span class="comment">/*roundUp*/</span> <span class="keyword">false</span>);</div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno"> 811</span> </div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> <span class="keyword">auto</span> <span class="keyword">const</span> funds = offer.isFunded()</div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno"> 812</span> <span class="keyword">auto</span> <span class="keyword">const</span> funds = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.isFunded()</div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno"> 813</span> ? ownerGives <span class="comment">// Offer owner is issuer; they have unlimited funds</span></div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"> 814</span> : offers.ownerFunds();</div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"> 814</span> : <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owner__count.html">offers</a>.ownerFunds();</div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno"> 815</span> </div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno"> 816</span> <span class="comment">// Only if CLOB offer</span></div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno"> 817</span> <span class="keywordflow">if</span> (funds &lt; ownerGives)</div>
@@ -895,7 +895,7 @@ $(function() {
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"> 824</span> <span class="comment">// It turns out we can prevent order book blocking by (strictly)</span></div>
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno"> 825</span> <span class="comment">// rounding down the ceil_out() result. This adjustment changes</span></div>
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"> 826</span> <span class="comment">// transaction outcomes, so it must be made under an amendment.</span></div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"> 827</span> ofrAmt = offer.limitOut(ofrAmt, stpAmt.out, <span class="comment">/*roundUp*/</span> <span class="keyword">false</span>);</div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno"> 827</span> ofrAmt = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.limitOut(ofrAmt, stpAmt.out, <span class="comment">/*roundUp*/</span> <span class="keyword">false</span>);</div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno"> 828</span> </div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno"> 829</span> stpAmt.in =</div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno"> 830</span> <a class="code hl_function" href="namespaceripple.html#aaed451aa78786841714de20f3f345f23">mulRatio</a>(ofrAmt.in, ofrInRate, QUALITY_ONE, <span class="comment">/*roundUp*/</span> <span class="keyword">true</span>);</div>
@@ -903,7 +903,7 @@ $(function() {
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"> 832</span> </div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno"> 833</span> offerAttempted = <span class="keyword">true</span>;</div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno"> 834</span> <span class="keywordflow">return</span> callback(</div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span> offer, ofrAmt, stpAmt, ownerGives, ofrInRate, ofrOutRate);</div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno"> 835</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>, ofrAmt, stpAmt, ownerGives, ofrInRate, ofrOutRate);</div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno"> 836</span> };</div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno"> 837</span> </div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno"> 838</span> <span class="comment">// At any payment engine iteration, AMM offer can only be consumed once.</span></div>
@@ -920,15 +920,15 @@ $(function() {
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno"> 849</span> <span class="keywordflow">return</span> !ammOffer || execOffer(*ammOffer);</div>
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"> 850</span> };</div>
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"> 851</span> </div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno"> 852</span> <span class="keywordflow">if</span> (offers.step())</div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno"> 852</span> <span class="keywordflow">if</span> (<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owner__count.html">offers</a>.step())</div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno"> 853</span> {</div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> <span class="keywordflow">if</span> (tryAMM(offers.tip().quality()))</div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> <span class="keywordflow">if</span> (tryAMM(<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owner__count.html">offers</a>.tip().quality()))</div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span> {</div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"> 856</span> <span class="keywordflow">do</span></div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> {</div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> <span class="keywordflow">if</span> (!execOffer(offers.tip()))</div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> <span class="keywordflow">if</span> (!execOffer(<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owner__count.html">offers</a>.tip()))</div>
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"> 859</span> <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span> } <span class="keywordflow">while</span> (offers.step());</div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span> } <span class="keywordflow">while</span> (<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owner__count.html">offers</a>.step());</div>
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno"> 861</span> }</div>
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno"> 862</span> }</div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno"> 863</span> <span class="keywordflow">else</span></div>
@@ -937,7 +937,7 @@ $(function() {
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno"> 866</span> tryAMM(std::nullopt);</div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span> }</div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno"> 868</span> </div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span> <span class="keywordflow">return</span> {offers.permToRemove(), counter.<a class="code hl_function" href="classripple_1_1TOfferStreamBase_1_1StepCounter.html#afa54b3e228261c77bd99b202aeca92bc">count</a>()};</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno"> 869</span> <span class="keywordflow">return</span> {<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1owner__count.html">offers</a>.permToRemove(), counter.<a class="code hl_function" href="classripple_1_1TOfferStreamBase_1_1StepCounter.html#afa54b3e228261c77bd99b202aeca92bc">count</a>()};</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"> 870</span>}</div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno"> 871</span> </div>
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"> 872</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> TIn, <span class="keyword">class</span> TOut, <span class="keyword">class</span> TDerived&gt;</div>
@@ -945,12 +945,12 @@ $(function() {
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno"> 874</span><span class="keywordtype">void</span></div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno"><a class="line" href="classripple_1_1BookStep.html#a4bc1a7ac0a842e8774fb66ed15c87e23"> 875</a></span><a class="code hl_function" href="classripple_1_1BookStep.html#a4bc1a7ac0a842e8774fb66ed15c87e23">BookStep&lt;TIn, TOut, TDerived&gt;::consumeOffer</a>(</div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"> 876</span> <a class="code hl_class" href="classripple_1_1PaymentSandbox.html">PaymentSandbox</a>&amp; sb,</div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer&lt;TIn, TOut&gt;</a>&amp; offer,</div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span> <a class="code hl_class" href="classripple_1_1TOffer.html">Offer&lt;TIn, TOut&gt;</a>&amp; <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>,</div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span> TAmounts&lt;TIn, TOut&gt; <span class="keyword">const</span>&amp; ofrAmt,</div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> TAmounts&lt;TIn, TOut&gt; <span class="keyword">const</span>&amp; stepAmt,</div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span> TOut <span class="keyword">const</span>&amp; ownerGives)<span class="keyword"> const</span></div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span> <span class="keywordflow">if</span> (!offer.checkInvariant(ofrAmt, j_))</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span> <span class="keywordflow">if</span> (!<a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.checkInvariant(ofrAmt, j_))</div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"> 883</span> {</div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span> <span class="comment">// purposely written as separate if statements so we get logging even</span></div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno"> 885</span> <span class="comment">// when the amendment isn&#39;t active.</span></div>
@@ -964,10 +964,10 @@ $(function() {
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span> <span class="comment">// The offer owner gets the ofrAmt. The difference between ofrAmt and</span></div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span> <span class="comment">// stepAmt is a transfer fee that goes to book_.in.account</span></div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno"> 895</span> {</div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno"> 896</span> <span class="keyword">auto</span> <span class="keyword">const</span> dr = offer.send(</div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno"> 896</span> <span class="keyword">auto</span> <span class="keyword">const</span> dr = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.send(</div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"> 897</span> sb,</div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</span> book_.in.account,</div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno"> 899</span> offer.owner(),</div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno"> 899</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.owner(),</div>
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"> 900</span> <a class="code hl_function" href="namespaceripple.html#a4ad5ac9da897292a28eea43d041c15a1">toSTAmount</a>(ofrAmt.in, book_.in),</div>
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno"> 901</span> j_);</div>
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"> 902</span> <span class="keywordflow">if</span> (dr != <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
@@ -977,9 +977,9 @@ $(function() {
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"> 906</span> <span class="comment">// The offer owner pays `ownerGives`. The difference between ownerGives and</span></div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"> 907</span> <span class="comment">// stepAmt is a transfer fee that goes to book_.out.account</span></div>
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno"> 908</span> {</div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno"> 909</span> <span class="keyword">auto</span> <span class="keyword">const</span> cr = offer.send(</div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno"> 909</span> <span class="keyword">auto</span> <span class="keyword">const</span> cr = <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.send(</div>
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno"> 910</span> sb,</div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span> offer.owner(),</div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.owner(),</div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> book_.out.account,</div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"> 913</span> <a class="code hl_function" href="namespaceripple.html#a4ad5ac9da897292a28eea43d041c15a1">toSTAmount</a>(ownerGives, book_.out),</div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"> 914</span> j_);</div>
@@ -987,7 +987,7 @@ $(function() {
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"> 916</span> Throw&lt;FlowException&gt;(cr);</div>
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno"> 917</span> }</div>
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno"> 918</span> </div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno"> 919</span> offer.consume(sb, ofrAmt);</div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno"> 919</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.consume(sb, ofrAmt);</div>
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno"> 920</span>}</div>
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno"> 921</span> </div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"> 922</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> TIn, <span class="keyword">class</span> TOut, <span class="keyword">class</span> TDerived&gt;</div>
@@ -1100,7 +1100,7 @@ $(function() {
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span><span class="comment"> amounts - tho always &lt;=)</span></div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span><span class="comment"> Return true to continue to receive offers, false to stop receiving offers.</span></div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span><span class="comment"> */</span></div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span> <span class="keyword">auto</span> eachOffer = [&amp;](<span class="keyword">auto</span>&amp; offer,</div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span> <span class="keyword">auto</span> eachOffer = [&amp;](<span class="keyword">auto</span>&amp; <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>,</div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span> TAmounts&lt;TIn, TOut&gt; <span class="keyword">const</span>&amp; ofrAmt,</div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span> TAmounts&lt;TIn, TOut&gt; <span class="keyword">const</span>&amp; stpAmt,</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span> TOut <span class="keyword">const</span>&amp; ownerGives,</div>
@@ -1115,7 +1115,7 @@ $(function() {
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span> savedOuts.insert(stpAmt.out);</div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span> result = TAmounts&lt;TIn, TOut&gt;(<a class="code hl_function" href="namespaceripple.html#a06f1da429e6a72c7a8be4248d88ed6e7">sum</a>(savedIns), <a class="code hl_function" href="namespaceripple.html#a06f1da429e6a72c7a8be4248d88ed6e7">sum</a>(savedOuts));</div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span> remainingOut = <a class="code hl_enumvalue" href="namespaceripple.html#a7cc64e12723fbc9606d85442a2569fedac68271a63ddbc431c307beb7d2918275">out</a> - result.out;</div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> this-&gt;consumeOffer(sb, offer, ofrAmt, stpAmt, ownerGives);</div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> this-&gt;consumeOffer(sb, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>, ofrAmt, stpAmt, ownerGives);</div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span> <span class="comment">// return true b/c even if the payment is satisfied,</span></div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span> <span class="comment">// we need to consume the offer</span></div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
@@ -1126,7 +1126,7 @@ $(function() {
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span> <span class="keyword">auto</span> stpAdjAmt = stpAmt;</div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span> <span class="keyword">auto</span> ownerGivesAdj = ownerGives;</div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span> <a class="code hl_function" href="namespaceripple.html#aa16a5e66c64d7a8b5c3a5123a2d21dfe">limitStepOut</a>(</div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span> offer,</div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>,</div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span> ofrAdjAmt,</div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span> stpAdjAmt,</div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> ownerGivesAdj,</div>
@@ -1138,14 +1138,14 @@ $(function() {
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span> savedOuts.insert(remainingOut);</div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span> result.in = <a class="code hl_function" href="namespaceripple.html#a06f1da429e6a72c7a8be4248d88ed6e7">sum</a>(savedIns);</div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span> result.out = <a class="code hl_enumvalue" href="namespaceripple.html#a7cc64e12723fbc9606d85442a2569fedac68271a63ddbc431c307beb7d2918275">out</a>;</div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span> this-&gt;consumeOffer(sb, offer, ofrAdjAmt, stpAdjAmt, ownerGivesAdj);</div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span> this-&gt;consumeOffer(sb, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>, ofrAdjAmt, stpAdjAmt, ownerGivesAdj);</div>
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"> 1071</span> </div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span> <span class="comment">// Explicitly check whether the offer is funded. Given that we have</span></div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span> <span class="comment">// (stpAmt.out &gt; remainingOut), it&#39;s natural to assume the offer</span></div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span> <span class="comment">// will still be funded after consuming remainingOut but that is</span></div>
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"> 1075</span> <span class="comment">// not always the case. If the mantissas of two IOU amounts differ</span></div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span> <span class="comment">// by less than ten, then subtracting them leaves a zero.</span></div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span> <span class="keywordflow">return</span> offer.fully_consumed();</div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.fully_consumed();</div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span> }</div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span> };</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span> </div>
@@ -1219,7 +1219,7 @@ $(function() {
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span> </div>
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span> <span class="comment">// amt fed will be adjusted by owner funds (and may differ from the offer&#39;s</span></div>
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span> <span class="comment">// amounts - tho always &lt;=)</span></div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span> <span class="keyword">auto</span> eachOffer = [&amp;](<span class="keyword">auto</span>&amp; offer,</div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span> <span class="keyword">auto</span> eachOffer = [&amp;](<span class="keyword">auto</span>&amp; <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>,</div>
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span> TAmounts&lt;TIn, TOut&gt; <span class="keyword">const</span>&amp; ofrAmt,</div>
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span> TAmounts&lt;TIn, TOut&gt; <span class="keyword">const</span>&amp; stpAmt,</div>
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span> TOut <span class="keyword">const</span>&amp; ownerGives,</div>
@@ -1248,7 +1248,7 @@ $(function() {
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span> <span class="keywordflow">else</span></div>
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span> {</div>
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span> <a class="code hl_function" href="namespaceripple.html#a263796a7830204a27620035c603d2f15">limitStepIn</a>(</div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span> offer,</div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>,</div>
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span> ofrAdjAmt,</div>
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span> stpAdjAmt,</div>
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span> ownerGivesAdj,</div>
@@ -1279,7 +1279,7 @@ $(function() {
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"> 1208</span> <span class="keyword">auto</span> stpAdjAmtRev = stpAmt;</div>
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span> <span class="keyword">auto</span> ownerGivesAdjRev = ownerGives;</div>
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span> <a class="code hl_function" href="namespaceripple.html#aa16a5e66c64d7a8b5c3a5123a2d21dfe">limitStepOut</a>(</div>
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span> offer,</div>
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span> <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>,</div>
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span> ofrAdjAmtRev,</div>
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span> stpAdjAmtRev,</div>
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span> ownerGivesAdjRev,</div>
@@ -1311,13 +1311,13 @@ $(function() {
<div class="line"><a id="l01240" name="l01240"></a><span class="lineno"> 1240</span> }</div>
<div class="line"><a id="l01241" name="l01241"></a><span class="lineno"> 1241</span> </div>
<div class="line"><a id="l01242" name="l01242"></a><span class="lineno"> 1242</span> remainingIn = <a class="code hl_enumvalue" href="namespaceripple.html#a7cc64e12723fbc9606d85442a2569feda13b5bfe96f3e2fe411c9f66f4a582adf">in</a> - result.in;</div>
<div class="line"><a id="l01243" name="l01243"></a><span class="lineno"> 1243</span> this-&gt;consumeOffer(sb, offer, ofrAdjAmt, stpAdjAmt, ownerGivesAdj);</div>
<div class="line"><a id="l01243" name="l01243"></a><span class="lineno"> 1243</span> this-&gt;consumeOffer(sb, <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>, ofrAdjAmt, stpAdjAmt, ownerGivesAdj);</div>
<div class="line"><a id="l01244" name="l01244"></a><span class="lineno"> 1244</span> </div>
<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span> <span class="comment">// When the mantissas of two iou amounts differ by less than ten, then</span></div>
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span> <span class="comment">// subtracting them leaves a result of zero. This can cause the check</span></div>
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"> 1247</span> <span class="comment">// for (stpAmt.in &gt; remainingIn) to incorrectly think an offer will be</span></div>
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"> 1248</span> <span class="comment">// funded after subtracting remainingIn.</span></div>
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"> 1249</span> <span class="keywordflow">return</span> processMore || offer.fully_consumed();</div>
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"> 1249</span> <span class="keywordflow">return</span> processMore || <a class="code hl_function" href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">offer</a>.fully_consumed();</div>
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"> 1250</span> };</div>
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span> </div>
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span> {</div>
@@ -1517,24 +1517,24 @@ $(function() {
<div class="line"><a id="l01446" name="l01446"></a><span class="lineno"> 1446</span><span class="keyword">static</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;TER, std::unique_ptr&lt;Step&gt;</a>&gt;</div>
<div class="line"><a id="l01447" name="l01447"></a><span class="lineno"><a class="line" href="namespaceripple.html#aa91457ff078f37f17e7bc3875d6c1752"> 1447</a></span><a class="code hl_function" href="namespaceripple.html#aa91457ff078f37f17e7bc3875d6c1752">make_BookStepHelper</a>(<a class="code hl_struct" href="structripple_1_1StrandContext.html">StrandContext</a> <span class="keyword">const</span>&amp; ctx, <a class="code hl_class" href="classripple_1_1Issue.html">Issue</a> <span class="keyword">const</span>&amp; <a class="code hl_enumvalue" href="namespaceripple.html#a7cc64e12723fbc9606d85442a2569feda13b5bfe96f3e2fe411c9f66f4a582adf">in</a>, <a class="code hl_class" href="classripple_1_1Issue.html">Issue</a> <span class="keyword">const</span>&amp; <a class="code hl_enumvalue" href="namespaceripple.html#a7cc64e12723fbc9606d85442a2569fedac68271a63ddbc431c307beb7d2918275">out</a>)</div>
<div class="line"><a id="l01448" name="l01448"></a><span class="lineno"> 1448</span>{</div>
<div class="line"><a id="l01449" name="l01449"></a><span class="lineno"> 1449</span> <a class="code hl_class" href="classripple_1_1TERSubset.html">TER</a> ter = <a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ad035d214edc31c72362d7efbdaba234c">tefINTERNAL</a>;</div>
<div class="line"><a id="l01449" name="l01449"></a><span class="lineno"> 1449</span> <a class="code hl_class" href="classripple_1_1TERSubset.html">TER</a> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a> = <a class="code hl_enumvalue" href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ad035d214edc31c72362d7efbdaba234c">tefINTERNAL</a>;</div>
<div class="line"><a id="l01450" name="l01450"></a><span class="lineno"> 1450</span> <a class="code hl_classRef" href="http://en.cppreference.com/w/cpp/memory/unique_ptr.html">std::unique_ptr&lt;Step&gt;</a> r;</div>
<div class="line"><a id="l01451" name="l01451"></a><span class="lineno"> 1451</span> <span class="keywordflow">if</span> (ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a823714e1b46346bde9898caac9c824d2">offerCrossing</a>)</div>
<div class="line"><a id="l01452" name="l01452"></a><span class="lineno"> 1452</span> {</div>
<div class="line"><a id="l01453" name="l01453"></a><span class="lineno"> 1453</span> <span class="keyword">auto</span> offerCrossingStep =</div>
<div class="line"><a id="l01454" name="l01454"></a><span class="lineno"> 1454</span> std::make_unique&lt;BookOfferCrossingStep&lt;TIn, TOut&gt;&gt;(ctx, <a class="code hl_enumvalue" href="namespaceripple.html#a7cc64e12723fbc9606d85442a2569feda13b5bfe96f3e2fe411c9f66f4a582adf">in</a>, <a class="code hl_enumvalue" href="namespaceripple.html#a7cc64e12723fbc9606d85442a2569fedac68271a63ddbc431c307beb7d2918275">out</a>);</div>
<div class="line"><a id="l01455" name="l01455"></a><span class="lineno"> 1455</span> ter = offerCrossingStep-&gt;check(ctx);</div>
<div class="line"><a id="l01455" name="l01455"></a><span class="lineno"> 1455</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a> = offerCrossingStep-&gt;check(ctx);</div>
<div class="line"><a id="l01456" name="l01456"></a><span class="lineno"> 1456</span> r = std::move(offerCrossingStep);</div>
<div class="line"><a id="l01457" name="l01457"></a><span class="lineno"> 1457</span> }</div>
<div class="line"><a id="l01458" name="l01458"></a><span class="lineno"> 1458</span> <span class="keywordflow">else</span> <span class="comment">// payment</span></div>
<div class="line"><a id="l01459" name="l01459"></a><span class="lineno"> 1459</span> {</div>
<div class="line"><a id="l01460" name="l01460"></a><span class="lineno"> 1460</span> <span class="keyword">auto</span> paymentStep =</div>
<div class="line"><a id="l01461" name="l01461"></a><span class="lineno"> 1461</span> std::make_unique&lt;BookPaymentStep&lt;TIn, TOut&gt;&gt;(ctx, <a class="code hl_enumvalue" href="namespaceripple.html#a7cc64e12723fbc9606d85442a2569feda13b5bfe96f3e2fe411c9f66f4a582adf">in</a>, <a class="code hl_enumvalue" href="namespaceripple.html#a7cc64e12723fbc9606d85442a2569fedac68271a63ddbc431c307beb7d2918275">out</a>);</div>
<div class="line"><a id="l01462" name="l01462"></a><span class="lineno"> 1462</span> ter = paymentStep-&gt;check(ctx);</div>
<div class="line"><a id="l01462" name="l01462"></a><span class="lineno"> 1462</span> <a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a> = paymentStep-&gt;check(ctx);</div>
<div class="line"><a id="l01463" name="l01463"></a><span class="lineno"> 1463</span> r = std::move(paymentStep);</div>
<div class="line"><a id="l01464" name="l01464"></a><span class="lineno"> 1464</span> }</div>
<div class="line"><a id="l01465" name="l01465"></a><span class="lineno"> 1465</span> <span class="keywordflow">if</span> (ter != <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
<div class="line"><a id="l01466" name="l01466"></a><span class="lineno"> 1466</span> <span class="keywordflow">return</span> {ter, <span class="keyword">nullptr</span>};</div>
<div class="line"><a id="l01465" name="l01465"></a><span class="lineno"> 1465</span> <span class="keywordflow">if</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#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
<div class="line"><a id="l01466" name="l01466"></a><span class="lineno"> 1466</span> <span class="keywordflow">return</span> {<a class="code hl_class" href="classripple_1_1test_1_1jtx_1_1ter.html">ter</a>, <span class="keyword">nullptr</span>};</div>
<div class="line"><a id="l01467" name="l01467"></a><span class="lineno"> 1467</span> </div>
<div class="line"><a id="l01468" name="l01468"></a><span class="lineno"> 1468</span> <span class="keywordflow">return</span> {<a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>, std::move(r)};</div>
<div class="line"><a id="l01469" name="l01469"></a><span class="lineno"> 1469</span>}</div>
@@ -1638,7 +1638,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Book_html_a44f1acfd1d549e7f025f5372fb345f27"><div class="ttname"><a href="classripple_1_1Book.html#a44f1acfd1d549e7f025f5372fb345f27">ripple::Book::in</a></div><div class="ttdeci">Issue in</div><div class="ttdef"><b>Definition:</b> <a href="Book_8h_source.html#l00037">Book.h:37</a></div></div>
<div class="ttc" id="aclassripple_1_1Book_html_a6992e8a5da385182ec3ab51a0216281a"><div class="ttname"><a href="classripple_1_1Book.html#a6992e8a5da385182ec3ab51a0216281a">ripple::Book::out</a></div><div class="ttdeci">Issue out</div><div class="ttdef"><b>Definition:</b> <a href="Book_8h_source.html#l00038">Book.h:38</a></div></div>
<div class="ttc" id="aclassripple_1_1FlowOfferStream_html"><div class="ttname"><a href="classripple_1_1FlowOfferStream.html">ripple::FlowOfferStream</a></div><div class="ttdoc">Presents and consumes the offers in an order book.</div><div class="ttdef"><b>Definition:</b> <a href="OfferStream_8h_source.html#l00175">OfferStream.h:176</a></div></div>
<div class="ttc" id="aclassripple_1_1IOUAmount_html"><div class="ttname"><a href="classripple_1_1IOUAmount.html">ripple::IOUAmount</a></div><div class="ttdoc">Floating point representation of amounts with high dynamic range.</div><div class="ttdef"><b>Definition:</b> <a href="IOUAmount_8h_source.html#l00045">IOUAmount.h:47</a></div></div>
<div class="ttc" id="aclassripple_1_1IOUAmount_html"><div class="ttname"><a href="classripple_1_1IOUAmount.html">ripple::IOUAmount</a></div><div class="ttdoc">Floating point representation of amounts with high dynamic range.</div><div class="ttdef"><b>Definition:</b> <a href="IOUAmount_8h_source.html#l00044">IOUAmount.h:46</a></div></div>
<div class="ttc" id="aclassripple_1_1Issue_html"><div class="ttname"><a href="classripple_1_1Issue.html">ripple::Issue</a></div><div class="ttdoc">A currency issued by an account.</div><div class="ttdef"><b>Definition:</b> <a href="Issue_8h_source.html#l00035">Issue.h:36</a></div></div>
<div class="ttc" id="aclassripple_1_1Issue_html_a46e4805870b1bad6a8691bed0b8acec8"><div class="ttname"><a href="classripple_1_1Issue.html#a46e4805870b1bad6a8691bed0b8acec8">ripple::Issue::account</a></div><div class="ttdeci">AccountID account</div><div class="ttdef"><b>Definition:</b> <a href="Issue_8h_source.html#l00039">Issue.h:39</a></div></div>
<div class="ttc" id="aclassripple_1_1Issue_html_a4b723aa4198e4c630e41de06586e2fe7"><div class="ttname"><a href="classripple_1_1Issue.html#a4b723aa4198e4c630e41de06586e2fe7">ripple::Issue::currency</a></div><div class="ttdeci">Currency currency</div><div class="ttdef"><b>Definition:</b> <a href="Issue_8h_source.html#l00038">Issue.h:38</a></div></div>
@@ -1663,12 +1663,17 @@ $(function() {
<div class="ttc" id="aclassripple_1_1XRPAmount_html"><div class="ttname"><a href="classripple_1_1XRPAmount.html">ripple::XRPAmount</a></div><div class="ttdef"><b>Definition:</b> <a href="XRPAmount_8h_source.html#l00039">XRPAmount.h:43</a></div></div>
<div class="ttc" id="aclassripple_1_1base__uint_html"><div class="ttname"><a href="classripple_1_1base__uint.html">ripple::base_uint&lt; 160, detail::AccountIDTag &gt;</a></div></div>
<div class="ttc" id="aclassripple_1_1detail_1_1ApplyViewBase_html_af16244cf2efd903b4575a0b85c94d159"><div class="ttname"><a href="classripple_1_1detail_1_1ApplyViewBase.html#af16244cf2efd903b4575a0b85c94d159">ripple::detail::ApplyViewBase::rules</a></div><div class="ttdeci">Rules const &amp; rules() const override</div><div class="ttdoc">Returns the tx processing rules.</div><div class="ttdef"><b>Definition:</b> <a href="ApplyViewBase_8cpp_source.html#l00051">ApplyViewBase.cpp:51</a></div></div>
<div class="ttc" id="aclassripple_1_1test_1_1jtx_1_1owner__count_html"><div class="ttname"><a href="classripple_1_1test_1_1jtx_1_1owner__count.html">ripple::test::jtx::owner_count</a></div><div class="ttdef"><b>Definition:</b> <a href="owners_8h_source.html#l00052">owners.h:53</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="adecay_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/decay.html">std::decay_t</a></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="amake_pair_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/utility/pair/make_pair.html">std::make_pair</a></div><div class="ttdeci">T make_pair(T... args)</div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_a54b18d5d8dab25d338f7e105bea1068b"><div class="ttname"><a href="namespaceripple_1_1keylet.html#a54b18d5d8dab25d338f7e105bea1068b">ripple::keylet::amm</a></div><div class="ttdeci">Keylet amm(Asset const &amp;issue1, Asset const &amp;issue2) noexcept</div><div class="ttdoc">AMM entry.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00438">Indexes.cpp:438</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_a55890af7192834c632299746ba300be8"><div class="ttname"><a href="namespaceripple_1_1keylet.html#a55890af7192834c632299746ba300be8">ripple::keylet::line</a></div><div class="ttdeci">Keylet line(AccountID const &amp;id0, AccountID const &amp;id1, Currency const &amp;currency) noexcept</div><div class="ttdoc">The index of a trust line for a given currency.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00236">Indexes.cpp:236</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_aa756e0f59b26042ed00a4d0ba6e96951"><div class="ttname"><a href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">ripple::keylet::account</a></div><div class="ttdeci">Keylet account(AccountID const &amp;id) noexcept</div><div class="ttdoc">AccountID root.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00176">Indexes.cpp:176</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_a54b18d5d8dab25d338f7e105bea1068b"><div class="ttname"><a href="namespaceripple_1_1keylet.html#a54b18d5d8dab25d338f7e105bea1068b">ripple::keylet::amm</a></div><div class="ttdeci">Keylet amm(Asset const &amp;issue1, Asset const &amp;issue2) noexcept</div><div class="ttdoc">AMM entry.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00439">Indexes.cpp:439</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_a55890af7192834c632299746ba300be8"><div class="ttname"><a href="namespaceripple_1_1keylet.html#a55890af7192834c632299746ba300be8">ripple::keylet::line</a></div><div class="ttdeci">Keylet line(AccountID const &amp;id0, AccountID const &amp;id1, Currency const &amp;currency) noexcept</div><div class="ttdoc">The index of a trust line for a given currency.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00237">Indexes.cpp:237</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_aa756e0f59b26042ed00a4d0ba6e96951"><div class="ttname"><a href="namespaceripple_1_1keylet.html#aa756e0f59b26042ed00a4d0ba6e96951">ripple::keylet::account</a></div><div class="ttdeci">Keylet account(AccountID const &amp;id) noexcept</div><div class="ttdoc">AccountID root.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00177">Indexes.cpp:177</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a3beb715a43d7e5bc771c333529bbf92d"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a3beb715a43d7e5bc771c333529bbf92d">ripple::test::jtx::offers</a></div><div class="ttdeci">owner_count&lt; ltOFFER &gt; offers</div><div class="ttdoc">Match the number of offers in the account's owner directory.</div><div class="ttdef"><b>Definition:</b> <a href="owners_8h_source.html#l00092">owners.h:92</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_a8e8d814b8820ce0b6979abde0d6a2618"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#a8e8d814b8820ce0b6979abde0d6a2618">ripple::test::jtx::rate</a></div><div class="ttdeci">Json::Value rate(Account const &amp;account, double multiplier)</div><div class="ttdoc">Set a transfer rate.</div><div class="ttdef"><b>Definition:</b> <a href="rate_8cpp_source.html#l00032">rate.cpp:32</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_1_1jtx_html_ac423e2aa3fd7a14ae651849b430994f1"><div class="ttname"><a href="namespaceripple_1_1test_1_1jtx.html#ac423e2aa3fd7a14ae651849b430994f1">ripple::test::jtx::offer</a></div><div class="ttdeci">Json::Value offer(Account const &amp;account, STAmount const &amp;takerPays, STAmount const &amp;takerGets, std::uint32_t flags)</div><div class="ttdoc">Create an offer.</div><div class="ttdef"><b>Definition:</b> <a href="offer_8cpp_source.html#l00029">offer.cpp:29</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a39b1794357565802f08397fa85fd67b5"><div class="ttname"><a href="namespaceripple_1_1test.html#a39b1794357565802f08397fa85fd67b5">ripple::test::equalHelper</a></div><div class="ttdeci">static bool equalHelper(Step const &amp;step, ripple::Book const &amp;book)</div><div class="ttdef"><b>Definition:</b> <a href="BookStep_8cpp_source.html#l01407">BookStep.cpp:1407</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a77c3eafc5e38b2506f7da7bb3b3f3280"><div class="ttname"><a href="namespaceripple_1_1test.html#a77c3eafc5e38b2506f7da7bb3b3f3280">ripple::test::bookStepEqual</a></div><div class="ttdeci">bool bookStepEqual(Step const &amp;step, ripple::Book const &amp;book)</div><div class="ttdef"><b>Definition:</b> <a href="BookStep_8cpp_source.html#l01415">BookStep.cpp:1415</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>
@@ -1681,7 +1686,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a2fca0f72cfacc04d15ad41d84ebf46fda4d9c2073afa3c2abb817dceb22c34de6"><div class="ttname"><a href="namespaceripple.html#a2fca0f72cfacc04d15ad41d84ebf46fda4d9c2073afa3c2abb817dceb22c34de6">ripple::StrandDirection::reverse</a></div><div class="ttdeci">@ reverse</div></div>
<div class="ttc" id="anamespaceripple_html_a2fca0f72cfacc04d15ad41d84ebf46fda965dbaac085fc891bfbbd4f9d145bbc8"><div class="ttname"><a href="namespaceripple.html#a2fca0f72cfacc04d15ad41d84ebf46fda965dbaac085fc891bfbbd4f9d145bbc8">ripple::StrandDirection::forward</a></div><div class="ttdeci">@ forward</div></div>
<div class="ttc" id="anamespaceripple_html_a308162f4d3c7b3c005ee6907ab576da1"><div class="ttname"><a href="namespaceripple.html#a308162f4d3c7b3c005ee6907ab576da1">ripple::getTradingFee</a></div><div class="ttdeci">std::uint16_t getTradingFee(ReadView const &amp;view, SLE const &amp;ammSle, AccountID const &amp;account)</div><div class="ttdoc">Get AMM trading fee for the given account.</div><div class="ttdef"><b>Definition:</b> <a href="AMMUtils_8cpp_source.html#l00178">AMMUtils.cpp:178</a></div></div>
<div class="ttc" id="anamespaceripple_html_a40a2f551909e4b709699f6d41292d374"><div class="ttname"><a href="namespaceripple.html#a40a2f551909e4b709699f6d41292d374">ripple::transferRate</a></div><div class="ttdeci">Rate transferRate(ReadView const &amp;view, AccountID const &amp;issuer)</div><div class="ttdoc">Returns IOU issuer transfer fee as Rate.</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l00652">View.cpp:652</a></div></div>
<div class="ttc" id="anamespaceripple_html_a40a2f551909e4b709699f6d41292d374"><div class="ttname"><a href="namespaceripple.html#a40a2f551909e4b709699f6d41292d374">ripple::transferRate</a></div><div class="ttdeci">Rate transferRate(ReadView const &amp;view, AccountID const &amp;issuer)</div><div class="ttdoc">Returns IOU issuer transfer fee as Rate.</div><div class="ttdef"><b>Definition:</b> <a href="View_8cpp_source.html#l00762">View.cpp:762</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5a3f3817fa4e1147bc1ea78c56aaf12632"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a3f3817fa4e1147bc1ea78c56aaf12632">ripple::lsfHighNoRipple</a></div><div class="ttdeci">@ lsfHighNoRipple</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00162">LedgerFormats.h:162</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5a44c3bc643086a0beb87e3aaeb544e6ad"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a44c3bc643086a0beb87e3aaeb544e6ad">ripple::lsfRequireAuth</a></div><div class="ttdeci">@ lsfRequireAuth</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00129">LedgerFormats.h:128</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5a503af0c7122f0c0f33e7ea4b7deee1d3"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5a503af0c7122f0c0f33e7ea4b7deee1d3">ripple::lsfLowNoRipple</a></div><div class="ttdeci">@ lsfLowNoRipple</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00161">LedgerFormats.h:161</a></div></div>
@@ -1689,7 +1694,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a4a9c7b33fef9015d6406302ef80b63c5af37617abe9ad741cd823746961f1fb3a"><div class="ttname"><a href="namespaceripple.html#a4a9c7b33fef9015d6406302ef80b63c5af37617abe9ad741cd823746961f1fb3a">ripple::lsfLowAuth</a></div><div class="ttdeci">@ lsfLowAuth</div><div class="ttdef"><b>Definition:</b> <a href="LedgerFormats_8h_source.html#l00159">LedgerFormats.h:159</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4ad5ac9da897292a28eea43d041c15a1"><div class="ttname"><a href="namespaceripple.html#a4ad5ac9da897292a28eea43d041c15a1">ripple::toSTAmount</a></div><div class="ttdeci">STAmount toSTAmount(IOUAmount const &amp;iou, Issue const &amp;iss)</div><div class="ttdef"><b>Definition:</b> <a href="AmountConversions_8h_source.html#l00032">AmountConversions.h:32</a></div></div>
<div class="ttc" id="anamespaceripple_html_a64db4e9a01a15836948b70c1689ef2ca"><div class="ttname"><a href="namespaceripple.html#a64db4e9a01a15836948b70c1689ef2ca">ripple::isDefaultPath</a></div><div class="ttdeci">static bool isDefaultPath(STPath const &amp;path)</div><div class="ttdef"><b>Definition:</b> <a href="Pathfinder_8cpp_source.html#l00458">Pathfinder.cpp:458</a></div></div>
<div class="ttc" id="anamespaceripple_html_a73cc988e7ba5d5ee0fd9db53740917ec"><div class="ttname"><a href="namespaceripple.html#a73cc988e7ba5d5ee0fd9db53740917ec">ripple::getRate</a></div><div class="ttdeci">std::uint64_t getRate(STAmount const &amp;offerOut, STAmount const &amp;offerIn)</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8cpp_source.html#l00483">STAmount.cpp:483</a></div></div>
<div class="ttc" id="anamespaceripple_html_a73cc988e7ba5d5ee0fd9db53740917ec"><div class="ttname"><a href="namespaceripple.html#a73cc988e7ba5d5ee0fd9db53740917ec">ripple::getRate</a></div><div class="ttdeci">std::uint64_t getRate(STAmount const &amp;offerOut, STAmount const &amp;offerIn)</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8cpp_source.html#l00486">STAmount.cpp:486</a></div></div>
<div class="ttc" id="anamespaceripple_html_a75cb21d7f1df42f2fdc8efddb79b63f4ad035d214edc31c72362d7efbdaba234c"><div class="ttname"><a href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ad035d214edc31c72362d7efbdaba234c">ripple::tefINTERNAL</a></div><div class="ttdeci">@ tefINTERNAL</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00173">TER.h:173</a></div></div>
<div class="ttc" id="anamespaceripple_html_a7c8945b5034bba5f9df719cff2503495"><div class="ttname"><a href="namespaceripple.html#a7c8945b5034bba5f9df719cff2503495">ripple::composed_quality</a></div><div class="ttdeci">Quality composed_quality(Quality const &amp;lhs, Quality const &amp;rhs)</div><div class="ttdef"><b>Definition:</b> <a href="Quality_8cpp_source.html#l00158">Quality.cpp:158</a></div></div>
<div class="ttc" id="anamespaceripple_html_a7cc64e12723fbc9606d85442a2569feda13b5bfe96f3e2fe411c9f66f4a582adf"><div class="ttname"><a href="namespaceripple.html#a7cc64e12723fbc9606d85442a2569feda13b5bfe96f3e2fe411c9f66f4a582adf">ripple::QualityDirection::in</a></div><div class="ttdeci">@ in</div></div>
@@ -1701,14 +1706,14 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a8c623abdba7fa97ffd148311056d401eafe5fe0415fc3e0ff4942d8454f363d2c"><div class="ttname"><a href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401eafe5fe0415fc3e0ff4942d8454f363d2c">ripple::DebtDirection::issues</a></div><div class="ttdeci">@ issues</div></div>
<div class="ttc" id="anamespaceripple_html_a8ccabfbbb65455ce08cdf7d024b768fe"><div class="ttname"><a href="namespaceripple.html#a8ccabfbbb65455ce08cdf7d024b768fe">ripple::make_BookStepIX</a></div><div class="ttdeci">std::pair&lt; TER, std::unique_ptr&lt; Step &gt; &gt; make_BookStepIX(StrandContext const &amp;ctx, Issue const &amp;in)</div><div class="ttdef"><b>Definition:</b> <a href="BookStep_8cpp_source.html#l01478">BookStep.cpp:1478</a></div></div>
<div class="ttc" id="anamespaceripple_html_a948ed7ae32de8014f0a5f421f36bedc1"><div class="ttname"><a href="namespaceripple.html#a948ed7ae32de8014f0a5f421f36bedc1">ripple::checkNear</a></div><div class="ttdeci">bool checkNear(IOUAmount const &amp;expected, IOUAmount const &amp;actual)</div><div class="ttdef"><b>Definition:</b> <a href="PaySteps_8cpp_source.html#l00034">PaySteps.cpp:34</a></div></div>
<div class="ttc" id="anamespaceripple_html_a9d22f4d38ac33f4258a0205f8e11d27e"><div class="ttname"><a href="namespaceripple.html#a9d22f4d38ac33f4258a0205f8e11d27e">ripple::WaiveTransferFee</a></div><div class="ttdeci">WaiveTransferFee</div><div class="ttdef"><b>Definition:</b> <a href="View_8h_source.html#l00042">View.h:42</a></div></div>
<div class="ttc" id="anamespaceripple_html_a9d22f4d38ac33f4258a0205f8e11d27e"><div class="ttname"><a href="namespaceripple.html#a9d22f4d38ac33f4258a0205f8e11d27e">ripple::WaiveTransferFee</a></div><div class="ttdeci">WaiveTransferFee</div><div class="ttdef"><b>Definition:</b> <a href="View_8h_source.html#l00044">View.h:44</a></div></div>
<div class="ttc" id="anamespaceripple_html_a9d22f4d38ac33f4258a0205f8e11d27ea93cba07454f06a4a960172bbd6e2a435"><div class="ttname"><a href="namespaceripple.html#a9d22f4d38ac33f4258a0205f8e11d27ea93cba07454f06a4a960172bbd6e2a435">ripple::WaiveTransferFee::Yes</a></div><div class="ttdeci">@ Yes</div></div>
<div class="ttc" id="anamespaceripple_html_a9d22f4d38ac33f4258a0205f8e11d27eabafd7322c6e97d25b6299b5d6fe8920b"><div class="ttname"><a href="namespaceripple.html#a9d22f4d38ac33f4258a0205f8e11d27eabafd7322c6e97d25b6299b5d6fe8920b">ripple::WaiveTransferFee::No</a></div><div class="ttdeci">@ No</div></div>
<div class="ttc" id="anamespaceripple_html_aa16a5e66c64d7a8b5c3a5123a2d21dfe"><div class="ttname"><a href="namespaceripple.html#aa16a5e66c64d7a8b5c3a5123a2d21dfe">ripple::limitStepOut</a></div><div class="ttdeci">static void limitStepOut(Offer const &amp;offer, TAmounts&lt; TIn, TOut &gt; &amp;ofrAmt, TAmounts&lt; TIn, TOut &gt; &amp;stpAmt, TOut &amp;ownerGives, std::uint32_t transferRateIn, std::uint32_t transferRateOut, TOut const &amp;limit)</div><div class="ttdef"><b>Definition:</b> <a href="BookStep_8cpp_source.html#l00691">BookStep.cpp:691</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38ca33d363e51ee15c8bd4f5d7c4e4518def"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca33d363e51ee15c8bd4f5d7c4e4518def">ripple::tecNO_ISSUER</a></div><div class="ttdeci">@ tecNO_ISSUER</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_aa298e929e02f59c2b05a30ee8805b38caa7dccd25363fdff0d363bd16553d1c84"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7dccd25363fdff0d363bd16553d1c84">ripple::tecINVARIANT_FAILED</a></div><div class="ttdeci">@ tecINVARIANT_FAILED</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00300">TER.h:300</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38ca33d363e51ee15c8bd4f5d7c4e4518def"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca33d363e51ee15c8bd4f5d7c4e4518def">ripple::tecNO_ISSUER</a></div><div class="ttdeci">@ tecNO_ISSUER</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00299">TER.h:299</a></div></div>
<div class="ttc" id="anamespaceripple_html_aa298e929e02f59c2b05a30ee8805b38caa7dccd25363fdff0d363bd16553d1c84"><div class="ttname"><a href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7dccd25363fdff0d363bd16553d1c84">ripple::tecINVARIANT_FAILED</a></div><div class="ttdeci">@ tecINVARIANT_FAILED</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_aa91457ff078f37f17e7bc3875d6c1752"><div class="ttname"><a href="namespaceripple.html#aa91457ff078f37f17e7bc3875d6c1752">ripple::make_BookStepHelper</a></div><div class="ttdeci">static std::pair&lt; TER, std::unique_ptr&lt; Step &gt; &gt; make_BookStepHelper(StrandContext const &amp;ctx, Issue const &amp;in, Issue const &amp;out)</div><div class="ttdef"><b>Definition:</b> <a href="BookStep_8cpp_source.html#l01447">BookStep.cpp:1447</a></div></div>
<div class="ttc" id="anamespaceripple_html_aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151"><div class="ttname"><a href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">ripple::tesSUCCESS</a></div><div class="ttdeci">@ tesSUCCESS</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00243">TER.h:242</a></div></div>
<div class="ttc" id="anamespaceripple_html_aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151"><div class="ttname"><a href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">ripple::tesSUCCESS</a></div><div class="ttdeci">@ tesSUCCESS</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00245">TER.h:244</a></div></div>
<div class="ttc" id="anamespaceripple_html_aac90126f05dbf5927af55dde5bb0933d"><div class="ttname"><a href="namespaceripple.html#aac90126f05dbf5927af55dde5bb0933d">ripple::make_BookStepII</a></div><div class="ttdeci">std::pair&lt; TER, std::unique_ptr&lt; Step &gt; &gt; make_BookStepII(StrandContext const &amp;ctx, Issue const &amp;in, Issue const &amp;out)</div><div class="ttdef"><b>Definition:</b> <a href="BookStep_8cpp_source.html#l01472">BookStep.cpp:1472</a></div></div>
<div class="ttc" id="anamespaceripple_html_aaed451aa78786841714de20f3f345f23"><div class="ttname"><a href="namespaceripple.html#aaed451aa78786841714de20f3f345f23">ripple::mulRatio</a></div><div class="ttdeci">IOUAmount mulRatio(IOUAmount const &amp;amt, std::uint32_t num, std::uint32_t den, bool roundUp)</div><div class="ttdef"><b>Definition:</b> <a href="IOUAmount_8cpp_source.html#l00190">IOUAmount.cpp:190</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>
@@ -1728,7 +1733,6 @@ $(function() {
<div class="ttc" id="astructripple_1_1BookStep_1_1Cache_html_a99dd72c5f6f213fabc063a6885a94a78"><div class="ttname"><a href="structripple_1_1BookStep_1_1Cache.html#a99dd72c5f6f213fabc063a6885a94a78">ripple::BookStep::Cache::Cache</a></div><div class="ttdeci">Cache(TIn const &amp;in_, TOut const &amp;out_)</div><div class="ttdef"><b>Definition:</b> <a href="BookStep_8cpp_source.html#l00078">BookStep.cpp:78</a></div></div>
<div class="ttc" id="astructripple_1_1BookStep_1_1Cache_html_aa88676770cdf9b05078d49a8bb3b3d45"><div class="ttname"><a href="structripple_1_1BookStep_1_1Cache.html#aa88676770cdf9b05078d49a8bb3b3d45">ripple::BookStep::Cache::out</a></div><div class="ttdeci">TOut out</div><div class="ttdef"><b>Definition:</b> <a href="BookStep_8cpp_source.html#l00076">BookStep.cpp:76</a></div></div>
<div class="ttc" id="astructripple_1_1EitherAmount_html"><div class="ttname"><a href="structripple_1_1EitherAmount.html">ripple::EitherAmount</a></div><div class="ttdef"><b>Definition:</b> <a href="AmountSpec_8h_source.html#l00059">AmountSpec.h:60</a></div></div>
<div class="ttc" id="astructripple_1_1Keylet_html_a482983062843a8682fcea76a309c73db"><div class="ttname"><a href="structripple_1_1Keylet.html#a482983062843a8682fcea76a309c73db">ripple::Keylet::key</a></div><div class="ttdeci">uint256 key</div><div class="ttdef"><b>Definition:</b> <a href="Keylet_8h_source.html#l00040">Keylet.h:40</a></div></div>
<div class="ttc" id="astructripple_1_1QualityFunction_1_1CLOBLikeTag_html"><div class="ttname"><a href="structripple_1_1QualityFunction_1_1CLOBLikeTag.html">ripple::QualityFunction::CLOBLikeTag</a></div><div class="ttdef"><b>Definition:</b> <a href="QualityFunction_8h_source.html#l00055">QualityFunction.h:56</a></div></div>
<div class="ttc" id="astructripple_1_1Rate_html_a59fd441d04e641347e6dc62c2301f671"><div class="ttname"><a href="structripple_1_1Rate.html#a59fd441d04e641347e6dc62c2301f671">ripple::Rate::value</a></div><div class="ttdeci">std::uint32_t value</div><div class="ttdef"><b>Definition:</b> <a href="Rate_8h_source.html#l00041">Rate.h:41</a></div></div>
<div class="ttc" id="astructripple_1_1StrandContext_html"><div class="ttname"><a href="structripple_1_1StrandContext.html">ripple::StrandContext</a></div><div class="ttdoc">Context needed to build Strand Steps and for error checking.</div><div class="ttdef"><b>Definition:</b> <a href="Steps_8h_source.html#l00527">Steps.h:528</a></div></div>