mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Make is_set_bit a universal template function
This commit is contained in:
committed by
Vinnie Falco
parent
feb88c4f7f
commit
2ed8edc19d
@@ -153,7 +153,7 @@ bool PathRequest::isValid (RippleLineCache::ref crCache)
|
||||
}
|
||||
else
|
||||
{
|
||||
bool includeXRP = !isSetBit (asDst->peekSLE ().getFlags(), lsfDisallowXRP);
|
||||
bool includeXRP = !is_bit_set (asDst->peekSLE ().getFlags(), lsfDisallowXRP);
|
||||
boost::unordered_set<uint160> usDestCurrID =
|
||||
usAccountDestCurrencies (raDstAccount, crCache, includeXRP);
|
||||
|
||||
|
||||
@@ -51,14 +51,14 @@ Json::Value PathState::Node::getJson () const
|
||||
|
||||
jvNode["type"] = uFlags;
|
||||
|
||||
if (isSetBit (uFlags, STPathElement::typeAccount) || !!uAccountID)
|
||||
jvFlags.append (!!isSetBit (uFlags, STPathElement::typeAccount) == !!uAccountID ? "account" : "-account");
|
||||
if (is_bit_set (uFlags, STPathElement::typeAccount) || !!uAccountID)
|
||||
jvFlags.append (!!is_bit_set (uFlags, STPathElement::typeAccount) == !!uAccountID ? "account" : "-account");
|
||||
|
||||
if (isSetBit (uFlags, STPathElement::typeCurrency) || !!uCurrencyID)
|
||||
jvFlags.append (!!isSetBit (uFlags, STPathElement::typeCurrency) == !!uCurrencyID ? "currency" : "-currency");
|
||||
if (is_bit_set (uFlags, STPathElement::typeCurrency) || !!uCurrencyID)
|
||||
jvFlags.append (!!is_bit_set (uFlags, STPathElement::typeCurrency) == !!uCurrencyID ? "currency" : "-currency");
|
||||
|
||||
if (isSetBit (uFlags, STPathElement::typeIssuer) || !!uIssuerID)
|
||||
jvFlags.append (!!isSetBit (uFlags, STPathElement::typeIssuer) == !!uIssuerID ? "issuer" : "-issuer");
|
||||
if (is_bit_set (uFlags, STPathElement::typeIssuer) || !!uIssuerID)
|
||||
jvFlags.append (!!is_bit_set (uFlags, STPathElement::typeIssuer) == !!uIssuerID ? "issuer" : "-issuer");
|
||||
|
||||
jvNode["flags"] = jvFlags;
|
||||
|
||||
@@ -182,12 +182,12 @@ TER PathState::pushNode (
|
||||
const bool bFirst = vpnNodes.empty ();
|
||||
const Node& pnPrv = bFirst ? Node () : vpnNodes.back ();
|
||||
// true, iff node is a ripple account. false, iff node is an offer node.
|
||||
const bool bAccount = isSetBit (iType, STPathElement::typeAccount);
|
||||
const bool bAccount = is_bit_set (iType, STPathElement::typeAccount);
|
||||
// true, iff currency supplied.
|
||||
// Currency is specified for the output of the current node.
|
||||
const bool bCurrency = isSetBit (iType, STPathElement::typeCurrency);
|
||||
const bool bCurrency = is_bit_set (iType, STPathElement::typeCurrency);
|
||||
// Issuer is specified for the output of the current node.
|
||||
const bool bIssuer = isSetBit (iType, STPathElement::typeIssuer);
|
||||
const bool bIssuer = is_bit_set (iType, STPathElement::typeIssuer);
|
||||
TER terResult = tesSUCCESS;
|
||||
|
||||
WriteLog (lsTRACE, RippleCalc) << "pushNode> "
|
||||
@@ -266,7 +266,7 @@ TER PathState::pushNode (
|
||||
if (tesSUCCESS == terResult && !vpnNodes.empty ())
|
||||
{
|
||||
const Node& pnBck = vpnNodes.back ();
|
||||
bool bBckAccount = isSetBit (pnBck.uFlags, STPathElement::typeAccount);
|
||||
bool bBckAccount = is_bit_set (pnBck.uFlags, STPathElement::typeAccount);
|
||||
|
||||
if (bBckAccount)
|
||||
{
|
||||
@@ -305,8 +305,8 @@ TER PathState::pushNode (
|
||||
|
||||
terResult = terNO_ACCOUNT;
|
||||
}
|
||||
else if ((isSetBit (sleBck->getFieldU32 (sfFlags), lsfRequireAuth)
|
||||
&& !isSetBit (sleRippleState->getFieldU32 (sfFlags), (bHigh ? lsfHighAuth : lsfLowAuth)))
|
||||
else if ((is_bit_set (sleBck->getFieldU32 (sfFlags), lsfRequireAuth)
|
||||
&& !is_bit_set (sleRippleState->getFieldU32 (sfFlags), (bHigh ? lsfHighAuth : lsfLowAuth)))
|
||||
&& sleRippleState->getFieldAmount(sfBalance) == zero) // CHECKME
|
||||
{
|
||||
WriteLog (lsWARNING, RippleCalc) << "pushNode: delay: can't receive IOUs from issuer without auth.";
|
||||
@@ -687,7 +687,7 @@ void PathState::setCanonical (
|
||||
const Node& pnCur = psExpanded.vpnNodes[uNode];
|
||||
const Node& pnNxt = psExpanded.vpnNodes[uNode + 1];
|
||||
|
||||
const bool bCurAccount = isSetBit (pnCur.uFlags, STPathElement::typeAccount);
|
||||
const bool bCurAccount = is_bit_set (pnCur.uFlags, STPathElement::typeAccount);
|
||||
|
||||
bool bSkip = false;
|
||||
|
||||
@@ -707,8 +707,8 @@ void PathState::setCanonical (
|
||||
else
|
||||
{
|
||||
// Currently at an offer.
|
||||
const bool bPrvAccount = isSetBit (pnPrv.uFlags, STPathElement::typeAccount);
|
||||
const bool bNxtAccount = isSetBit (pnNxt.uFlags, STPathElement::typeAccount);
|
||||
const bool bPrvAccount = is_bit_set (pnPrv.uFlags, STPathElement::typeAccount);
|
||||
const bool bNxtAccount = is_bit_set (pnNxt.uFlags, STPathElement::typeAccount);
|
||||
|
||||
if (bPrvAccount && bNxtAccount // Offer surrounded by accounts.
|
||||
&& pnPrv.uCurrencyID != pnNxt.uCurrencyID)
|
||||
@@ -784,9 +784,9 @@ void PathState::checkNoRipple (
|
||||
terStatus = terNO_LINE;
|
||||
}
|
||||
else if (
|
||||
isSetBit (sleIn->getFieldU32 (sfFlags),
|
||||
is_bit_set (sleIn->getFieldU32 (sfFlags),
|
||||
(secondAccount > firstAccount) ? lsfHighNoRipple : lsfLowNoRipple) &&
|
||||
isSetBit (sleOut->getFieldU32 (sfFlags),
|
||||
is_bit_set (sleOut->getFieldU32 (sfFlags),
|
||||
(secondAccount > thirdAccount) ? lsfHighNoRipple : lsfLowNoRipple))
|
||||
{
|
||||
WriteLog (lsINFO, RippleCalc) << "Path violates noRipple constraint between " <<
|
||||
@@ -810,7 +810,7 @@ void PathState::checkNoRipple (uint160 const& uDstAccountID, uint160 const& uSrc
|
||||
{
|
||||
// There's just one link in the path
|
||||
// We only need to check source-node-dest
|
||||
if (isSetBit (vpnNodes[0].uFlags, STPathElement::typeAccount) &&
|
||||
if (is_bit_set (vpnNodes[0].uFlags, STPathElement::typeAccount) &&
|
||||
(vpnNodes[0].uAccountID != uSrcAccountID) &&
|
||||
(vpnNodes[0].uAccountID != uDstAccountID))
|
||||
{
|
||||
@@ -824,8 +824,8 @@ void PathState::checkNoRipple (uint160 const& uDstAccountID, uint160 const& uSrc
|
||||
}
|
||||
|
||||
// Check source <-> first <-> second
|
||||
if (isSetBit (vpnNodes[0].uFlags, STPathElement::typeAccount) &&
|
||||
isSetBit (vpnNodes[1].uFlags, STPathElement::typeAccount) &&
|
||||
if (is_bit_set (vpnNodes[0].uFlags, STPathElement::typeAccount) &&
|
||||
is_bit_set (vpnNodes[1].uFlags, STPathElement::typeAccount) &&
|
||||
(vpnNodes[0].uAccountID != uSrcAccountID))
|
||||
{
|
||||
if ((vpnNodes[0].uCurrencyID != vpnNodes[1].uCurrencyID))
|
||||
@@ -844,8 +844,8 @@ void PathState::checkNoRipple (uint160 const& uDstAccountID, uint160 const& uSrc
|
||||
|
||||
// Check second_from_last <-> last <-> destination
|
||||
size_t s = vpnNodes.size() - 2;
|
||||
if (isSetBit (vpnNodes[s].uFlags, STPathElement::typeAccount) &&
|
||||
isSetBit (vpnNodes[s+1].uFlags, STPathElement::typeAccount) &&
|
||||
if (is_bit_set (vpnNodes[s].uFlags, STPathElement::typeAccount) &&
|
||||
is_bit_set (vpnNodes[s+1].uFlags, STPathElement::typeAccount) &&
|
||||
(uDstAccountID != vpnNodes[s+1].uAccountID))
|
||||
{
|
||||
if ((vpnNodes[s].uCurrencyID != vpnNodes[s+1].uCurrencyID))
|
||||
@@ -868,9 +868,9 @@ void PathState::checkNoRipple (uint160 const& uDstAccountID, uint160 const& uSrc
|
||||
for (int i = 1; i < (vpnNodes.size() - 1); ++i)
|
||||
{
|
||||
|
||||
if (isSetBit (vpnNodes[i-1].uFlags, STPathElement::typeAccount) &&
|
||||
isSetBit (vpnNodes[i].uFlags, STPathElement::typeAccount) &&
|
||||
isSetBit (vpnNodes[i+1].uFlags, STPathElement::typeAccount))
|
||||
if (is_bit_set (vpnNodes[i-1].uFlags, STPathElement::typeAccount) &&
|
||||
is_bit_set (vpnNodes[i].uFlags, STPathElement::typeAccount) &&
|
||||
is_bit_set (vpnNodes[i+1].uFlags, STPathElement::typeAccount))
|
||||
{ // two consecutive account-to-account links
|
||||
|
||||
uint160 const& currencyID = vpnNodes[i].uCurrencyID;
|
||||
|
||||
@@ -588,7 +588,7 @@ bool Pathfinder::isNoRipple (const uint160& setByID, const uint160& setOnID, con
|
||||
{
|
||||
SLE::pointer sleRipple = mLedger->getSLEi (Ledger::getRippleStateIndex (setByID, setOnID, currencyID));
|
||||
return sleRipple &&
|
||||
isSetBit (sleRipple->getFieldU32 (sfFlags), (setByID > setOnID) ? lsfHighNoRipple : lsfLowNoRipple);
|
||||
is_bit_set (sleRipple->getFieldU32 (sfFlags), (setByID > setOnID) ? lsfHighNoRipple : lsfLowNoRipple);
|
||||
}
|
||||
|
||||
// Does this path end on an account-to-account link whose last account
|
||||
@@ -601,7 +601,7 @@ bool Pathfinder::isNoRippleOut (const STPath& currentPath)
|
||||
|
||||
// Last link must be an account
|
||||
STPathElement const& endElement = *(currentPath.end() - 1);
|
||||
if (!isSetBit(endElement.getNodeType(), STPathElement::typeAccount))
|
||||
if (!is_bit_set(endElement.getNodeType(), STPathElement::typeAccount))
|
||||
return false;
|
||||
|
||||
// What account are we leaving?
|
||||
@@ -640,7 +640,7 @@ void Pathfinder::addLink(
|
||||
SLE::pointer sleEnd = mLedger->getSLEi(Ledger::getAccountRootIndex(uEndAccount));
|
||||
if (sleEnd)
|
||||
{
|
||||
bool const bRequireAuth = isSetBit(sleEnd->getFieldU32(sfFlags), lsfRequireAuth);
|
||||
bool const bRequireAuth = is_bit_set(sleEnd->getFieldU32(sfFlags), lsfRequireAuth);
|
||||
bool const bIsEndCurrency = (uEndCurrency == mDstAmount.getCurrency());
|
||||
bool const bIsNoRippleOut = isNoRippleOut (currentPath);
|
||||
|
||||
|
||||
@@ -1150,8 +1150,8 @@ TER RippleCalc::calcNodeAccountRev (const unsigned int uNode, PathState& psCur,
|
||||
PathState::Node& pnNxt = psCur.vpnNodes[uNode == uLast ? uLast : uNode + 1];
|
||||
|
||||
// Current is allowed to redeem to next.
|
||||
const bool bPrvAccount = !uNode || isSetBit (pnPrv.uFlags, STPathElement::typeAccount);
|
||||
const bool bNxtAccount = uNode == uLast || isSetBit (pnNxt.uFlags, STPathElement::typeAccount);
|
||||
const bool bPrvAccount = !uNode || is_bit_set (pnPrv.uFlags, STPathElement::typeAccount);
|
||||
const bool bNxtAccount = uNode == uLast || is_bit_set (pnNxt.uFlags, STPathElement::typeAccount);
|
||||
|
||||
const uint160& uCurAccountID = pnCur.uAccountID;
|
||||
const uint160& uPrvAccountID = bPrvAccount ? pnPrv.uAccountID : uCurAccountID;
|
||||
@@ -1513,8 +1513,8 @@ TER RippleCalc::calcNodeAccountFwd (
|
||||
PathState::Node& pnCur = psCur.vpnNodes[uNode];
|
||||
PathState::Node& pnNxt = psCur.vpnNodes[uNode == uLast ? uLast : uNode + 1];
|
||||
|
||||
const bool bPrvAccount = isSetBit (pnPrv.uFlags, STPathElement::typeAccount);
|
||||
const bool bNxtAccount = isSetBit (pnNxt.uFlags, STPathElement::typeAccount);
|
||||
const bool bPrvAccount = is_bit_set (pnPrv.uFlags, STPathElement::typeAccount);
|
||||
const bool bNxtAccount = is_bit_set (pnNxt.uFlags, STPathElement::typeAccount);
|
||||
|
||||
const uint160& uCurAccountID = pnCur.uAccountID;
|
||||
const uint160& uPrvAccountID = bPrvAccount ? pnPrv.uAccountID : uCurAccountID;
|
||||
@@ -1840,7 +1840,7 @@ TER RippleCalc::calcNodeAccountFwd (
|
||||
TER RippleCalc::calcNodeFwd (const unsigned int uNode, PathState& psCur, const bool bMultiQuality)
|
||||
{
|
||||
const PathState::Node& pnCur = psCur.vpnNodes[uNode];
|
||||
const bool bCurAccount = isSetBit (pnCur.uFlags, STPathElement::typeAccount);
|
||||
const bool bCurAccount = is_bit_set (pnCur.uFlags, STPathElement::typeAccount);
|
||||
|
||||
WriteLog (lsTRACE, RippleCalc) << boost::str (boost::format ("calcNodeFwd> uNode=%d") % uNode);
|
||||
|
||||
@@ -1875,7 +1875,7 @@ TER RippleCalc::calcNodeFwd (const unsigned int uNode, PathState& psCur, const b
|
||||
TER RippleCalc::calcNodeRev (const unsigned int uNode, PathState& psCur, const bool bMultiQuality)
|
||||
{
|
||||
PathState::Node& pnCur = psCur.vpnNodes[uNode];
|
||||
bool const bCurAccount = isSetBit (pnCur.uFlags, STPathElement::typeAccount);
|
||||
bool const bCurAccount = is_bit_set (pnCur.uFlags, STPathElement::typeAccount);
|
||||
TER terResult;
|
||||
|
||||
// Do current node reverse.
|
||||
|
||||
@@ -59,22 +59,22 @@ public:
|
||||
// True, Provided auth to peer.
|
||||
bool getAuth () const
|
||||
{
|
||||
return isSetBit (mFlags, mViewLowest ? lsfLowAuth : lsfHighAuth);
|
||||
return is_bit_set (mFlags, mViewLowest ? lsfLowAuth : lsfHighAuth);
|
||||
}
|
||||
|
||||
bool getAuthPeer () const
|
||||
{
|
||||
return isSetBit (mFlags, !mViewLowest ? lsfLowAuth : lsfHighAuth);
|
||||
return is_bit_set (mFlags, !mViewLowest ? lsfLowAuth : lsfHighAuth);
|
||||
}
|
||||
|
||||
bool getNoRipple () const
|
||||
{
|
||||
return isSetBit (mFlags, mViewLowest ? lsfLowNoRipple : lsfHighNoRipple);
|
||||
return is_bit_set (mFlags, mViewLowest ? lsfLowNoRipple : lsfHighNoRipple);
|
||||
}
|
||||
|
||||
bool getNoRipplePeer () const
|
||||
{
|
||||
return isSetBit (mFlags, !mViewLowest ? lsfLowNoRipple : lsfHighNoRipple);
|
||||
return is_bit_set (mFlags, !mViewLowest ? lsfLowNoRipple : lsfHighNoRipple);
|
||||
}
|
||||
|
||||
const STAmount& getBalance () const
|
||||
|
||||
Reference in New Issue
Block a user