This commit is contained in:
bthomee
2025-10-30 11:50:47 -07:00
parent 260047224b
commit ee27f15137
7 changed files with 158 additions and 178 deletions

View File

@@ -1018,183 +1018,165 @@ $(document).ready(function() { init_codefold(0); });
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno"> 844</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno"> 845</span> <span class="keyword">auto</span> <span class="keyword">const</span> dir = this-&gt;debtDirection(v, <a class="code hl_enumvalue" href="namespaceripple.html#a2fca0f72cfacc04d15ad41d84ebf46fda965dbaac085fc891bfbbd4f9d145bbc8">StrandDirection::forward</a>);</div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno"> 846</span> </div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno"> 847</span> <span class="keywordflow">if</span> (!v.<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>(fixQualityUpperBound))</div>
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno"> 848</span> {</div>
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno"> 849</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> srcQOut = [&amp;]() -&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="l00850" name="l00850"></a><span class="lineno"> 850</span> <span class="keywordflow">if</span> (<a class="code hl_enumvalue" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401ea7e611dd9f79193db43a5e9983752239e">redeems</a>(prevStepDir) &amp;&amp; <a class="code hl_enumvalue" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401eafe5fe0415fc3e0ff4942d8454f363d2c">issues</a>(dir))</div>
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno"> 851</span> <span class="keywordflow">return</span> <a class="code hl_function" href="namespaceripple.html#a9ad0749604cda5299e9af18bf08cb830">transferRate</a>(v, src_).<a class="code hl_variable" href="structripple_1_1Rate.html#a59fd441d04e641347e6dc62c2301f671">value</a>;</div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno"> 852</span> <span class="keywordflow">return</span> QUALITY_ONE;</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="keyword">auto</span> dstQIn = <span class="keyword">static_cast&lt;</span>TDerived const*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;quality(</div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span> v, <a class="code hl_enumvalue" href="namespaceripple.html#a7cc64e12723fbc9606d85442a2569feda13b5bfe96f3e2fe411c9f66f4a582adf">QualityDirection::in</a>);</div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"> 856</span> </div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> <span class="keywordflow">if</span> (isLast_ &amp;&amp; dstQIn &gt; QUALITY_ONE)</div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> dstQIn = QUALITY_ONE;</div>
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"> 859</span> <a class="code hl_class" href="classripple_1_1Issue.html">Issue</a> <span class="keyword">const</span> iss{currency_, src_};</div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span> <span class="keywordflow">return</span> {</div>
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno"> 861</span> Quality(<a class="code hl_function" href="namespaceripple.html#a73cc988e7ba5d5ee0fd9db53740917ec">getRate</a>(<a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a>(iss, srcQOut), <a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a>(iss, dstQIn))),</div>
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno"> 862</span> dir};</div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno"> 863</span> }</div>
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno"> 864</span> </div>
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno"> 865</span> <span class="keyword">auto</span> <span class="keyword">const</span> [srcQOut, dstQIn] = <a class="code hl_enumvalue" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401ea7e611dd9f79193db43a5e9983752239e">redeems</a>(dir)</div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno"> 866</span> ? qualitiesSrcRedeems(v)</div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span> : qualitiesSrcIssues(v, prevStepDir);</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> <a class="code hl_class" href="classripple_1_1Issue.html">Issue</a> <span class="keyword">const</span> iss{currency_, src_};</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"> 870</span> <span class="comment">// Be careful not to switch the parameters to `getRate`. The</span></div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno"> 871</span> <span class="comment">// `getRate(offerOut, offerIn)` function is usually used for offers. It</span></div>
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"> 872</span> <span class="comment">// returns offerIn/offerOut. For a direct step, the rate is srcQOut/dstQIn</span></div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno"> 873</span> <span class="comment">// (Input*dstQIn/srcQOut = Output; So rate = srcQOut/dstQIn). Although the</span></div>
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno"> 874</span> <span class="comment">// first parameter is called `offerOut`, it should take the `dstQIn`</span></div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno"> 875</span> <span class="comment">// variable.</span></div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"> 876</span> <span class="keywordflow">return</span> {</div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span> Quality(<a class="code hl_function" href="namespaceripple.html#a73cc988e7ba5d5ee0fd9db53740917ec">getRate</a>(<a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a>(iss, dstQIn), <a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a>(iss, srcQOut))), dir};</div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span>}</div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno"> 847</span> <span class="keyword">auto</span> <span class="keyword">const</span> [srcQOut, dstQIn] = <a class="code hl_enumvalue" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401ea7e611dd9f79193db43a5e9983752239e">redeems</a>(dir)</div>
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno"> 848</span> ? qualitiesSrcRedeems(v)</div>
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno"> 849</span> : qualitiesSrcIssues(v, prevStepDir);</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> <a class="code hl_class" href="classripple_1_1Issue.html">Issue</a> <span class="keyword">const</span> iss{currency_, src_};</div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno"> 852</span> <span class="comment">// Be careful not to switch the parameters to `getRate`. The</span></div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno"> 853</span> <span class="comment">// `getRate(offerOut, offerIn)` function is usually used for offers. It</span></div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno"> 854</span> <span class="comment">// returns offerIn/offerOut. For a direct step, the rate is srcQOut/dstQIn</span></div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"> 855</span> <span class="comment">// (Input*dstQIn/srcQOut = Output; So rate = srcQOut/dstQIn). Although the</span></div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno"> 856</span> <span class="comment">// first parameter is called `offerOut`, it should take the `dstQIn`</span></div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno"> 857</span> <span class="comment">// variable.</span></div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno"> 858</span> <span class="keywordflow">return</span> {</div>
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno"> 859</span> Quality(<a class="code hl_function" href="namespaceripple.html#a73cc988e7ba5d5ee0fd9db53740917ec">getRate</a>(<a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a>(iss, dstQIn), <a class="code hl_class" href="classripple_1_1STAmount.html">STAmount</a>(iss, srcQOut))), dir};</div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno"> 860</span>}</div>
</div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> </div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span><span class="keyword">template</span> &lt;<span class="keyword">class</span> TDerived&gt;</div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span><a class="code hl_class" href="classripple_1_1TERSubset.html">TER</a></div>
<div class="foldopen" id="foldopen00882" data-start="{" data-end="}">
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"><a class="line" href="classripple_1_1DirectStepI.html#a65ac4c8d0a05df077a278d1e85732bd9"> 882</a></span><a class="code hl_function" href="classripple_1_1DirectStepI.html#a65ac4c8d0a05df077a278d1e85732bd9">DirectStepI&lt;TDerived&gt;::check</a>(<a class="code hl_struct" href="structripple_1_1StrandContext.html">StrandContext</a> <span class="keyword">const</span>&amp; ctx)<span class="keyword"> const</span></div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"> 883</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span> <span class="comment">// The following checks apply for both payments and offer crossing.</span></div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno"> 885</span> <span class="keywordflow">if</span> (!src_ || !dst_)</div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno"> 886</span> {</div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"> 887</span> JLOG(j_.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;DirectStepI: specified bad account.&quot;</span>;</div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"> 888</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a301b180a711f213c51de73aba9d28de5">temBAD_PATH</a>;</div>
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno"> 889</span> }</div>
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno"> 890</span> </div>
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno"> 891</span> <span class="keywordflow">if</span> (src_ == dst_)</div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"> 892</span> {</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span> JLOG(j_.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;DirectStepI: same src and dst.&quot;</span>;</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a301b180a711f213c51de73aba9d28de5">temBAD_PATH</a>;</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> </div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"> 897</span> <span class="keyword">auto</span> <span class="keyword">const</span> sleSrc = ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a0e059ee50baf7c62cfa1748b40f1092d">view</a>.<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>(src_));</div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</span> <span class="keywordflow">if</span> (!sleSrc)</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><span class="keyword">template</span> &lt;<span class="keyword">class</span> TDerived&gt;</div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno"> 863</span><a class="code hl_class" href="classripple_1_1TERSubset.html">TER</a></div>
<div class="foldopen" id="foldopen00864" data-start="{" data-end="}">
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno"><a class="line" href="classripple_1_1DirectStepI.html#a65ac4c8d0a05df077a278d1e85732bd9"> 864</a></span><a class="code hl_function" href="classripple_1_1DirectStepI.html#a65ac4c8d0a05df077a278d1e85732bd9">DirectStepI&lt;TDerived&gt;::check</a>(<a class="code hl_struct" href="structripple_1_1StrandContext.html">StrandContext</a> <span class="keyword">const</span>&amp; ctx)<span class="keyword"> const</span></div>
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno"> 865</span><span class="keyword"></span>{</div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno"> 866</span> <span class="comment">// The following checks apply for both payments and offer crossing.</span></div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"> 867</span> <span class="keywordflow">if</span> (!src_ || !dst_)</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> JLOG(j_.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;DirectStepI: specified bad account.&quot;</span>;</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno"> 870</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a301b180a711f213c51de73aba9d28de5">temBAD_PATH</a>;</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> </div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno"> 873</span> <span class="keywordflow">if</span> (src_ == dst_)</div>
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno"> 874</span> {</div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno"> 875</span> JLOG(j_.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>()) &lt;&lt; <span class="stringliteral">&quot;DirectStepI: same src and dst.&quot;</span>;</div>
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"> 876</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a301b180a711f213c51de73aba9d28de5">temBAD_PATH</a>;</div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"> 877</span> }</div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno"> 878</span> </div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno"> 879</span> <span class="keyword">auto</span> <span class="keyword">const</span> sleSrc = ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a0e059ee50baf7c62cfa1748b40f1092d">view</a>.<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>(src_));</div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno"> 880</span> <span class="keywordflow">if</span> (!sleSrc)</div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno"> 881</span> {</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"> 882</span> JLOG(j_.<a class="code hl_function" href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">warn</a>())</div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno"> 883</span> &lt;&lt; <span class="stringliteral">&quot;DirectStepI: can&#39;t receive IOUs from non-existent issuer: &quot;</span></div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno"> 884</span> &lt;&lt; src_;</div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno"> 885</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162faa7ab9460c6755719dd1a4e74b83f34c4">terNO_ACCOUNT</a>;</div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno"> 886</span> }</div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"> 887</span> </div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno"> 888</span> <span class="comment">// pure issue/redeem can&#39;t be frozen</span></div>
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno"> 889</span> <span class="keywordflow">if</span> (!(ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a92f0bbf8a41c47dc2adaf095ee3d38c0">isLast</a> &amp;&amp; ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a8348b69ccb12d4f42adcff1c747671c2">isFirst</a>))</div>
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno"> 890</span> {</div>
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno"> 891</span> <span class="keyword">auto</span> <span class="keyword">const</span> ter = <a class="code hl_function" href="namespaceripple.html#a369f056a78d8b15df5bf1052867947cb">checkFreeze</a>(ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a0e059ee50baf7c62cfa1748b40f1092d">view</a>, src_, dst_, currency_);</div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"> 892</span> <span class="keywordflow">if</span> (ter != <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno"> 893</span> <span class="keywordflow">return</span> ter;</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno"> 894</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="comment">// If previous step was a direct step then we need to check</span></div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"> 897</span> <span class="comment">// no ripple flags.</span></div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno"> 898</span> <span class="keywordflow">if</span> (ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a20f852451e14c6cc04c3fbb5a49c41f6">prevStep</a>)</div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno"> 899</span> {</div>
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"> 900</span> JLOG(j_.<a class="code hl_function" href="classbeast_1_1Journal.html#ad8fefe3e8ad583e1ed1bf02094ac3d8f">warn</a>())</div>
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno"> 901</span> &lt;&lt; <span class="stringliteral">&quot;DirectStepI: can&#39;t receive IOUs from non-existent issuer: &quot;</span></div>
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"> 902</span> &lt;&lt; src_;</div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"> 903</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162faa7ab9460c6755719dd1a4e74b83f34c4">terNO_ACCOUNT</a>;</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno"> 904</span> }</div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno"> 905</span> </div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"> 906</span> <span class="comment">// pure issue/redeem can&#39;t be frozen</span></div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"> 907</span> <span class="keywordflow">if</span> (!(ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a92f0bbf8a41c47dc2adaf095ee3d38c0">isLast</a> &amp;&amp; ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a8348b69ccb12d4f42adcff1c747671c2">isFirst</a>))</div>
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno"> 900</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> prevSrc = ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a20f852451e14c6cc04c3fbb5a49c41f6">prevStep</a>-&gt;<a class="code hl_function" href="classripple_1_1Step.html#af7cae32307ec25a30fcf5a05407f9e8d">directStepSrcAcct</a>())</div>
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno"> 901</span> {</div>
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"> 902</span> <span class="keyword">auto</span> <span class="keyword">const</span> ter =</div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno"> 903</span> <a class="code hl_function" href="namespaceripple.html#a737b0d5ba5e659ec4fb340a027bb4147">checkNoRipple</a>(ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a0e059ee50baf7c62cfa1748b40f1092d">view</a>, *prevSrc, src_, dst_, currency_, j_);</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno"> 904</span> <span class="keywordflow">if</span> (ter != <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno"> 905</span> <span class="keywordflow">return</span> ter;</div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno"> 906</span> }</div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"> 907</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> ter = <a class="code hl_function" href="namespaceripple.html#a369f056a78d8b15df5bf1052867947cb">checkFreeze</a>(ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a0e059ee50baf7c62cfa1748b40f1092d">view</a>, src_, dst_, currency_);</div>
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno"> 910</span> <span class="keywordflow">if</span> (ter != <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span> <span class="keywordflow">return</span> ter;</div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> }</div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"> 913</span> </div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"> 914</span> <span class="comment">// If previous step was a direct step then we need to check</span></div>
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno"> 915</span> <span class="comment">// no ripple flags.</span></div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"> 916</span> <span class="keywordflow">if</span> (ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a20f852451e14c6cc04c3fbb5a49c41f6">prevStep</a>)</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> <span class="keywordflow">if</span> (<span class="keyword">auto</span> prevSrc = ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a20f852451e14c6cc04c3fbb5a49c41f6">prevStep</a>-&gt;<a class="code hl_function" href="classripple_1_1Step.html#af7cae32307ec25a30fcf5a05407f9e8d">directStepSrcAcct</a>())</div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno"> 919</span> {</div>
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno"> 920</span> <span class="keyword">auto</span> <span class="keyword">const</span> ter =</div>
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno"> 921</span> <a class="code hl_function" href="namespaceripple.html#a737b0d5ba5e659ec4fb340a027bb4147">checkNoRipple</a>(ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a0e059ee50baf7c62cfa1748b40f1092d">view</a>, *prevSrc, src_, dst_, currency_, j_);</div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"> 922</span> <span class="keywordflow">if</span> (ter != <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"> 923</span> <span class="keywordflow">return</span> ter;</div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno"> 924</span> }</div>
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"> 925</span> }</div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno"> 926</span> {</div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"> 927</span> <a class="code hl_class" href="classripple_1_1Issue.html">Issue</a> <span class="keyword">const</span> srcIssue{currency_, src_};</div>
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno"> 928</span> <a class="code hl_class" href="classripple_1_1Issue.html">Issue</a> <span class="keyword">const</span> dstIssue{currency_, dst_};</div>
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno"> 929</span> </div>
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno"> 930</span> <span class="keywordflow">if</span> (ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a0bef921eb9b057dff6fa57d4bef62025">seenBookOuts</a>.count(srcIssue))</div>
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno"> 931</span> {</div>
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno"> 932</span> <span class="keywordflow">if</span> (!ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a20f852451e14c6cc04c3fbb5a49c41f6">prevStep</a>)</div>
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno"> 933</span> {</div>
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno"> 934</span> <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno"> 935</span> UNREACHABLE(</div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno"> 936</span> <span class="stringliteral">&quot;ripple::DirectStepI::check : prev seen book without a &quot;</span></div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno"> 937</span> <span class="stringliteral">&quot;prev step&quot;</span>);</div>
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno"> 938</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a12457d1044fb018f478405504184dc79">temBAD_PATH_LOOP</a>;</div>
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno"> 939</span> <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno"> 909</span> <a class="code hl_class" href="classripple_1_1Issue.html">Issue</a> <span class="keyword">const</span> srcIssue{currency_, src_};</div>
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno"> 910</span> <a class="code hl_class" href="classripple_1_1Issue.html">Issue</a> <span class="keyword">const</span> dstIssue{currency_, dst_};</div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno"> 911</span> </div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"> 912</span> <span class="keywordflow">if</span> (ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a0bef921eb9b057dff6fa57d4bef62025">seenBookOuts</a>.count(srcIssue))</div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno"> 913</span> {</div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno"> 914</span> <span class="keywordflow">if</span> (!ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a20f852451e14c6cc04c3fbb5a49c41f6">prevStep</a>)</div>
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno"> 915</span> {</div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno"> 916</span> <span class="comment">// LCOV_EXCL_START</span></div>
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno"> 917</span> UNREACHABLE(</div>
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno"> 918</span> <span class="stringliteral">&quot;ripple::DirectStepI::check : prev seen book without a &quot;</span></div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno"> 919</span> <span class="stringliteral">&quot;prev step&quot;</span>);</div>
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno"> 920</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a12457d1044fb018f478405504184dc79">temBAD_PATH_LOOP</a>;</div>
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno"> 921</span> <span class="comment">// LCOV_EXCL_STOP</span></div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"> 922</span> }</div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno"> 923</span> </div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno"> 924</span> <span class="comment">// This is OK if the previous step is a book step that outputs this</span></div>
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno"> 925</span> <span class="comment">// issue</span></div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno"> 926</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> book = ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a20f852451e14c6cc04c3fbb5a49c41f6">prevStep</a>-&gt;<a class="code hl_function" href="classripple_1_1Step.html#a9d080cfd47f863e9217fb91d25783e23">bookStepBook</a>())</div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"> 927</span> {</div>
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno"> 928</span> <span class="keywordflow">if</span> (book-&gt;out != srcIssue)</div>
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno"> 929</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a12457d1044fb018f478405504184dc79">temBAD_PATH_LOOP</a>;</div>
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno"> 930</span> }</div>
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno"> 931</span> }</div>
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno"> 932</span> </div>
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno"> 933</span> <span class="keywordflow">if</span> (!ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a1f64547d1189ede6fef202ada9dc0f2b">seenDirectIssues</a>[0].insert(srcIssue).second ||</div>
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno"> 934</span> !ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a1f64547d1189ede6fef202ada9dc0f2b">seenDirectIssues</a>[1].insert(dstIssue).second)</div>
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno"> 935</span> {</div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno"> 936</span> JLOG(j_.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>())</div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno"> 937</span> &lt;&lt; <span class="stringliteral">&quot;DirectStepI: loop detected: Index: &quot;</span> &lt;&lt; ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a09258816e4b43be8130db55952317cf0">strandSize</a></div>
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno"> 938</span> &lt;&lt; <span class="charliteral">&#39; &#39;</span> &lt;&lt; *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno"> 939</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a12457d1044fb018f478405504184dc79">temBAD_PATH_LOOP</a>;</div>
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno"> 940</span> }</div>
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno"> 941</span> </div>
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno"> 942</span> <span class="comment">// This is OK if the previous step is a book step that outputs this</span></div>
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno"> 943</span> <span class="comment">// issue</span></div>
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno"> 944</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> book = ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a20f852451e14c6cc04c3fbb5a49c41f6">prevStep</a>-&gt;<a class="code hl_function" href="classripple_1_1Step.html#a9d080cfd47f863e9217fb91d25783e23">bookStepBook</a>())</div>
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno"> 945</span> {</div>
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno"> 946</span> <span class="keywordflow">if</span> (book-&gt;out != srcIssue)</div>
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno"> 947</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a12457d1044fb018f478405504184dc79">temBAD_PATH_LOOP</a>;</div>
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno"> 948</span> }</div>
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno"> 949</span> }</div>
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno"> 950</span> </div>
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno"> 951</span> <span class="keywordflow">if</span> (!ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a1f64547d1189ede6fef202ada9dc0f2b">seenDirectIssues</a>[0].insert(srcIssue).second ||</div>
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno"> 952</span> !ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a1f64547d1189ede6fef202ada9dc0f2b">seenDirectIssues</a>[1].insert(dstIssue).second)</div>
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno"> 953</span> {</div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno"> 954</span> JLOG(j_.<a class="code hl_function" href="classbeast_1_1Journal.html#a556228cb60bcf405c225d3f64b7b01ae">debug</a>())</div>
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno"> 955</span> &lt;&lt; <span class="stringliteral">&quot;DirectStepI: loop detected: Index: &quot;</span> &lt;&lt; ctx.<a class="code hl_variable" href="structripple_1_1StrandContext.html#a09258816e4b43be8130db55952317cf0">strandSize</a></div>
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno"> 956</span> &lt;&lt; <span class="charliteral">&#39; &#39;</span> &lt;&lt; *<span class="keyword">this</span>;</div>
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno"> 957</span> <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a12457d1044fb018f478405504184dc79">temBAD_PATH_LOOP</a>;</div>
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno"> 958</span> }</div>
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno"> 959</span> }</div>
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno"> 960</span> </div>
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno"> 961</span> <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>TDerived const*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;check(ctx, sleSrc);</div>
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno"> 962</span>}</div>
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno"> 941</span> }</div>
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno"> 942</span> </div>
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno"> 943</span> <span class="keywordflow">return</span> <span class="keyword">static_cast&lt;</span>TDerived const*<span class="keyword">&gt;</span>(<span class="keyword">this</span>)-&gt;check(ctx, sleSrc);</div>
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno"> 944</span>}</div>
</div>
</div>
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno"> 963</span> </div>
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno"> 964</span><span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno"> 945</span> </div>
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno"> 946</span><span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno"> 947</span> </div>
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno"> 948</span><span class="keyword">namespace </span>test {</div>
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno"> 949</span><span class="comment">// Needed for testing</span></div>
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno"> 950</span><span class="keywordtype">bool</span></div>
<div class="foldopen" id="foldopen00951" data-start="{" data-end="}">
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#aeb0719dfd10aae20370de6c6fc137a65"> 951</a></span><a class="code hl_function" href="namespaceripple_1_1test.html#aeb0719dfd10aae20370de6c6fc137a65">directStepEqual</a>(</div>
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno"> 952</span> <a class="code hl_class" href="classripple_1_1Step.html">Step</a> <span class="keyword">const</span>&amp; step,</div>
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno"> 953</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; src,</div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno"> 954</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; dst,</div>
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno"> 955</span> <a class="code hl_class" href="classripple_1_1base__uint.html">Currency</a> <span class="keyword">const</span>&amp; currency)</div>
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno"> 956</span>{</div>
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno"> 957</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> ds = <span class="keyword">dynamic_cast&lt;</span><a class="code hl_class" href="classripple_1_1DirectStepI.html">DirectStepI&lt;DirectIPaymentStep&gt;</a> const*<span class="keyword">&gt;</span>(&amp;step))</div>
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno"> 958</span> {</div>
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno"> 959</span> <span class="keywordflow">return</span> ds-&gt;src() == src &amp;&amp; ds-&gt;dst() == dst &amp;&amp;</div>
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno"> 960</span> ds-&gt;currency() == currency;</div>
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno"> 961</span> }</div>
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno"> 962</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno"> 963</span>}</div>
</div>
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno"> 964</span>} <span class="comment">// namespace test</span></div>
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno"> 965</span> </div>
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno"> 966</span><span class="keyword">namespace </span>test {</div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno"> 967</span><span class="comment">// Needed for testing</span></div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno"> 968</span><span class="keywordtype">bool</span></div>
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno"> 966</span><span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno"> 967</span> </div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno"> 968</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="foldopen" id="foldopen00969" data-start="{" data-end="}">
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno"><a class="line" href="namespaceripple_1_1test.html#aeb0719dfd10aae20370de6c6fc137a65"> 969</a></span><a class="code hl_function" href="namespaceripple_1_1test.html#aeb0719dfd10aae20370de6c6fc137a65">directStepEqual</a>(</div>
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno"> 970</span> <a class="code hl_class" href="classripple_1_1Step.html">Step</a> <span class="keyword">const</span>&amp; step,</div>
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno"><a class="line" href="namespaceripple.html#ab9034e2ea3c8d81bf0e36f6dc2074108"> 969</a></span><a class="code hl_function" href="namespaceripple.html#ab9034e2ea3c8d81bf0e36f6dc2074108">make_DirectStepI</a>(</div>
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno"> 970</span> <a class="code hl_struct" href="structripple_1_1StrandContext.html">StrandContext</a> <span class="keyword">const</span>&amp; ctx,</div>
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno"> 971</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; src,</div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno"> 972</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; dst,</div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"> 973</span> <a class="code hl_class" href="classripple_1_1base__uint.html">Currency</a> <span class="keyword">const</span>&amp; currency)</div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"> 973</span> <a class="code hl_class" href="classripple_1_1base__uint.html">Currency</a> <span class="keyword">const</span>&amp; c)</div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno"> 974</span>{</div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno"> 975</span> <span class="keywordflow">if</span> (<span class="keyword">auto</span> ds = <span class="keyword">dynamic_cast&lt;</span><a class="code hl_class" href="classripple_1_1DirectStepI.html">DirectStepI&lt;DirectIPaymentStep&gt;</a> const*<span class="keyword">&gt;</span>(&amp;step))</div>
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno"> 976</span> {</div>
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno"> 977</span> <span class="keywordflow">return</span> ds-&gt;src() == src &amp;&amp; ds-&gt;dst() == dst &amp;&amp;</div>
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno"> 978</span> ds-&gt;currency() == currency;</div>
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno"> 979</span> }</div>
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno"> 980</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno"> 981</span>}</div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno"> 975</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="l00976" name="l00976"></a><span class="lineno"> 976</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="l00977" name="l00977"></a><span class="lineno"> 977</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="l00978" name="l00978"></a><span class="lineno"> 978</span> {</div>
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno"> 979</span> <span class="keyword">auto</span> offerCrossingStep =</div>
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno"> 980</span> <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_unique&lt;DirectIOfferCrossingStep&gt;</a>(ctx, src, dst, c);</div>
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno"> 981</span> ter = offerCrossingStep-&gt;check(ctx);</div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"> 982</span> r = std::move(offerCrossingStep);</div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno"> 983</span> }</div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"> 984</span> <span class="keywordflow">else</span> <span class="comment">// payment</span></div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"> 985</span> {</div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"> 986</span> <span class="keyword">auto</span> paymentStep =</div>
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno"> 987</span> <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_unique&lt;DirectIPaymentStep&gt;</a>(ctx, src, dst, c);</div>
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno"> 988</span> ter = paymentStep-&gt;check(ctx);</div>
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"> 989</span> r = std::move(paymentStep);</div>
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno"> 990</span> }</div>
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"> 991</span> <span class="keywordflow">if</span> (ter != <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"> 992</span> <span class="keywordflow">return</span> {ter, <span class="keyword">nullptr</span>};</div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"> 993</span> </div>
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno"> 994</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="l00995" name="l00995"></a><span class="lineno"> 995</span>}</div>
</div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno"> 982</span>} <span class="comment">// namespace test</span></div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno"> 983</span> </div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno"> 984</span><span class="comment">//------------------------------------------------------------------------------</span></div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"> 985</span> </div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno"> 986</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="foldopen" id="foldopen00987" data-start="{" data-end="}">
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno"><a class="line" href="namespaceripple.html#ab9034e2ea3c8d81bf0e36f6dc2074108"> 987</a></span><a class="code hl_function" href="namespaceripple.html#ab9034e2ea3c8d81bf0e36f6dc2074108">make_DirectStepI</a>(</div>
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno"> 988</span> <a class="code hl_struct" href="structripple_1_1StrandContext.html">StrandContext</a> <span class="keyword">const</span>&amp; ctx,</div>
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno"> 989</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; src,</div>
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno"> 990</span> <a class="code hl_class" href="classripple_1_1base__uint.html">AccountID</a> <span class="keyword">const</span>&amp; dst,</div>
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"> 991</span> <a class="code hl_class" href="classripple_1_1base__uint.html">Currency</a> <span class="keyword">const</span>&amp; c)</div>
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno"> 992</span>{</div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno"> 993</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="l00994" name="l00994"></a><span class="lineno"> 994</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="l00995" name="l00995"></a><span class="lineno"> 995</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="l00996" name="l00996"></a><span class="lineno"> 996</span> {</div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"> 997</span> <span class="keyword">auto</span> offerCrossingStep =</div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno"> 998</span> <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_unique&lt;DirectIOfferCrossingStep&gt;</a>(ctx, src, dst, c);</div>
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno"> 999</span> ter = offerCrossingStep-&gt;check(ctx);</div>
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span> r = std::move(offerCrossingStep);</div>
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span> }</div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span> <span class="keywordflow">else</span> <span class="comment">// payment</span></div>
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span> {</div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span> <span class="keyword">auto</span> paymentStep =</div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span> <a class="code hl_variableRef" href="http://en.cppreference.com/w/cpp/types/is_same.html">std::make_unique&lt;DirectIPaymentStep&gt;</a>(ctx, src, dst, c);</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> ter = paymentStep-&gt;check(ctx);</div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> r = std::move(paymentStep);</div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span> }</div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span> <span class="keywordflow">if</span> (ter != <a class="code hl_enumvalue" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span> <span class="keywordflow">return</span> {ter, <span class="keyword">nullptr</span>};</div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span> </div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</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="l01013" name="l01013"></a><span class="lineno"> 1013</span>}</div>
</div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> </div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span>} <span class="comment">// namespace ripple</span></div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno"> 996</span> </div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"> 997</span>} <span class="comment">// namespace ripple</span></div>
</div>
</div>
</div>
@@ -1239,7 +1221,7 @@ $(document).ready(function() { init_codefold(0); });
<div class="ttc" id="aclassripple_1_1DirectStepI_html_a54ef46259a75c5f6b20a7bbb1846ffa1"><div class="ttname"><a href="classripple_1_1DirectStepI.html#a54ef46259a75c5f6b20a7bbb1846ffa1">ripple::DirectStepI::qualitiesSrcIssues</a></div><div class="ttdeci">std::pair&lt; std::uint32_t, std::uint32_t &gt; qualitiesSrcIssues(ReadView const &amp;sb, DebtDirection prevStepDebtDirection) const</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00785">DirectStep.cpp:785</a></div></div>
<div class="ttc" id="aclassripple_1_1DirectStepI_html_a592ddeaeb2ad7b0d7bbf4b1d31cdbe00"><div class="ttname"><a href="classripple_1_1DirectStepI.html#a592ddeaeb2ad7b0d7bbf4b1d31cdbe00">ripple::DirectStepI::setCacheLimiting</a></div><div class="ttdeci">void setCacheLimiting(IOUAmount const &amp;fwdIn, IOUAmount const &amp;fwdSrcToDst, IOUAmount const &amp;fwdOut, DebtDirection srcDebtDir)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00592">DirectStep.cpp:592</a></div></div>
<div class="ttc" id="aclassripple_1_1DirectStepI_html_a64dac2bde0ecce5aa2e4e8b0ca4451c1"><div class="ttname"><a href="classripple_1_1DirectStepI.html#a64dac2bde0ecce5aa2e4e8b0ca4451c1">ripple::DirectStepI::lineQualityIn</a></div><div class="ttdeci">std::uint32_t lineQualityIn(ReadView const &amp;v) const override</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00833">DirectStep.cpp:833</a></div></div>
<div class="ttc" id="aclassripple_1_1DirectStepI_html_a65ac4c8d0a05df077a278d1e85732bd9"><div class="ttname"><a href="classripple_1_1DirectStepI.html#a65ac4c8d0a05df077a278d1e85732bd9">ripple::DirectStepI::check</a></div><div class="ttdeci">TER check(StrandContext const &amp;ctx) const</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00882">DirectStep.cpp:882</a></div></div>
<div class="ttc" id="aclassripple_1_1DirectStepI_html_a65ac4c8d0a05df077a278d1e85732bd9"><div class="ttname"><a href="classripple_1_1DirectStepI.html#a65ac4c8d0a05df077a278d1e85732bd9">ripple::DirectStepI::check</a></div><div class="ttdeci">TER check(StrandContext const &amp;ctx) const</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00864">DirectStep.cpp:864</a></div></div>
<div class="ttc" id="aclassripple_1_1DirectStepI_html_a67eb405e763ec8c66e36e443180be81e"><div class="ttname"><a href="classripple_1_1DirectStepI.html#a67eb405e763ec8c66e36e443180be81e">ripple::DirectStepI::prevStep_</a></div><div class="ttdeci">Step const *const prevStep_</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00046">DirectStep.cpp:46</a></div></div>
<div class="ttc" id="aclassripple_1_1DirectStepI_html_a6e57ba09d98e0324114c774efcd81eed"><div class="ttname"><a href="classripple_1_1DirectStepI.html#a6e57ba09d98e0324114c774efcd81eed">ripple::DirectStepI::DirectStepI</a></div><div class="ttdeci">DirectStepI(StrandContext const &amp;ctx, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;c)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00093">DirectStep.cpp:93</a></div></div>
<div class="ttc" id="aclassripple_1_1DirectStepI_html_a83d83286ff3e487db174af1ce176a22c"><div class="ttname"><a href="classripple_1_1DirectStepI.html#a83d83286ff3e487db174af1ce176a22c">ripple::DirectStepI::src</a></div><div class="ttdeci">AccountID const &amp; src() const</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00108">DirectStep.cpp:108</a></div></div>
@@ -1266,8 +1248,6 @@ $(document).ready(function() { init_codefold(0); });
<div class="ttc" id="aclassripple_1_1PaymentSandbox_html"><div class="ttname"><a href="classripple_1_1PaymentSandbox.html">ripple::PaymentSandbox</a></div><div class="ttdoc">A wrapper which makes credits unavailable to balances.</div><div class="ttdef"><b>Definition</b> <a href="PaymentSandbox_8h_source.html#l00112">PaymentSandbox.h:113</a></div></div>
<div class="ttc" id="aclassripple_1_1ReadView_html"><div class="ttname"><a href="classripple_1_1ReadView.html">ripple::ReadView</a></div><div class="ttdoc">A view into a ledger.</div><div class="ttdef"><b>Definition</b> <a href="ReadView_8h_source.html#l00050">ReadView.h:51</a></div></div>
<div class="ttc" id="aclassripple_1_1ReadView_html_a0583a050ea7799ba331f6222a905f304"><div class="ttname"><a href="classripple_1_1ReadView.html#a0583a050ea7799ba331f6222a905f304">ripple::ReadView::read</a></div><div class="ttdeci">virtual std::shared_ptr&lt; SLE const &gt; read(Keylet const &amp;k) const =0</div><div class="ttdoc">Return the state item associated with a key.</div></div>
<div class="ttc" id="aclassripple_1_1ReadView_html_aceb3d74acaae18b238022337e5f250ce"><div class="ttname"><a href="classripple_1_1ReadView.html#aceb3d74acaae18b238022337e5f250ce">ripple::ReadView::rules</a></div><div class="ttdeci">virtual Rules const &amp; rules() const =0</div><div class="ttdoc">Returns the tx processing rules.</div></div>
<div class="ttc" id="aclassripple_1_1Rules_html_a1a8388a2b9588aa9446ece92a88e0dd2"><div class="ttname"><a href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">ripple::Rules::enabled</a></div><div class="ttdeci">bool enabled(uint256 const &amp;feature) const</div><div class="ttdoc">Returns true if a feature is enabled.</div><div class="ttdef"><b>Definition</b> <a href="Rules_8cpp_source.html#l00130">Rules.cpp:130</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html"><div class="ttname"><a href="classripple_1_1STAmount.html">ripple::STAmount</a></div><div class="ttdef"><b>Definition</b> <a href="STAmount_8h_source.html#l00049">STAmount.h:50</a></div></div>
<div class="ttc" id="aclassripple_1_1Step_html"><div class="ttname"><a href="classripple_1_1Step.html">ripple::Step</a></div><div class="ttdoc">A step in a payment path.</div><div class="ttdef"><b>Definition</b> <a href="Steps_8h_source.html#l00085">Steps.h:86</a></div></div>
<div class="ttc" id="aclassripple_1_1Step_html_a9d080cfd47f863e9217fb91d25783e23"><div class="ttname"><a href="classripple_1_1Step.html#a9d080cfd47f863e9217fb91d25783e23">ripple::Step::bookStepBook</a></div><div class="ttdeci">virtual std::optional&lt; Book &gt; bookStepBook() const</div><div class="ttdoc">If this step is a BookStep, return the book.</div><div class="ttdef"><b>Definition</b> <a href="Steps_8h_source.html#l00224">Steps.h:224</a></div></div>
@@ -1279,7 +1259,7 @@ $(document).ready(function() { init_codefold(0); });
<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_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#l00244">Indexes.cpp:244</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#l00184">Indexes.cpp:184</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_aeb0719dfd10aae20370de6c6fc137a65"><div class="ttname"><a href="namespaceripple_1_1test.html#aeb0719dfd10aae20370de6c6fc137a65">ripple::test::directStepEqual</a></div><div class="ttdeci">bool directStepEqual(Step const &amp;step, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;currency)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00969">DirectStep.cpp:969</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_aeb0719dfd10aae20370de6c6fc137a65"><div class="ttname"><a href="namespaceripple_1_1test.html#aeb0719dfd10aae20370de6c6fc137a65">ripple::test::directStepEqual</a></div><div class="ttdeci">bool directStepEqual(Step const &amp;step, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;currency)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00951">DirectStep.cpp:951</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#l00025">algorithm.h:25</a></div></div>
<div class="ttc" id="anamespaceripple_html_a17a9a9b903b66e49f5413d82ce79f085a91e3c4f8089025c7ecf66dd62b822d90"><div class="ttname"><a href="namespaceripple.html#a17a9a9b903b66e49f5413d82ce79f085a91e3c4f8089025c7ecf66dd62b822d90">ripple::fhIGNORE_FREEZE</a></div><div class="ttdeci">@ fhIGNORE_FREEZE</div><div class="ttdef"><b>Definition</b> <a href="View_8h_source.html#l00077">View.h:77</a></div></div>
<div class="ttc" id="anamespaceripple_html_a2fca0f72cfacc04d15ad41d84ebf46fd"><div class="ttname"><a href="namespaceripple.html#a2fca0f72cfacc04d15ad41d84ebf46fd">ripple::StrandDirection</a></div><div class="ttdeci">StrandDirection</div><div class="ttdef"><b>Definition</b> <a href="Steps_8h_source.html#l00044">Steps.h:44</a></div></div>
@@ -1311,7 +1291,7 @@ $(document).ready(function() { init_codefold(0); });
<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_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_ab001e43f50e612727b1ce5985a2770d6"><div class="ttname"><a href="namespaceripple.html#ab001e43f50e612727b1ce5985a2770d6">ripple::accountHolds</a></div><div class="ttdeci">STAmount accountHolds(ReadView const &amp;view, AccountID const &amp;account, Currency const &amp;currency, AccountID const &amp;issuer, FreezeHandling zeroIfFrozen, beast::Journal j)</div><div class="ttdef"><b>Definition</b> <a href="View_8cpp_source.html#l00387">View.cpp:387</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab9034e2ea3c8d81bf0e36f6dc2074108"><div class="ttname"><a href="namespaceripple.html#ab9034e2ea3c8d81bf0e36f6dc2074108">ripple::make_DirectStepI</a></div><div class="ttdeci">std::pair&lt; TER, std::unique_ptr&lt; Step &gt; &gt; make_DirectStepI(StrandContext const &amp;ctx, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;c)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00987">DirectStep.cpp:987</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab9034e2ea3c8d81bf0e36f6dc2074108"><div class="ttname"><a href="namespaceripple.html#ab9034e2ea3c8d81bf0e36f6dc2074108">ripple::make_DirectStepI</a></div><div class="ttdeci">std::pair&lt; TER, std::unique_ptr&lt; Step &gt; &gt; make_DirectStepI(StrandContext const &amp;ctx, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;c)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00969">DirectStep.cpp:969</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac124fe6744b7fe887dec949b56b16d50"><div class="ttname"><a href="namespaceripple.html#ac124fe6744b7fe887dec949b56b16d50">ripple::to_string</a></div><div class="ttdeci">std::string to_string(base_uint&lt; Bits, Tag &gt; const &amp;a)</div><div class="ttdef"><b>Definition</b> <a href="base__uint_8h_source.html#l00630">base_uint.h:630</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac8f0e665814bff445a0a352ae56790c9"><div class="ttname"><a href="namespaceripple.html#ac8f0e665814bff445a0a352ae56790c9">ripple::creditLimit2</a></div><div class="ttdeci">IOUAmount creditLimit2(ReadView const &amp;v, AccountID const &amp;acc, AccountID const &amp;iss, Currency const &amp;cur)</div><div class="ttdef"><b>Definition</b> <a href="Credit_8cpp_source.html#l00055">Credit.cpp:55</a></div></div>
<div class="ttc" id="anamespaceripple_html_adebe4d783be9c979e67fdbb2bc27162faa7ab9460c6755719dd1a4e74b83f34c4"><div class="ttname"><a href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162faa7ab9460c6755719dd1a4e74b83f34c4">ripple::terNO_ACCOUNT</a></div><div class="ttdeci">@ terNO_ACCOUNT</div><div class="ttdef"><b>Definition</b> <a href="TER_8h_source.html#l00217">TER.h:217</a></div></div>

