diff --git a/src/cpp/ripple/Ledger.cpp b/src/cpp/ripple/Ledger.cpp index 227f350eb..da9b4e105 100644 --- a/src/cpp/ripple/Ledger.cpp +++ b/src/cpp/ripple/Ledger.cpp @@ -1327,6 +1327,18 @@ std::vector< std::pair > Ledger::getLedgerHashes() return ret; } +boost::unordered_set Ledger::getLedgerFeatures() +{ + boost::unordered_set usFeatures; + SLE::pointer sleFeatures = getSLEi(getLedgerFeatureIndex()); + if (sleFeatures) + { + BOOST_FOREACH(const uint256& uFeature, sleFeatures->getFieldV256(sfFeatures).peekValue()) + usFeatures.insert(uFeature); + } + return usFeatures; +} + // XRP to XRP not allowed. // Currencies must have appropriate issuer. // Currencies or accounts must differ. diff --git a/src/cpp/ripple/Ledger.h b/src/cpp/ripple/Ledger.h index b7e3cf524..3ad00ca8c 100644 --- a/src/cpp/ripple/Ledger.h +++ b/src/cpp/ripple/Ledger.h @@ -5,6 +5,7 @@ #include #include +#include #include #include @@ -219,6 +220,7 @@ public: static uint256 getLedgerFeatureIndex(); static uint256 getLedgerFeeIndex(); + boost::unordered_set getLedgerFeatures(); std::vector getNeededTransactionHashes(int max, SHAMapSyncFilter* filter); std::vector getNeededAccountStateHashes(int max, SHAMapSyncFilter* filter);