20 #ifndef RIPPLE_PROTOCOL_FEATURE_H_INCLUDED
21 #define RIPPLE_PROTOCOL_FEATURE_H_INCLUDED
23 #include <ripple/basics/base_uint.h>
24 #include <boost/container/flat_map.hpp>
117 template <
class... Fs>
122 if constexpr (
sizeof...(fs) > 0)
128 using base::operator==;
139 using base::operator[];
151 template <
class... Fs>
155 assert(
count() == (
sizeof...(fs) + 1));
161 for (
auto const& f : fs)
163 assert(fs.size() ==
count());
223 static_cast<base const&
>(lhs) &
static_cast<base const&
>(rhs)};
242 static_cast<base const&
>(lhs) |
static_cast<base const&
>(rhs)};
261 static_cast<base const&
>(lhs) ^
static_cast<base const&
>(rhs)};
300 for (
size_t i = 0; i < bs.
size(); ++i)
FeatureBitset & operator|=(FeatureBitset const &rhs)
const uint256 fixRemoveNFTokenAutoTrustLine
const uint256 fixQualityUpperBound
const uint256 fixNFTokenNegOffer
const uint256 featureXRPFees
static constexpr std::size_t numFeatures
const uint256 featureDepositPreauth
FeatureBitset(uint256 const &f, Fs &&... fs)
const uint256 fixSTAmountCanonicalize
const uint256 featureDepositAuth
const uint256 featureMultiSignReserve
FeatureBitset & flip(uint256 const &f)
FeatureBitset(base const &b)
friend FeatureBitset operator^(uint256 const &lhs, FeatureBitset const &rhs)
friend FeatureBitset operator-(uint256 const &lhs, FeatureBitset const &rhs)
const uint256 fixNFTokenRemint
friend FeatureBitset operator|(uint256 const &lhs, FeatureBitset const &rhs)
const uint256 featureDeletableAccounts
friend FeatureBitset operator^(FeatureBitset const &lhs, FeatureBitset const &rhs)
std::size_t numUpVotedAmendments()
Amendments that this server will vote for by default.
friend FeatureBitset operator&(uint256 const &lhs, FeatureBitset const &rhs)
const uint256 featureRequireFullyCanonicalSig
std::size_t numDownVotedAmendments()
Amendments that this server won't vote for by default.
void foreachFeature(FeatureBitset bs, F &&f)
friend FeatureBitset operator&(FeatureBitset const &lhs, uint256 const &rhs)
const uint256 featureExpandedSignerList
const uint256 featureDisallowIncoming
const uint256 fixCheckThreading
const uint256 fixAmendmentMajorityCalc
FeatureBitset operator~() const
friend FeatureBitset operator|(FeatureBitset const &lhs, uint256 const &rhs)
auto operator[](uint256 const &f) const
const uint256 fixTakerDryOfferRemoval
void initFromFeatures(uint256 const &f, Fs &&... fs)
size_t featureToBitsetIndex(uint256 const &f)
const uint256 fixPayChanRecipientOwnerDir
const uint256 fixMasterKeyAsRegularKey
const uint256 featureChecks
const uint256 fixNFTokenDirV1
const uint256 fixRmSmallIncreasedQOffers
const uint256 featureFlowSortStrands
const uint256 fixTrustLinesToSelf
const uint256 featureHardenedValidations
FeatureBitset(Col const &fs)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
const uint256 featureNonFungibleTokensV1
const uint256 featureCryptoConditionsSuite
const uint256 featureImmediateOfferKilled
const uint256 featureFlow
const uint256 featureNegativeUNL
const uint256 featureNonFungibleTokensV1_1
const uint256 fixUniversalNumber
FeatureBitset & reset(uint256 const &f)
uint256 bitsetIndexToFeature(size_t i)
FeatureBitset & set(uint256 const &f, bool value=true)
friend FeatureBitset operator&(FeatureBitset const &lhs, FeatureBitset const &rhs)
const uint256 featureTicketBatch
friend FeatureBitset operator-(FeatureBitset const &lhs, uint256 const &rhs)
FeatureBitset & operator&=(FeatureBitset const &rhs)
const uint256 featureOwnerPaysFee
const uint256 fixNonFungibleTokensV1_2
const uint256 featureCheckCashMakesTrustLine
std::optional< uint256 > getRegisteredFeature(std::string const &name)
friend FeatureBitset operator|(FeatureBitset const &lhs, FeatureBitset const &rhs)
const uint256 featureFlowCross
std::map< std::string, VoteBehavior > const & supportedAmendments()
Amendments that this server supports and the default voting behavior.
friend FeatureBitset operator-(FeatureBitset const &lhs, FeatureBitset const &rhs)
friend FeatureBitset operator^(FeatureBitset const &lhs, uint256 const &rhs)
auto operator[](uint256 const &f)
std::string featureToName(uint256 const &f)