From 32e62f9a643aed367063325581922233e34e9304 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sun, 27 Jun 2021 11:48:24 +0800 Subject: [PATCH] common/config: s/boost::variant/std::variant/ we should use standard library for more well defined behavior, and less dependencies on 3rd party libraries. Signed-off-by: Kefu Chai --- src/common/config.cc | 25 +++++++++++-------------- src/common/config.h | 20 ++++++++++---------- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/src/common/config.cc b/src/common/config.cc index ca9f194a125b7..a58d9d9e1f2d2 100644 --- a/src/common/config.cc +++ b/src/common/config.cc @@ -13,8 +13,6 @@ */ #include -#include - #include "common/ceph_argparse.h" #include "common/common_init.h" #include "common/config.h" @@ -1455,7 +1453,7 @@ int md_config_t::_rm_val(ConfigValues& values, namespace { template -struct get_size_visitor : public boost::static_visitor +struct get_size_visitor { get_size_visitor() {} @@ -1474,34 +1472,33 @@ struct get_size_visitor : public boost::static_visitor /** * Handles assigning from a variant-of-types to a variant-of-pointers-to-types */ -template -class assign_visitor : public boost::static_visitor<> +class assign_visitor { - Config *conf; + ConfigValues *conf; Option::value_t val; public: - assign_visitor(Config *conf_, Option::value_t val_) + assign_visitor(ConfigValues *conf_, Option::value_t val_) : conf(conf_), val(val_) {} template - void operator()(T Config::* ptr) const + void operator()(T ConfigValues::* ptr) const { - T *member = const_cast(&(conf->*(boost::get(ptr)))); + T *member = const_cast(&(conf->*(ptr))); *member = std::get(val); } - void operator()(uint64_t Config::* ptr) const + void operator()(uint64_t ConfigValues::* ptr) const { using T = uint64_t; - auto member = const_cast(&(conf->*(boost::get(ptr)))); + auto member = const_cast(&(conf->*(ptr))); *member = std::visit(get_size_visitor{}, val); } - void operator()(int64_t Config::* ptr) const + void operator()(int64_t ConfigValues::* ptr) const { using T = int64_t; - auto member = const_cast(&(conf->*(boost::get(ptr)))); + auto member = const_cast(&(conf->*(ptr))); *member = std::visit(get_size_visitor{}, val); } }; @@ -1522,7 +1519,7 @@ void md_config_t::update_legacy_val(ConfigValues& values, md_config_t::member_ptr_t member_ptr) { Option::value_t v = _get_val(values, opt); - boost::apply_visitor(assign_visitor(&values, v), member_ptr); + std::visit(assign_visitor(&values, v), member_ptr); } static void dump(Formatter *f, int level, Option::value_t in) diff --git a/src/common/config.h b/src/common/config.h index 8b5402b1095b7..ce5f9277796f8 100644 --- a/src/common/config.h +++ b/src/common/config.h @@ -16,8 +16,8 @@ #define CEPH_CONFIG_H #include +#include #include -#include #include "common/ConfUtils.h" #include "common/code_environment.h" #include "log/SubsystemMap.h" @@ -70,14 +70,14 @@ extern const char *ceph_conf_level_name(int level); */ struct md_config_t { public: - typedef boost::variant member_ptr_t; + typedef std::variant member_ptr_t; // For use when intercepting configuration updates typedef std::function(this->get_val_generic(values, key)); } -inline std::ostream& operator<<(std::ostream& o, const boost::blank& ) { +inline std::ostream& operator<<(std::ostream& o, const std::monostate&) { return o << "INVALID_CONFIG_VALUE"; } -- 2.39.5