Files
rippled/classripple_1_1Step.html
2021-03-12 22:34:28 +00:00

984 lines
56 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.17"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>rippled: ripple::Step Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">rippled
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.17 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespaceripple.html">ripple</a></li><li class="navelem"><a class="el" href="classripple_1_1Step.html">Step</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pri-methods">Private Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classripple_1_1Step-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">ripple::Step Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>A step in a payment path.
<a href="classripple_1_1Step.html#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a44775ea2303695696046b0e44e436f89"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a44775ea2303695696046b0e44e436f89">~Step</a> ()=default</td></tr>
<tr class="separator:a44775ea2303695696046b0e44e436f89"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7b4316acd85226820b3fc53f1f5d0711"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a>, <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a7b4316acd85226820b3fc53f1f5d0711">rev</a> (<a class="el" href="classripple_1_1PaymentSandbox.html">PaymentSandbox</a> &amp;sb, <a class="el" href="classripple_1_1ApplyView.html">ApplyView</a> &amp;afView, boost::container::flat_set&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> &gt; &amp;ofrsToRm, <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;out)=0</td></tr>
<tr class="memdesc:a7b4316acd85226820b3fc53f1f5d0711"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the amount we need to put into the step to get the requested out subject to liquidity limits. <a href="classripple_1_1Step.html#a7b4316acd85226820b3fc53f1f5d0711">More...</a><br /></td></tr>
<tr class="separator:a7b4316acd85226820b3fc53f1f5d0711"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a88ad248e118ca56aa1f67ea2b356388f"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a>, <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a88ad248e118ca56aa1f67ea2b356388f">fwd</a> (<a class="el" href="classripple_1_1PaymentSandbox.html">PaymentSandbox</a> &amp;sb, <a class="el" href="classripple_1_1ApplyView.html">ApplyView</a> &amp;afView, boost::container::flat_set&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> &gt; &amp;ofrsToRm, <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;in)=0</td></tr>
<tr class="memdesc:a88ad248e118ca56aa1f67ea2b356388f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the amount we get out of the step given the input subject to liquidity limits. <a href="classripple_1_1Step.html#a88ad248e118ca56aa1f67ea2b356388f">More...</a><br /></td></tr>
<tr class="separator:a88ad248e118ca56aa1f67ea2b356388f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3abdd7984b2b564617642b19241b0ea9"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a3abdd7984b2b564617642b19241b0ea9">cachedIn</a> () const =0</td></tr>
<tr class="memdesc:a3abdd7984b2b564617642b19241b0ea9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Amount of currency computed coming into the <a class="el" href="classripple_1_1Step.html" title="A step in a payment path.">Step</a> the last time the step ran in reverse. <a href="classripple_1_1Step.html#a3abdd7984b2b564617642b19241b0ea9">More...</a><br /></td></tr>
<tr class="separator:a3abdd7984b2b564617642b19241b0ea9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a24766fe2e6d1f0bc8467fa40bd95c301"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a24766fe2e6d1f0bc8467fa40bd95c301">cachedOut</a> () const =0</td></tr>
<tr class="memdesc:a24766fe2e6d1f0bc8467fa40bd95c301"><td class="mdescLeft">&#160;</td><td class="mdescRight">Amount of currency computed coming out of the <a class="el" href="classripple_1_1Step.html" title="A step in a payment path.">Step</a> the last time the step ran in reverse. <a href="classripple_1_1Step.html#a24766fe2e6d1f0bc8467fa40bd95c301">More...</a><br /></td></tr>
<tr class="separator:a24766fe2e6d1f0bc8467fa40bd95c301"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25c5c19a6f0971f3ff0752fd1cd028c8"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; <a class="el" href="namespaceripple.html#a00ae0d729cb3e35b6bcac9a27ebb5284">AccountID</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a25c5c19a6f0971f3ff0752fd1cd028c8">directStepSrcAcct</a> () const</td></tr>
<tr class="memdesc:a25c5c19a6f0971f3ff0752fd1cd028c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this step is <a class="el" href="classripple_1_1DirectStepI.html">DirectStepI</a> (IOU-&gt;IOU direct step), return the src account. <a href="classripple_1_1Step.html#a25c5c19a6f0971f3ff0752fd1cd028c8">More...</a><br /></td></tr>
<tr class="separator:a25c5c19a6f0971f3ff0752fd1cd028c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9150649697d30c944666a0b0fec1bb96"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="el" href="namespaceripple.html#a00ae0d729cb3e35b6bcac9a27ebb5284">AccountID</a>, <a class="el" href="namespaceripple.html#a00ae0d729cb3e35b6bcac9a27ebb5284">AccountID</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a9150649697d30c944666a0b0fec1bb96">directStepAccts</a> () const</td></tr>
<tr class="separator:a9150649697d30c944666a0b0fec1bb96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13f46801cf68bd4ba5e0c995db490463"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401e">DebtDirection</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a13f46801cf68bd4ba5e0c995db490463">debtDirection</a> (<a class="el" href="classripple_1_1ReadView.html">ReadView</a> const &amp;sb, <a class="el" href="namespaceripple.html#a2fca0f72cfacc04d15ad41d84ebf46fd">StrandDirection</a> dir) const =0</td></tr>
<tr class="memdesc:a13f46801cf68bd4ba5e0c995db490463"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this step is a <a class="el" href="classripple_1_1DirectStepI.html">DirectStepI</a> and the src redeems to the dst, return true, otherwise return false. <a href="classripple_1_1Step.html#a13f46801cf68bd4ba5e0c995db490463">More...</a><br /></td></tr>
<tr class="separator:a13f46801cf68bd4ba5e0c995db490463"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08d02c3dc700867a12c2772267918bac"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a08d02c3dc700867a12c2772267918bac">lineQualityIn</a> (<a class="el" href="classripple_1_1ReadView.html">ReadView</a> const &amp;) const</td></tr>
<tr class="memdesc:a08d02c3dc700867a12c2772267918bac"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this step is a <a class="el" href="classripple_1_1DirectStepI.html">DirectStepI</a>, return the quality in of the dst account. <a href="classripple_1_1Step.html#a08d02c3dc700867a12c2772267918bac">More...</a><br /></td></tr>
<tr class="separator:a08d02c3dc700867a12c2772267918bac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81ae600c7c6c3c240cd4a74f756e8cd6"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; Quality &gt;, <a class="el" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401e">DebtDirection</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a81ae600c7c6c3c240cd4a74f756e8cd6">qualityUpperBound</a> (<a class="el" href="classripple_1_1ReadView.html">ReadView</a> const &amp;v, <a class="el" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401e">DebtDirection</a> prevStepDir) const =0</td></tr>
<tr class="memdesc:a81ae600c7c6c3c240cd4a74f756e8cd6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find an upper bound of quality for the step. <a href="classripple_1_1Step.html#a81ae600c7c6c3c240cd4a74f756e8cd6">More...</a><br /></td></tr>
<tr class="separator:a81ae600c7c6c3c240cd4a74f756e8cd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8c0b0fb5f0e476dfee59b2a085f34a93"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a8c0b0fb5f0e476dfee59b2a085f34a93">offersUsed</a> () const</td></tr>
<tr class="memdesc:a8c0b0fb5f0e476dfee59b2a085f34a93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the number of offers consumed or partially consumed the last time the step ran, including expired and unfunded offers. <a href="classripple_1_1Step.html#a8c0b0fb5f0e476dfee59b2a085f34a93">More...</a><br /></td></tr>
<tr class="separator:a8c0b0fb5f0e476dfee59b2a085f34a93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6fdf5073d616414671f6ec1caa4a7744"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt; <a class="el" href="classripple_1_1Book.html">Book</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a6fdf5073d616414671f6ec1caa4a7744">bookStepBook</a> () const</td></tr>
<tr class="memdesc:a6fdf5073d616414671f6ec1caa4a7744"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this step is a <a class="el" href="classripple_1_1BookStep.html">BookStep</a>, return the book. <a href="classripple_1_1Step.html#a6fdf5073d616414671f6ec1caa4a7744">More...</a><br /></td></tr>
<tr class="separator:a6fdf5073d616414671f6ec1caa4a7744"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74ef4eb5de8105bf5e2a741755033e53"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a74ef4eb5de8105bf5e2a741755033e53">isZero</a> (<a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;out) const =0</td></tr>
<tr class="memdesc:a74ef4eb5de8105bf5e2a741755033e53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if amount is zero. <a href="classripple_1_1Step.html#a74ef4eb5de8105bf5e2a741755033e53">More...</a><br /></td></tr>
<tr class="separator:a74ef4eb5de8105bf5e2a741755033e53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83ed960ee2841965273b821cbad38730"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a83ed960ee2841965273b821cbad38730">inactive</a> () const</td></tr>
<tr class="memdesc:a83ed960ee2841965273b821cbad38730"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if the step should be considered inactive. <a href="classripple_1_1Step.html#a83ed960ee2841965273b821cbad38730">More...</a><br /></td></tr>
<tr class="separator:a83ed960ee2841965273b821cbad38730"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50a0b56fa74b994f927bf5e6aa0f84bb"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a50a0b56fa74b994f927bf5e6aa0f84bb">equalOut</a> (<a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;lhs, <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;rhs) const =0</td></tr>
<tr class="memdesc:a50a0b56fa74b994f927bf5e6aa0f84bb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if Out of lhs == Out of rhs. <a href="classripple_1_1Step.html#a50a0b56fa74b994f927bf5e6aa0f84bb">More...</a><br /></td></tr>
<tr class="separator:a50a0b56fa74b994f927bf5e6aa0f84bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada8c8a1a658fdfa245ae6d8407166bff"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#ada8c8a1a658fdfa245ae6d8407166bff">equalIn</a> (<a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;lhs, <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;rhs) const =0</td></tr>
<tr class="memdesc:ada8c8a1a658fdfa245ae6d8407166bff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if In of lhs == In of rhs. <a href="classripple_1_1Step.html#ada8c8a1a658fdfa245ae6d8407166bff">More...</a><br /></td></tr>
<tr class="separator:ada8c8a1a658fdfa245ae6d8407166bff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2a93499e7c3fae997a2a685708627652"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt; bool, <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a2a93499e7c3fae997a2a685708627652">validFwd</a> (<a class="el" href="classripple_1_1PaymentSandbox.html">PaymentSandbox</a> &amp;sb, <a class="el" href="classripple_1_1ApplyView.html">ApplyView</a> &amp;afView, <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;in)=0</td></tr>
<tr class="memdesc:a2a93499e7c3fae997a2a685708627652"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check that the step can correctly execute in the forward direction. <a href="classripple_1_1Step.html#a2a93499e7c3fae997a2a685708627652">More...</a><br /></td></tr>
<tr class="separator:a2a93499e7c3fae997a2a685708627652"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ae78cdde4e2229e91e7d2076a271f4b87"><td class="memItemLeft" align="right" valign="top">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#ae78cdde4e2229e91e7d2076a271f4b87">logString</a> () const =0</td></tr>
<tr class="separator:ae78cdde4e2229e91e7d2076a271f4b87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e9fdd3b76f5cf635fc5dd37d9f8b772"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a2e9fdd3b76f5cf635fc5dd37d9f8b772">equal</a> (<a class="el" href="classripple_1_1Step.html">Step</a> const &amp;rhs) const =0</td></tr>
<tr class="separator:a2e9fdd3b76f5cf635fc5dd37d9f8b772"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:aae54af6e7d06361ee3efe7b4f308998d"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#aae54af6e7d06361ee3efe7b4f308998d">operator==</a> (<a class="el" href="classripple_1_1Step.html">Step</a> const &amp;lhs, <a class="el" href="classripple_1_1Step.html">Step</a> const &amp;rhs)</td></tr>
<tr class="memdesc:aae54af6e7d06361ee3efe7b4f308998d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if lhs == rhs. <a href="classripple_1_1Step.html#aae54af6e7d06361ee3efe7b4f308998d">More...</a><br /></td></tr>
<tr class="separator:aae54af6e7d06361ee3efe7b4f308998d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a713c44c6627b824ed3d594d216678c04"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a713c44c6627b824ed3d594d216678c04">operator!=</a> (<a class="el" href="classripple_1_1Step.html">Step</a> const &amp;lhs, <a class="el" href="classripple_1_1Step.html">Step</a> const &amp;rhs)</td></tr>
<tr class="memdesc:a713c44c6627b824ed3d594d216678c04"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return true if lhs != rhs. <a href="classripple_1_1Step.html#a713c44c6627b824ed3d594d216678c04">More...</a><br /></td></tr>
<tr class="separator:a713c44c6627b824ed3d594d216678c04"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3866a06fce4623844539a46d9a5a561f"><td class="memItemLeft" align="right" valign="top"><a class="elRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classripple_1_1Step.html#a3866a06fce4623844539a46d9a5a561f">operator&lt;&lt;</a> (<a class="elRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;stream, <a class="el" href="classripple_1_1Step.html">Step</a> const &amp;step)</td></tr>
<tr class="memdesc:a3866a06fce4623844539a46d9a5a561f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Streaming operator for a <a class="el" href="classripple_1_1Step.html" title="A step in a payment path.">Step</a>. <a href="classripple_1_1Step.html#a3866a06fce4623844539a46d9a5a561f">More...</a><br /></td></tr>
<tr class="separator:a3866a06fce4623844539a46d9a5a561f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A step in a payment path. </p>
<p>There are five concrete step classes: <a class="el" href="classripple_1_1DirectStepI.html">DirectStepI</a> is an IOU step between accounts BookStepII is an IOU/IOU offer book BookStepIX is an IOU/XRP offer book BookStepXI is an XRP/IOU offer book <a class="el" href="classripple_1_1XRPEndpointStep.html">XRPEndpointStep</a> is the source or destination account for XRP</p>
<p>Amounts may be transformed through a step in either the forward or the reverse direction. In the forward direction, the function <code>fwd</code> is used to find the amount the step would output given an input amount. In the reverse direction, the function <code>rev</code> is used to find the amount of input needed to produce the desired output.</p>
<p>Amounts are always transformed using liquidity with the same quality (quality is the amount out/amount in). For example, a <a class="el" href="classripple_1_1BookStep.html">BookStep</a> may use multiple offers when executing <code>fwd</code> or <code>rev</code>, but all those offers will be from the same quality directory.</p>
<p>A step may not have enough liquidity to transform the entire requested amount. Both <code>fwd</code> and <code>rev</code> return a pair of amounts (one for input amount, one for output amount) that show how much of the requested amount the step was actually able to use. </p>
<p class="definition">Definition at line <a class="el" href="Steps_8h_source.html#l00079">79</a> of file <a class="el" href="Steps_8h_source.html">Steps.h</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a44775ea2303695696046b0e44e436f89"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a44775ea2303695696046b0e44e436f89">&#9670;&nbsp;</a></span>~Step()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual ripple::Step::~Step </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span><span class="mlabel">default</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a7b4316acd85226820b3fc53f1f5d0711"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7b4316acd85226820b3fc53f1f5d0711">&#9670;&nbsp;</a></span>rev()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt;<a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a>, <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a>&gt; ripple::Step::rev </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1PaymentSandbox.html">PaymentSandbox</a> &amp;&#160;</td>
<td class="paramname"><em>sb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1ApplyView.html">ApplyView</a> &amp;&#160;</td>
<td class="paramname"><em>afView</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">boost::container::flat_set&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>ofrsToRm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;&#160;</td>
<td class="paramname"><em>out</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Find the amount we need to put into the step to get the requested out subject to liquidity limits. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sb</td><td>view with the strand's state of balances and offers </td></tr>
<tr><td class="paramname">afView</td><td>view the the state of balances before the strand runs this determines if an offer becomes unfunded or is found unfunded </td></tr>
<tr><td class="paramname">ofrsToRm</td><td>offers found unfunded or in an error state are added to this collection </td></tr>
<tr><td class="paramname">out</td><td>requested step output </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>actual step input and output </dd></dl>
</div>
</div>
<a id="a88ad248e118ca56aa1f67ea2b356388f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a88ad248e118ca56aa1f67ea2b356388f">&#9670;&nbsp;</a></span>fwd()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt;<a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a>, <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a>&gt; ripple::Step::fwd </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1PaymentSandbox.html">PaymentSandbox</a> &amp;&#160;</td>
<td class="paramname"><em>sb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1ApplyView.html">ApplyView</a> &amp;&#160;</td>
<td class="paramname"><em>afView</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">boost::container::flat_set&lt; <a class="el" href="namespaceripple.html#a356c68147333a9a48a344718038576d9">uint256</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>ofrsToRm</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;&#160;</td>
<td class="paramname"><em>in</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Find the amount we get out of the step given the input subject to liquidity limits. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sb</td><td>view with the strand's state of balances and offers </td></tr>
<tr><td class="paramname">afView</td><td>view the the state of balances before the strand runs this determines if an offer becomes unfunded or is found unfunded </td></tr>
<tr><td class="paramname">ofrsToRm</td><td>offers found unfunded or in an error state are added to this collection </td></tr>
<tr><td class="paramname">in</td><td>requested step input </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>actual step input and output </dd></dl>
</div>
</div>
<a id="a3abdd7984b2b564617642b19241b0ea9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3abdd7984b2b564617642b19241b0ea9">&#9670;&nbsp;</a></span>cachedIn()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt;<a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a>&gt; ripple::Step::cachedIn </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Amount of currency computed coming into the <a class="el" href="classripple_1_1Step.html" title="A step in a payment path.">Step</a> the last time the step ran in reverse. </p>
</div>
</div>
<a id="a24766fe2e6d1f0bc8467fa40bd95c301"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a24766fe2e6d1f0bc8467fa40bd95c301">&#9670;&nbsp;</a></span>cachedOut()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt;<a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a>&gt; ripple::Step::cachedOut </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Amount of currency computed coming out of the <a class="el" href="classripple_1_1Step.html" title="A step in a payment path.">Step</a> the last time the step ran in reverse. </p>
</div>
</div>
<a id="a25c5c19a6f0971f3ff0752fd1cd028c8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a25c5c19a6f0971f3ff0752fd1cd028c8">&#9670;&nbsp;</a></span>directStepSrcAcct()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt;<a class="el" href="namespaceripple.html#a00ae0d729cb3e35b6bcac9a27ebb5284">AccountID</a>&gt; ripple::Step::directStepSrcAcct </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>If this step is <a class="el" href="classripple_1_1DirectStepI.html">DirectStepI</a> (IOU-&gt;IOU direct step), return the src account. </p>
<p>This is needed for checkNoRipple. </p>
<p class="definition">Definition at line <a class="el" href="Steps_8h_source.html#l00139">139</a> of file <a class="el" href="Steps_8h_source.html">Steps.h</a>.</p>
</div>
</div>
<a id="a9150649697d30c944666a0b0fec1bb96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9150649697d30c944666a0b0fec1bb96">&#9670;&nbsp;</a></span>directStepAccts()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt;<a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt;<a class="el" href="namespaceripple.html#a00ae0d729cb3e35b6bcac9a27ebb5284">AccountID</a>, <a class="el" href="namespaceripple.html#a00ae0d729cb3e35b6bcac9a27ebb5284">AccountID</a>&gt; &gt; ripple::Step::directStepAccts </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="Steps_8h_source.html#l00147">147</a> of file <a class="el" href="Steps_8h_source.html">Steps.h</a>.</p>
</div>
</div>
<a id="a13f46801cf68bd4ba5e0c995db490463"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a13f46801cf68bd4ba5e0c995db490463">&#9670;&nbsp;</a></span>debtDirection()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="el" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401e">DebtDirection</a> ripple::Step::debtDirection </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1ReadView.html">ReadView</a> const &amp;&#160;</td>
<td class="paramname"><em>sb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a2fca0f72cfacc04d15ad41d84ebf46fd">StrandDirection</a>&#160;</td>
<td class="paramname"><em>dir</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>If this step is a <a class="el" href="classripple_1_1DirectStepI.html">DirectStepI</a> and the src redeems to the dst, return true, otherwise return false. </p>
<p>If this step is a <a class="el" href="classripple_1_1BookStep.html">BookStep</a>, return false if the owner pays the transfer fee, otherwise return true.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sb</td><td>view with the strand's state of balances and offers </td></tr>
<tr><td class="paramname">dir</td><td>reverse -&gt; called from <a class="el" href="classripple_1_1Step.html#a7b4316acd85226820b3fc53f1f5d0711" title="Find the amount we need to put into the step to get the requested out subject to liquidity limits.">rev()</a>; forward -&gt; called from <a class="el" href="classripple_1_1Step.html#a88ad248e118ca56aa1f67ea2b356388f" title="Find the amount we get out of the step given the input subject to liquidity limits.">fwd()</a>. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a08d02c3dc700867a12c2772267918bac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a08d02c3dc700867a12c2772267918bac">&#9670;&nbsp;</a></span>lineQualityIn()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ripple::Step::lineQualityIn </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1ReadView.html">ReadView</a> const &amp;&#160;</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>If this step is a <a class="el" href="classripple_1_1DirectStepI.html">DirectStepI</a>, return the quality in of the dst account. </p>
<p class="definition">Definition at line <a class="el" href="Steps_8h_source.html#l00167">167</a> of file <a class="el" href="Steps_8h_source.html">Steps.h</a>.</p>
</div>
</div>
<a id="a81ae600c7c6c3c240cd4a74f756e8cd6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81ae600c7c6c3c240cd4a74f756e8cd6">&#9670;&nbsp;</a></span>qualityUpperBound()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt;<a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt;Quality&gt;, <a class="el" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401e">DebtDirection</a>&gt; ripple::Step::qualityUpperBound </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1ReadView.html">ReadView</a> const &amp;&#160;</td>
<td class="paramname"><em>v</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401e">DebtDirection</a>&#160;</td>
<td class="paramname"><em>prevStepDir</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Find an upper bound of quality for the step. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">v</td><td>view to query the ledger state from </td></tr>
<tr><td class="paramname">prevStepDir</td><td>Set to <a class="el" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401ea7e611dd9f79193db43a5e9983752239e">DebtDirection::redeems</a> if the previous step redeems. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pair. The first element is the upper bound of quality for the step, or std::nullopt if the step is dry. The second element will be set to <a class="el" href="namespaceripple.html#a8c623abdba7fa97ffd148311056d401ea7e611dd9f79193db43a5e9983752239e">DebtDirection::redeems</a> if this steps redeems, DebtDirection:issues if this step issues. </dd></dl>
<dl class="section note"><dt>Note</dt><dd>it is an upper bound because offers on the books may be unfunded. If there is always a funded offer at the tip of the book, then we could rename this <code>theoreticalQuality</code> rather than <code>qualityUpperBound</code>. It could still differ from the actual quality, but except for "dust" amounts, it should be a good estimate for the actual quality. </dd></dl>
</div>
</div>
<a id="a8c0b0fb5f0e476dfee59b2a085f34a93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8c0b0fb5f0e476dfee59b2a085f34a93">&#9670;&nbsp;</a></span>offersUsed()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/types/integer.html">std::uint32_t</a> ripple::Step::offersUsed </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return the number of offers consumed or partially consumed the last time the step ran, including expired and unfunded offers. </p>
<p>N.B. This this not the total number offers consumed by this step for the entire payment, it is only the number the last time it ran. Offers may be partially consumed multiple times during a payment. </p>
<p class="definition">Definition at line <a class="el" href="Steps_8h_source.html#l00199">199</a> of file <a class="el" href="Steps_8h_source.html">Steps.h</a>.</p>
</div>
</div>
<a id="a6fdf5073d616414671f6ec1caa4a7744"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6fdf5073d616414671f6ec1caa4a7744">&#9670;&nbsp;</a></span>bookStepBook()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/optional.html">std::optional</a>&lt;<a class="el" href="classripple_1_1Book.html">Book</a>&gt; ripple::Step::bookStepBook </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>If this step is a <a class="el" href="classripple_1_1BookStep.html">BookStep</a>, return the book. </p>
<p class="definition">Definition at line <a class="el" href="Steps_8h_source.html#l00208">208</a> of file <a class="el" href="Steps_8h_source.html">Steps.h</a>.</p>
</div>
</div>
<a id="a74ef4eb5de8105bf5e2a741755033e53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a74ef4eb5de8105bf5e2a741755033e53">&#9670;&nbsp;</a></span>isZero()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ripple::Step::isZero </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;&#160;</td>
<td class="paramname"><em>out</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Check if amount is zero. </p>
</div>
</div>
<a id="a83ed960ee2841965273b821cbad38730"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83ed960ee2841965273b821cbad38730">&#9670;&nbsp;</a></span>inactive()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ripple::Step::inactive </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return true if the step should be considered inactive. </p>
<p>A strand that has additional liquidity may be marked inactive if a step has consumed too many offers. </p>
<p class="definition">Definition at line <a class="el" href="Steps_8h_source.html#l00225">225</a> of file <a class="el" href="Steps_8h_source.html">Steps.h</a>.</p>
</div>
</div>
<a id="a50a0b56fa74b994f927bf5e6aa0f84bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a50a0b56fa74b994f927bf5e6aa0f84bb">&#9670;&nbsp;</a></span>equalOut()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ripple::Step::equalOut </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;&#160;</td>
<td class="paramname"><em>lhs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;&#160;</td>
<td class="paramname"><em>rhs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return true if Out of lhs == Out of rhs. </p>
</div>
</div>
<a id="ada8c8a1a658fdfa245ae6d8407166bff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ada8c8a1a658fdfa245ae6d8407166bff">&#9670;&nbsp;</a></span>equalIn()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ripple::Step::equalIn </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;&#160;</td>
<td class="paramname"><em>lhs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;&#160;</td>
<td class="paramname"><em>rhs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return true if In of lhs == In of rhs. </p>
</div>
</div>
<a id="a2a93499e7c3fae997a2a685708627652"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2a93499e7c3fae997a2a685708627652">&#9670;&nbsp;</a></span>validFwd()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair</a>&lt;bool, <a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a>&gt; ripple::Step::validFwd </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1PaymentSandbox.html">PaymentSandbox</a> &amp;&#160;</td>
<td class="paramname"><em>sb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1ApplyView.html">ApplyView</a> &amp;&#160;</td>
<td class="paramname"><em>afView</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structripple_1_1EitherAmount.html">EitherAmount</a> const &amp;&#160;</td>
<td class="paramname"><em>in</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Check that the step can correctly execute in the forward direction. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">sb</td><td>view with the strands state of balances and offers </td></tr>
<tr><td class="paramname">afView</td><td>view the the state of balances before the strand runs this determines if an offer becomes unfunded or is found unfunded </td></tr>
<tr><td class="paramname">in</td><td>requested step input </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>first element is true if step is valid, second element is out amount </dd></dl>
</div>
</div>
<a id="ae78cdde4e2229e91e7d2076a271f4b87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae78cdde4e2229e91e7d2076a271f4b87">&#9670;&nbsp;</a></span>logString()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual <a class="elRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> ripple::Step::logString </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a2e9fdd3b76f5cf635fc5dd37d9f8b772"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2e9fdd3b76f5cf635fc5dd37d9f8b772">&#9670;&nbsp;</a></span>equal()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool ripple::Step::equal </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1Step.html">Step</a> const &amp;&#160;</td>
<td class="paramname"><em>rhs</em></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<h2 class="groupheader">Friends And Related Function Documentation</h2>
<a id="aae54af6e7d06361ee3efe7b4f308998d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aae54af6e7d06361ee3efe7b4f308998d">&#9670;&nbsp;</a></span>operator==</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool operator== </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1Step.html">Step</a> const &amp;&#160;</td>
<td class="paramname"><em>lhs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1Step.html">Step</a> const &amp;&#160;</td>
<td class="paramname"><em>rhs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return true if lhs == rhs. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">lhs</td><td><a class="el" href="classripple_1_1Step.html" title="A step in a payment path.">Step</a> to compare. </td></tr>
<tr><td class="paramname">rhs</td><td><a class="el" href="classripple_1_1Step.html" title="A step in a payment path.">Step</a> to compare. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if lhs == rhs. </dd></dl>
<p class="definition">Definition at line <a class="el" href="Steps_8h_source.html#l00262">262</a> of file <a class="el" href="Steps_8h_source.html">Steps.h</a>.</p>
</div>
</div>
<a id="a713c44c6627b824ed3d594d216678c04"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a713c44c6627b824ed3d594d216678c04">&#9670;&nbsp;</a></span>operator!=</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool operator!= </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classripple_1_1Step.html">Step</a> const &amp;&#160;</td>
<td class="paramname"><em>lhs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1Step.html">Step</a> const &amp;&#160;</td>
<td class="paramname"><em>rhs</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Return true if lhs != rhs. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">lhs</td><td><a class="el" href="classripple_1_1Step.html" title="A step in a payment path.">Step</a> to compare. </td></tr>
<tr><td class="paramname">rhs</td><td><a class="el" href="classripple_1_1Step.html" title="A step in a payment path.">Step</a> to compare. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>true if lhs != rhs. </dd></dl>
<p class="definition">Definition at line <a class="el" href="Steps_8h_source.html#l00274">274</a> of file <a class="el" href="Steps_8h_source.html">Steps.h</a>.</p>
</div>
</div>
<a id="a3866a06fce4623844539a46d9a5a561f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3866a06fce4623844539a46d9a5a561f">&#9670;&nbsp;</a></span>operator&lt;&lt;</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="elRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a>&amp; operator&lt;&lt; </td>
<td>(</td>
<td class="paramtype"><a class="elRef" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::ostream</a> &amp;&#160;</td>
<td class="paramname"><em>stream</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classripple_1_1Step.html">Step</a> const &amp;&#160;</td>
<td class="paramname"><em>step</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Streaming operator for a <a class="el" href="classripple_1_1Step.html" title="A step in a payment path.">Step</a>. </p>
<p class="definition">Definition at line <a class="el" href="Steps_8h_source.html#l00281">281</a> of file <a class="el" href="Steps_8h_source.html">Steps.h</a>.</p>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.17
</small></address>
</body>
</html>