View File

@@ -812,7 +812,7 @@ $(document).ready(function() { init_codefold(0); });
<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_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#l01454">BookStep.cpp:1454</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab9034e2ea3c8d81bf0e36f6dc2074108"><div class="ttname"><a href="namespaceripple.html#ab9034e2ea3c8d81bf0e36f6dc2074108">ripple::make_DirectStepI</a></div><div class="ttdeci">std::pair&lt; TER, std::unique_ptr&lt; Step &gt; &gt; make_DirectStepI(StrandContext const &amp;ctx, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;c)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00987">DirectStep.cpp:987</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab9034e2ea3c8d81bf0e36f6dc2074108"><div class="ttname"><a href="namespaceripple.html#ab9034e2ea3c8d81bf0e36f6dc2074108">ripple::make_DirectStepI</a></div><div class="ttdeci">std::pair&lt; TER, std::unique_ptr&lt; Step &gt; &gt; make_DirectStepI(StrandContext const &amp;ctx, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;c)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00969">DirectStep.cpp:969</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac06771af6625c1d8cd71e57570e84136"><div class="ttname"><a href="namespaceripple.html#ac06771af6625c1d8cd71e57570e84136">ripple::isDirectXrpToXrp</a></div><div class="ttdeci">bool isDirectXrpToXrp(Strand const &amp;strand)</div><div class="ttdef"><b>Definition</b> <a href="PaySteps_8cpp_source.html#l00630">PaySteps.cpp:630</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac341e8b4d6615fda7866d3c1c0014e44"><div class="ttname"><a href="namespaceripple.html#ac341e8b4d6615fda7866d3c1c0014e44">ripple::get</a></div><div class="ttdeci">T get(Section const &amp;section, std::string const &amp;name, T const &amp;defaultValue=T{})</div><div class="ttdoc">Retrieve a key/value pair from a section.</div><div class="ttdef"><b>Definition</b> <a href="BasicConfig_8h_source.html#l00355">BasicConfig.h:355</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac3a88b886dddf7bb9c8bbd7162c9b521"><div class="ttname"><a href="namespaceripple.html#ac3a88b886dddf7bb9c8bbd7162c9b521">ripple::isTemMalformed</a></div><div class="ttdeci">bool isTemMalformed(TER x) noexcept</div><div class="ttdef"><b>Definition</b> <a href="TER_8h_source.html#l00656">TER.h:656</a></div></div>

