From 95d367975133ff59c89c61e59fc58f1d53109168 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Mon, 7 Apr 2025 07:25:36 +0200 Subject: [PATCH] refactor: hide private members in `compression_registry` --- include/dwarfs/detail/compression_registry.h | 2 ++ src/compression_registry.cpp | 12 ++++++++++++ src/compressor_registry.cpp | 8 +------- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/include/dwarfs/detail/compression_registry.h b/include/dwarfs/detail/compression_registry.h index 8f0f8fa9..2a5d9c17 100644 --- a/include/dwarfs/detail/compression_registry.h +++ b/include/dwarfs/detail/compression_registry.h @@ -47,7 +47,9 @@ struct compression_registrar; class compression_registry_base { protected: void register_name(compression_type type, std::string_view name); + compression_type get_type(std::string const& name) const; + private: std::unordered_map names_; }; diff --git a/src/compression_registry.cpp b/src/compression_registry.cpp index a9496f67..b1883e6e 100644 --- a/src/compression_registry.cpp +++ b/src/compression_registry.cpp @@ -31,6 +31,7 @@ #include #include +#include namespace dwarfs::detail { @@ -43,4 +44,15 @@ void compression_registry_base::register_name(compression_type type, } } +compression_type +compression_registry_base::get_type(std::string const& name) const { + auto nit = names_.find(name); + + if (nit == names_.end()) { + DWARFS_THROW(runtime_error, "unknown compression: " + name); + } + + return nit->second; +} + } // namespace dwarfs::detail diff --git a/src/compressor_registry.cpp b/src/compressor_registry.cpp index 1c67b200..3ac7f8e2 100644 --- a/src/compressor_registry.cpp +++ b/src/compressor_registry.cpp @@ -27,7 +27,6 @@ */ #include -#include #include #include "compression_registry.h" @@ -51,13 +50,8 @@ compressor_registry& compressor_registry::instance() { std::unique_ptr compressor_registry::create(std::string_view spec) const { option_map om(spec); - auto nit = names_.find(om.choice()); - if (nit == names_.end()) { - DWARFS_THROW(runtime_error, "unknown compression: " + om.choice()); - } - - auto obj = get_factory(nit->second).create(om); + auto obj = get_factory(get_type(om.choice())).create(om); om.report();