From ba6ff9a6f70139594362b4b4a6b816707bb165c8 Mon Sep 17 00:00:00 2001 From: Jim Posen Date: Mon, 27 Aug 2018 15:42:35 -0700 Subject: blockfilter: Functions to translate filter types to/from names. --- src/blockfilter.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/blockfilter.cpp') diff --git a/src/blockfilter.cpp b/src/blockfilter.cpp index e15213c552..b96956212b 100644 --- a/src/blockfilter.cpp +++ b/src/blockfilter.cpp @@ -15,6 +15,10 @@ static constexpr int GCS_SER_TYPE = SER_NETWORK; /// Protocol version used to serialize parameters in GCS filter encoding. static constexpr int GCS_SER_VERSION = 0; +static const std::map g_filter_types = { + {BlockFilterType::BASIC, "basic"}, +}; + template static void GolombRiceEncode(BitStreamWriter& bitwriter, uint8_t P, uint64_t x) { @@ -197,6 +201,23 @@ bool GCSFilter::MatchAny(const ElementSet& elements) const return MatchInternal(queries.data(), queries.size()); } +const std::string& BlockFilterTypeName(BlockFilterType filter_type) +{ + static std::string unknown_retval = ""; + auto it = g_filter_types.find(filter_type); + return it != g_filter_types.end() ? it->second : unknown_retval; +} + +bool BlockFilterTypeByName(const std::string& name, BlockFilterType& filter_type) { + for (const auto& entry : g_filter_types) { + if (entry.second == name) { + filter_type = entry.first; + return true; + } + } + return false; +} + static GCSFilter::ElementSet BasicFilterElements(const CBlock& block, const CBlockUndo& block_undo) { -- cgit v1.2.3