From 67879bd636193cc223f660ee155aff10bcf7f67a Mon Sep 17 00:00:00 2001 From: Felix Schindler <felix.schindler@wwu.de> Date: Wed, 10 Sep 2014 13:22:12 +0200 Subject: [PATCH] [common.configuration] added ctor taking an istream --- dune/stuff/common/configuration.cc | 18 ++++++++++++++++++ dune/stuff/common/configuration.hh | 8 ++++++++ 2 files changed, 26 insertions(+) diff --git a/dune/stuff/common/configuration.cc b/dune/stuff/common/configuration.cc index 0f32b0076..568526891 100644 --- a/dune/stuff/common/configuration.cc +++ b/dune/stuff/common/configuration.cc @@ -100,6 +100,17 @@ Configuration::Configuration(const Configuration& other) { } +Configuration::Configuration(std::istream& in, const bool record_defaults, const bool warn_on_default_access, + const bool log_on_exit, const std::string logfile) + : BaseType(initialize(in)) + , requests_map_() + , record_defaults_(record_defaults) + , warn_on_default_access_(warn_on_default_access) + , log_on_exit_(log_on_exit) + , logfile_(logfile) +{ +} + Configuration::Configuration(const std::string filename, const bool record_defaults, const bool warn_on_default_access, const bool log_on_exit, const std::string logfile) : Configuration::Configuration(initialize(filename), record_defaults, warn_on_default_access, log_on_exit, logfile) @@ -481,6 +492,13 @@ ParameterTree Configuration::initialize(const std::string filename) return param_tree; } // ... initialize(...) +ParameterTree Configuration::initialize(std::istream& in) +{ + ParameterTree param_tree; + Dune::ParameterTreeParser::readINITree(in, param_tree); + return param_tree; +} // ... initialize(...) + ParameterTree Configuration::initialize(int argc, char** argv) { ParameterTree param_tree; diff --git a/dune/stuff/common/configuration.hh b/dune/stuff/common/configuration.hh index 4b4ba101e..74fa77e8f 100644 --- a/dune/stuff/common/configuration.hh +++ b/dune/stuff/common/configuration.hh @@ -117,6 +117,11 @@ public: Configuration(const Configuration& other); + Configuration(std::istream& in, const bool record_defaults = internal::configuration_record_defaults, + const bool warn_on_default_access = internal::configuration_warn_on_default_access, + const bool log_on_exit = internal::configuration_log_on_exit, + const std::string logfile = internal::configuration_logfile); + //! read ParameterTree from file and call Configuration(const ParameterTree& tree) explicit Configuration(const std::string filename, const bool record_defaults, const bool warn_on_default_access, const bool log_on_exit, const std::string logfile); @@ -578,6 +583,9 @@ private: //! read Dune::ParameterTree from file static ParameterTree initialize(const std::string filename); + //! read Dune::ParameterTree from istream + static ParameterTree initialize(std::istream& in); + //! read Dune::ParameterTree from arguments static ParameterTree initialize(int argc, char** argv); -- GitLab