20#ifndef RIPPLE_PROTOCOL_FEATURE_H_INCLUDED 
   21#define RIPPLE_PROTOCOL_FEATURE_H_INCLUDED 
   23#include <xrpl/basics/base_uint.h> 
   25#include <boost/container/flat_map.hpp> 
   96#pragma push_macro("XRPL_FEATURE") 
   98#pragma push_macro("XRPL_FIX") 
  100#pragma push_macro("XRPL_RETIRE") 
  103#define XRPL_FEATURE(name, supported, vote) +1 
  104#define XRPL_FIX(name, supported, vote) +1 
  105#define XRPL_RETIRE(name) +1 
  113#include <xrpl/protocol/detail/features.macro> 
  117#pragma pop_macro("XRPL_RETIRE") 
  119#pragma pop_macro("XRPL_FIX") 
  121#pragma pop_macro("XRPL_FEATURE") 
  161    template <
class... Fs>
 
  166        if constexpr (
sizeof...(fs) > 0)
 
 
  172    using base::operator==;
 
  183    using base::operator[];
 
  194            "ripple::FeatureBitset::FeatureBitset(base) : count match");
 
 
  197    template <
class... Fs>
 
  202            count() == (
sizeof...(fs) + 1),
 
  203            "ripple::FeatureBitset::FeatureBitset(uint256) : count and " 
  204            "sizeof... do match");
 
 
  210        for (
auto const& f : fs)
 
  213            fs.size() == 
count(),
 
  214            "ripple::FeatureBitset::FeatureBitset(Container auto) : count and " 
 
  275            static_cast<base const&
>(lhs) & 
static_cast<base const&
>(rhs)};
 
 
  294            static_cast<base const&
>(lhs) | 
static_cast<base const&
>(rhs)};
 
 
  313            static_cast<base const&
>(lhs) ^ 
static_cast<base const&
>(rhs)};
 
 
 
  352    for (
size_t i = 0; i < bs.
size(); ++i)
 
 
  357#pragma push_macro("XRPL_FEATURE") 
  359#pragma push_macro("XRPL_FIX") 
  361#pragma push_macro("XRPL_RETIRE") 
  364#define XRPL_FEATURE(name, supported, vote) extern uint256 const feature##name; 
  365#define XRPL_FIX(name, supported, vote) extern uint256 const fix##name; 
  366#define XRPL_RETIRE(name) 
  368#include <xrpl/protocol/detail/features.macro> 
  371#pragma pop_macro("XRPL_RETIRE") 
  373#pragma pop_macro("XRPL_FIX") 
  375#pragma pop_macro("XRPL_FEATURE") 
friend FeatureBitset operator|(FeatureBitset const &lhs, FeatureBitset const &rhs)
 
friend FeatureBitset operator&(FeatureBitset const &lhs, uint256 const &rhs)
 
friend FeatureBitset operator-(FeatureBitset const &lhs, uint256 const &rhs)
 
friend FeatureBitset operator|(uint256 const &lhs, FeatureBitset const &rhs)
 
FeatureBitset & operator|=(FeatureBitset const &rhs)
 
friend FeatureBitset operator^(FeatureBitset const &lhs, uint256 const &rhs)
 
auto operator[](uint256 const &f)
 
void initFromFeatures(uint256 const &f, Fs &&... fs)
 
friend FeatureBitset operator|(FeatureBitset const &lhs, uint256 const &rhs)
 
friend FeatureBitset operator&(uint256 const &lhs, FeatureBitset const &rhs)
 
friend FeatureBitset operator^(FeatureBitset const &lhs, FeatureBitset const &rhs)
 
FeatureBitset(uint256 const &f, Fs &&... fs)
 
FeatureBitset operator~() const
 
friend FeatureBitset operator^(uint256 const &lhs, FeatureBitset const &rhs)
 
friend FeatureBitset operator&(FeatureBitset const &lhs, FeatureBitset const &rhs)
 
friend FeatureBitset operator-(uint256 const &lhs, FeatureBitset const &rhs)
 
FeatureBitset & flip(uint256 const &f)
 
FeatureBitset(Col const &fs)
 
FeatureBitset & set(uint256 const &f, bool value=true)
 
friend FeatureBitset operator-(FeatureBitset const &lhs, FeatureBitset const &rhs)
 
FeatureBitset(base const &b)
 
FeatureBitset & operator&=(FeatureBitset const &rhs)
 
FeatureBitset & reset(uint256 const &f)
 
auto operator[](uint256 const &f) const
 
static constexpr std::size_t numFeatures
 
std::size_t numUpVotedAmendments()
Amendments that this server will vote for by default.
 
std::size_t numDownVotedAmendments()
Amendments that this server won't vote for by default.
 
std::map< std::string, VoteBehavior > const & supportedAmendments()
Amendments that this server supports and the default voting behavior.
 
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
 
uint256 bitsetIndexToFeature(size_t i)
 
size_t featureToBitsetIndex(uint256 const &f)
 
std::map< std::string, AmendmentSupport > const & allAmendments()
All amendments libxrpl knows about.
 
std::string featureToName(uint256 const &f)
 
std::optional< uint256 > getRegisteredFeature(std::string const &name)
 
void foreachFeature(FeatureBitset bs, F &&f)