View File

@@ -1562,7 +1562,7 @@ $(document).ready(function() { init_codefold(0); });
<div class="ttc" id="anamespaceripple_1_1test_html_acf39cc44acdd6b5089f2076897fa3911aeb479605271a1f0ffff9d87f2cab0b75"><div class="ttname"><a href="namespaceripple_1_1test.html#acf39cc44acdd6b5089f2076897fa3911aeb479605271a1f0ffff9d87f2cab0b75">ripple::test::TrustFlag::freeze</a></div><div class="ttdeci">@ freeze</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_acf39cc44acdd6b5089f2076897fa3911af34d3a138958b0d338875bb910a39cf6"><div class="ttname"><a href="namespaceripple_1_1test.html#acf39cc44acdd6b5089f2076897fa3911af34d3a138958b0d338875bb910a39cf6">ripple::test::TrustFlag::noripple</a></div><div class="ttdeci">@ noripple</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_acf39cc44acdd6b5089f2076897fa3911afa53b91ccc1b78668d5af58e1ed3a485"><div class="ttname"><a href="namespaceripple_1_1test.html#acf39cc44acdd6b5089f2076897fa3911afa53b91ccc1b78668d5af58e1ed3a485">ripple::test::TrustFlag::auth</a></div><div class="ttdeci">@ auth</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_aeb0719dfd10aae20370de6c6fc137a65"><div class="ttname"><a href="namespaceripple_1_1test.html#aeb0719dfd10aae20370de6c6fc137a65">ripple::test::directStepEqual</a></div><div class="ttdeci">bool directStepEqual(Step const &amp;step, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;currency)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00969">DirectStep.cpp:969</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_aeb0719dfd10aae20370de6c6fc137a65"><div class="ttname"><a href="namespaceripple_1_1test.html#aeb0719dfd10aae20370de6c6fc137a65">ripple::test::directStepEqual</a></div><div class="ttdeci">bool directStepEqual(Step const &amp;step, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;currency)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00951">DirectStep.cpp:951</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#l00025">algorithm.h:25</a></div></div>
<div class="ttc" id="anamespaceripple_html_a02be1da6bd3d611ea7a48b208b060b6c"><div class="ttname"><a href="namespaceripple.html#a02be1da6bd3d611ea7a48b208b060b6c">ripple::xrpIssue</a></div><div class="ttdeci">Issue const &amp; xrpIssue()</div><div class="ttdoc">Returns an asset specifier that represents XRP.</div><div class="ttdef"><b>Definition</b> <a href="Issue_8h_source.html#l00115">Issue.h:115</a></div></div>
<div class="ttc" id="anamespaceripple_html_a065cda95aed9cb1d66fb81cad0867ef6"><div class="ttname"><a href="namespaceripple.html#a065cda95aed9cb1d66fb81cad0867ef6">ripple::noAccount</a></div><div class="ttdeci">AccountID const &amp; noAccount()</div><div class="ttdoc">A placeholder for empty accounts.</div><div class="ttdef"><b>Definition</b> <a href="AccountID_8cpp_source.html#l00185">AccountID.cpp:185</a></div></div>

