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>
25 #include <boost/optional.hpp>
81 "CompareTakerFlowCross",
87 "CryptoConditionsSuite",
105 "fixTakerDryOfferRemoval",
106 "fixMasterKeyAsRegularKey",
108 "fixPayChanRecipientOwnerDir",
111 "fixQualityUpperBound",
112 "RequireFullyCanonicalSig",
128 boost::optional<uint256>
144 boost::optional<uint256>
154 :
private std::bitset<detail::FeatureCollections::numFeatures()>
158 template<
class... Fs>
162 if constexpr (
sizeof...(fs) > 0)
168 using base::operator==;
169 using base::operator!=;
180 using base::operator[];
193 template<
class... Fs>
204 for (
auto const& f : fs)
262 static_cast<base const&
>(rhs)};
287 static_cast<base const&
>(rhs)};
312 static_cast<base const&
>(rhs)};
361 for (
size_t i = 0; i < bs.
size(); ++i)
boost::optional< uint256 > getRegisteredFeature(std::string const &name) const
FeatureBitset & operator|=(FeatureBitset const &rhs)
const uint256 fixQualityUpperBound
const uint256 retiredFix1528
const uint256 retiredSortedDirectories
const uint256 featureDepositPreauth
FeatureBitset(uint256 const &f, Fs &&... fs)
const uint256 featureDepositAuth
boost::container::flat_map< uint256, std::size_t > featureToIndex
const uint256 featureMultiSignReserve
FeatureBitset & flip(uint256 const &f)
const uint256 retiredPayChan
const uint256 retiredFix1368
FeatureBitset(base const &b)
const uint256 retiredEnforceInvariants
friend FeatureBitset operator^(uint256 const &lhs, FeatureBitset const &rhs)
friend FeatureBitset operator-(uint256 const &lhs, FeatureBitset const &rhs)
friend FeatureBitset operator|(uint256 const &lhs, FeatureBitset const &rhs)
const uint256 featureDeletableAccounts
const uint256 retiredTickSize
friend FeatureBitset operator^(FeatureBitset const &lhs, FeatureBitset const &rhs)
friend FeatureBitset operator&(uint256 const &lhs, FeatureBitset const &rhs)
const uint256 featureRequireFullyCanonicalSig
void foreachFeature(FeatureBitset bs, F &&f)
uint256 const & bitsetIndexToFeature(size_t i) const
friend FeatureBitset operator&(FeatureBitset const &lhs, uint256 const &rhs)
std::vector< uint256 > features
const uint256 featureCompareTakerFlowCross
const uint256 retiredEscrow
const uint256 fixCheckThreading
const uint256 retiredFix1373
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 featureTickets
const uint256 retiredCryptoConditions
const uint256 featureChecks
FeatureBitset(Col const &fs)
std::vector< std::string > const & supportedAmendments()
Amendments that this server supports, but doesn't enable by default.
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
const uint256 featureCryptoConditionsSuite
static constexpr char const *const featureNames[]
std::size_t featureToBitsetIndex(uint256 const &f) const
const uint256 featureFlow
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 retiredFix1523
const uint256 retiredFix1201
friend FeatureBitset operator-(FeatureBitset const &lhs, uint256 const &rhs)
FeatureBitset & operator&=(FeatureBitset const &rhs)
const uint256 featureOwnerPaysFee
const uint256 retiredFix1512
friend FeatureBitset operator|(FeatureBitset const &lhs, FeatureBitset const &rhs)
const uint256 featureFlowCross
static constexpr std::size_t numFeatures()
friend FeatureBitset operator-(FeatureBitset const &lhs, FeatureBitset const &rhs)
friend FeatureBitset operator^(FeatureBitset const &lhs, uint256 const &rhs)
auto operator[](uint256 const &f)
boost::optional< uint256 > getRegisteredFeature(std::string const &name)
boost::container::flat_map< std::string, uint256 > nameToFeature