From 63aa8e310e7d6bcf37cc839efe5951799427c250 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Wed, 22 Aug 2018 13:57:03 -0700 Subject: [PATCH] ircd::conf: Restructure virtuals to direct all entry through parent. --- include/ircd/conf.h | 21 +++++++++++++-------- ircd/conf.cc | 30 ++++++++++++++++++++++++------ 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/include/ircd/conf.h b/include/ircd/conf.h index af08dc4dd..d1630a178 100644 --- a/include/ircd/conf.h +++ b/include/ircd/conf.h @@ -60,8 +60,13 @@ struct ircd::conf::item json::object feature; string_view name; - virtual string_view get(const mutable_buffer &) const; - virtual bool set(const string_view &); + protected: + virtual string_view on_get(const mutable_buffer &) const; + virtual bool on_set(const string_view &); + + public: + string_view get(const mutable_buffer &) const; + bool set(const string_view &); item(const json::members &); item(item &&) = delete; @@ -95,12 +100,12 @@ struct ircd::conf::lex_castable :conf::item<> ,conf::value { - string_view get(const mutable_buffer &out) const override + string_view on_get(const mutable_buffer &out) const override { return lex_cast(this->_value, out); } - bool set(const string_view &s) override + bool on_set(const string_view &s) override { this->_value = lex_cast(s); return true; @@ -122,8 +127,8 @@ struct ircd::conf::item return _value; } - string_view get(const mutable_buffer &out) const override; - bool set(const string_view &s) override; + string_view on_get(const mutable_buffer &out) const override; + bool on_set(const string_view &s) override; item(const json::members &members); }; @@ -133,8 +138,8 @@ struct ircd::conf::item :conf::item<> ,conf::value { - string_view get(const mutable_buffer &out) const override; - bool set(const string_view &s) override; + string_view on_get(const mutable_buffer &out) const override; + bool on_set(const string_view &s) override; item(const json::members &members); }; diff --git a/ircd/conf.cc b/ircd/conf.cc index 655009ca9..729fb1a74 100644 --- a/ircd/conf.cc +++ b/ircd/conf.cc @@ -113,13 +113,31 @@ noexcept } bool -ircd::conf::item::set(const string_view &) +ircd::conf::item::set(const string_view &val) +{ + const bool ret + { + on_set(val) + }; + + return ret; +} + +ircd::string_view +ircd::conf::item::get(const mutable_buffer &buf) +const +{ + return on_get(buf); +} + +bool +ircd::conf::item::on_set(const string_view &) { return false; } ircd::string_view -ircd::conf::item::get(const mutable_buffer &) +ircd::conf::item::on_get(const mutable_buffer &) const { return {}; @@ -140,14 +158,14 @@ ircd::conf::item::item(const json::members &members) } bool -ircd::conf::item::set(const string_view &s) +ircd::conf::item::on_set(const string_view &s) { _value = std::string{s}; return true; } ircd::string_view -ircd::conf::item::get(const mutable_buffer &out) +ircd::conf::item::on_get(const mutable_buffer &out) const { return { data(out), _value.copy(data(out), size(out)) }; @@ -164,7 +182,7 @@ ircd::conf::item::item(const json::members &members) } bool -ircd::conf::item::set(const string_view &s) +ircd::conf::item::on_set(const string_view &s) { switch(hash(s)) { @@ -184,7 +202,7 @@ ircd::conf::item::set(const string_view &s) } ircd::string_view -ircd::conf::item::get(const mutable_buffer &out) +ircd::conf::item::on_get(const mutable_buffer &out) const { return _value?