From: Luca Heltai Date: Mon, 25 Sep 2017 11:49:13 +0000 (+0200) Subject: Added initialize with input_stream, and optional prm. X-Git-Tag: v9.0.0-rc1~1033^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F5116%2Fhead;p=dealii.git Added initialize with input_stream, and optional prm. --- diff --git a/include/deal.II/base/parameter_acceptor.h b/include/deal.II/base/parameter_acceptor.h index 334cfb5b48..fc271cb7f0 100644 --- a/include/deal.II/base/parameter_acceptor.h +++ b/include/deal.II/base/parameter_acceptor.h @@ -379,7 +379,21 @@ public: */ static void initialize(const std::string &filename="", const std::string &output_filename="", - const ParameterHandler::OutputStyle output_style_for_prm_format=ParameterHandler::ShortText); + const ParameterHandler::OutputStyle output_style_for_prm_format=ParameterHandler::ShortText, + ParameterHandler &prm = ParameterAcceptor::prm); + + /** + * Call declare_all_parameters(), read the parameters from the `input_stream` + * in `prm` format, and then call parse_all_parameters(). + * + * An exception is thrown if the `input_stream` is invalid. + * + * @param input_stream Input stream + * @param prm The ParameterHandler to use + */ + static void initialize(std::istream &input_stream, + ParameterHandler &prm = ParameterAcceptor::prm); + /** * Clear class list and global parameter file. diff --git a/source/base/parameter_acceptor.cc b/source/base/parameter_acceptor.cc index 105ef2fa86..7e771efa57 100644 --- a/source/base/parameter_acceptor.cc +++ b/source/base/parameter_acceptor.cc @@ -51,9 +51,10 @@ std::string ParameterAcceptor::get_section_name() const void ParameterAcceptor::initialize(const std::string &filename, const std::string &output_filename, - const ParameterHandler::OutputStyle output_style_for_prm_format) + const ParameterHandler::OutputStyle output_style_for_prm_format, + ParameterHandler &prm) { - declare_all_parameters(); + declare_all_parameters(prm); if (filename != "") { // check the extension of input file @@ -118,7 +119,19 @@ ParameterAcceptor::initialize(const std::string &filename, } // Finally do the parsing. - parse_all_parameters(); + parse_all_parameters(prm); +} + + + +void ParameterAcceptor::initialize(std::istream &input_stream, + ParameterHandler &prm) + +{ + AssertThrow(input_stream, ExcIO()); + declare_all_parameters(prm); + prm.parse_input(input_stream); + parse_all_parameters(prm); } void