View File

@@ -563,7 +563,7 @@ $(document).ready(function() { init_codefold(0); });
<div class="ttc" id="ais_same_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/types/is_same.html">std::is_same_v</a></div><div class="ttdeci">T is_same_v</div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_a23eb2c2b79afcc7ee5faa4101e1f634c"><div class="ttname"><a href="namespaceripple_1_1test.html#a23eb2c2b79afcc7ee5faa4101e1f634c">ripple::test::xrpEndpointStepEqual</a></div><div class="ttdeci">bool xrpEndpointStepEqual(Step const &amp;step, AccountID const &amp;acc)</div><div class="ttdef"><b>Definition</b> <a href="XRPEndpointStep_8cpp_source.html#l00381">XRPEndpointStep.cpp:381</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#l01395">BookStep.cpp:1395</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_aeb0719dfd10aae20370de6c6fc137a65"><div class="ttname"><a href="namespaceripple_1_1test.html#aeb0719dfd10aae20370de6c6fc137a65">ripple::test::directStepEqual</a></div><div class="ttdeci">bool directStepEqual(Step const &amp;step, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;currency)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00969">DirectStep.cpp:969</a></div></div>
<div class="ttc" id="anamespaceripple_1_1test_html_aeb0719dfd10aae20370de6c6fc137a65"><div class="ttname"><a href="namespaceripple_1_1test.html#aeb0719dfd10aae20370de6c6fc137a65">ripple::test::directStepEqual</a></div><div class="ttdeci">bool directStepEqual(Step const &amp;step, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;currency)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00951">DirectStep.cpp:951</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#l00025">algorithm.h:25</a></div></div>
<div class="ttc" id="anamespaceripple_html_a00ae0d729cb3e35b6bcac9a27ebb5284"><div class="ttname"><a href="namespaceripple.html#a00ae0d729cb3e35b6bcac9a27ebb5284">ripple::AccountID</a></div><div class="ttdeci">base_uint&lt; 160, detail::AccountIDTag &gt; AccountID</div><div class="ttdoc">A 160-bit unsigned that uniquely identifies an account.</div><div class="ttdef"><b>Definition</b> <a href="AccountID_8h_source.html#l00048">AccountID.h:48</a></div></div>
<div class="ttc" id="anamespaceripple_html_a0709947cddad59d2e2e0a9be08e1435a"><div class="ttname"><a href="namespaceripple.html#a0709947cddad59d2e2e0a9be08e1435a">ripple::transHuman</a></div><div class="ttdeci">std::string transHuman(TER code)</div><div class="ttdef"><b>Definition</b> <a href="TER_8cpp_source.html#l00273">TER.cpp:273</a></div></div>
@@ -587,7 +587,7 @@ $(document).ready(function() { init_codefold(0); });
<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_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#l01454">BookStep.cpp:1454</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab6951b22b65a926d75003267ef35a90b"><div class="ttname"><a href="namespaceripple.html#ab6951b22b65a926d75003267ef35a90b">ripple::normalizePath</a></div><div class="ttdeci">std::pair&lt; TER, STPath &gt; normalizePath(AccountID const &amp;src, AccountID const &amp;dst, Issue const &amp;deliver, std::optional&lt; Issue &gt; const &amp;sendMaxIssue, STPath const &amp;path)</div></div>
<div class="ttc" id="anamespaceripple_html_ab9034e2ea3c8d81bf0e36f6dc2074108"><div class="ttname"><a href="namespaceripple.html#ab9034e2ea3c8d81bf0e36f6dc2074108">ripple::make_DirectStepI</a></div><div class="ttdeci">std::pair&lt; TER, std::unique_ptr&lt; Step &gt; &gt; make_DirectStepI(StrandContext const &amp;ctx, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;c)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00987">DirectStep.cpp:987</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab9034e2ea3c8d81bf0e36f6dc2074108"><div class="ttname"><a href="namespaceripple.html#ab9034e2ea3c8d81bf0e36f6dc2074108">ripple::make_DirectStepI</a></div><div class="ttdeci">std::pair&lt; TER, std::unique_ptr&lt; Step &gt; &gt; make_DirectStepI(StrandContext const &amp;ctx, AccountID const &amp;src, AccountID const &amp;dst, Currency const &amp;c)</div><div class="ttdef"><b>Definition</b> <a href="DirectStep_8cpp_source.html#l00969">DirectStep.cpp:969</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac06771af6625c1d8cd71e57570e84136"><div class="ttname"><a href="namespaceripple.html#ac06771af6625c1d8cd71e57570e84136">ripple::isDirectXrpToXrp</a></div><div class="ttdeci">bool isDirectXrpToXrp(Strand const &amp;strand)</div><div class="ttdef"><b>Definition</b> <a href="PaySteps_8cpp_source.html#l00630">PaySteps.cpp:630</a></div></div>
<div class="ttc" id="anamespaceripple_html_ad062717b303be1ba4bf72c519b864343"><div class="ttname"><a href="namespaceripple.html#ad062717b303be1ba4bf72c519b864343">ripple::toStrands</a></div><div class="ttdeci">std::pair&lt; TER, std::vector&lt; Strand &gt; &gt; toStrands(ReadView const &amp;view, AccountID const &amp;src, AccountID const &amp;dst, Issue const &amp;deliver, std::optional&lt; Quality &gt; const &amp;limitQuality, std::optional&lt; Issue &gt; const &amp;sendMax, STPathSet const &amp;paths, bool addDefaultPath, bool ownerPaysTransferFee, OfferCrossing offerCrossing, AMMContext &amp;ammContext, std::optional&lt; uint256 &gt; const &amp;domainID, beast::Journal j)</div><div class="ttdoc">Create a Strand for each specified path (including the default path, if indicated)</div><div class="ttdef"><b>Definition</b> <a href="PaySteps_8cpp_source.html#l00475">PaySteps.cpp:475</a></div></div>
<div class="ttc" id="anamespaceripple_html_adb9995d7c8e8a2aa3d702b73edfa0672"><div class="ttname"><a href="namespaceripple.html#adb9995d7c8e8a2aa3d702b73edfa0672">ripple::operator==</a></div><div class="ttdeci">constexpr bool operator==(base_uint&lt; Bits, Tag &gt; const &amp;lhs, base_uint&lt; Bits, Tag &gt; const &amp;rhs)</div><div class="ttdef"><b>Definition</b> <a href="base__uint_8h_source.html#l00585">base_uint.h:585</a></div></div>

