From 584da6dab30222b28556a7bf2693634153d62ce3 Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Mon, 18 Dec 2017 15:43:13 +0100 Subject: [PATCH] MinimizerCatalogue gives more access to its content. --- Fit/Kernel/MinimizerCatalogue.cpp | 19 ++++++++++++++----- Fit/Kernel/MinimizerCatalogue.h | 4 +++- Fit/Minimizer/MinimizerInfo.cpp | 8 ++++---- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/Fit/Kernel/MinimizerCatalogue.cpp b/Fit/Kernel/MinimizerCatalogue.cpp index 21dd4e8b5c2..0d5425dec4a 100644 --- a/Fit/Kernel/MinimizerCatalogue.cpp +++ b/Fit/Kernel/MinimizerCatalogue.cpp @@ -39,15 +39,24 @@ std::string MinimizerCatalogue::toString() const result << boost::format("%-15s|%-65s\n") % "Minimizer" % " Algorithms"; result << std::string(text_width, '-') << "\n"; - for(MinimizerInfo minimizer : m_minimizers) { + for(const auto& ingo : m_minimizers) { result << boost::format("%-15s| %-64s\n") - % minimizer.name() - % MinimizerUtils::toString(minimizer.algorithmNames(), std::string(" ")); + % ingo.name() + % MinimizerUtils::toString(ingo.algorithmNames(), std::string(" ")); } return result.str(); } +std::vector<std::string> MinimizerCatalogue::minimizerNames() const +{ + std::vector<std::string> result; + for(const auto& info : m_minimizers) + result.push_back(info.name()); + + return result; +} + //! Returns list of algorithms defined for the minimizer with a given name. std::vector<std::string> MinimizerCatalogue::algorithmNames(const std::string& minimizerName) const @@ -65,9 +74,9 @@ std::vector<std::string> MinimizerCatalogue::algorithmDescriptions( //! Returns info for minimizer with given name. -MinimizerInfo MinimizerCatalogue::minimizerInfo(const std::string& minimizerName) const +const MinimizerInfo& MinimizerCatalogue::minimizerInfo(const std::string& minimizerName) const { - for(auto info : m_minimizers) + for(const auto& info : m_minimizers) if(info.name() == minimizerName) return info; diff --git a/Fit/Kernel/MinimizerCatalogue.h b/Fit/Kernel/MinimizerCatalogue.h index 3af2894156e..ec1ed9df733 100644 --- a/Fit/Kernel/MinimizerCatalogue.h +++ b/Fit/Kernel/MinimizerCatalogue.h @@ -41,12 +41,14 @@ public: std::string toString() const; + std::vector<std::string> minimizerNames() const; + std::vector<std::string> algorithmNames(const std::string& minimizerName) const; std::vector<std::string> algorithmDescriptions(const std::string& minimizerName) const; + const MinimizerInfo& minimizerInfo(const std::string& minimizerName) const; private: - MinimizerInfo minimizerInfo(const std::string& minimizerName) const; void addMinimizerInfo(const MinimizerInfo& info); std::vector<MinimizerInfo> m_minimizers; diff --git a/Fit/Minimizer/MinimizerInfo.cpp b/Fit/Minimizer/MinimizerInfo.cpp index 190598d52f1..df6c44f69f7 100644 --- a/Fit/Minimizer/MinimizerInfo.cpp +++ b/Fit/Minimizer/MinimizerInfo.cpp @@ -26,7 +26,7 @@ MinimizerInfo::MinimizerInfo(const std::string& minimizerType, void MinimizerInfo::setAlgorithmName(const std::string& algorithmName) { - for (const AlgorithmInfo algo : m_algorithms) { + for (const AlgorithmInfo& algo : m_algorithms) { if(algo.name() == algorithmName) { m_current_algorithm = algorithmName; return; @@ -36,7 +36,7 @@ void MinimizerInfo::setAlgorithmName(const std::string& algorithmName) std::ostringstream msg; msg << "MinimizerInfo::setAlgorithmName() -> Error. Algorithm name '" << algorithmName <<"' is not in the list of defined algorithms ("; - for (const AlgorithmInfo algo : m_algorithms) + for (const AlgorithmInfo& algo : m_algorithms) msg << algo.name() << " "; msg << ")"; throw std::runtime_error(msg.str()); @@ -52,7 +52,7 @@ std::string MinimizerInfo::algorithmName() const std::vector<std::string> MinimizerInfo::algorithmNames() const { std::vector<std::string> result; - for (const AlgorithmInfo algo : m_algorithms) + for (const AlgorithmInfo& algo : m_algorithms) result.push_back(algo.name()); return result; } @@ -62,7 +62,7 @@ std::vector<std::string> MinimizerInfo::algorithmNames() const std::vector<std::string> MinimizerInfo::algorithmDescriptions() const { std::vector<std::string> result; - for (const AlgorithmInfo algo : m_algorithms) + for (const AlgorithmInfo& algo : m_algorithms) result.push_back(algo.description()); return result; } -- GitLab