View File

@@ -844,7 +844,7 @@ template&lt;class TDerived &gt; </div>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="DirectStep_8cpp_source.html#l00882">882</a> of file <a class="el" href="DirectStep_8cpp_source.html">DirectStep.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="DirectStep_8cpp_source.html#l00864">864</a> of file <a class="el" href="DirectStep_8cpp_source.html">DirectStep.cpp</a>.</p>
</div>
</div>

View File

@@ -37775,7 +37775,7 @@ template&lt;class TIn , class TOut &gt; </div>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="DirectStep_8cpp_source.html#l00987">987</a> of file <a class="el" href="DirectStep_8cpp_source.html">DirectStep.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="DirectStep_8cpp_source.html#l00969">969</a> of file <a class="el" href="DirectStep_8cpp_source.html">DirectStep.cpp</a>.</p>
</div>
</div>

View File

@@ -8045,7 +8045,7 @@ template&lt;class TIn , class TOut , class TDerived &gt; </div>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="DirectStep_8cpp_source.html#l00969">969</a> of file <a class="el" href="DirectStep_8cpp_source.html">DirectStep.cpp</a>.</p>
<p class="definition">Definition at line <a class="el" href="DirectStep_8cpp_source.html#l00951">951</a> of file <a class="el" href="DirectStep_8cpp_source.html">DirectStep.cpp</a>.</p>
</div>
</div>