Skip to content
Snippets Groups Projects
Commit 584da6da authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

MinimizerCatalogue gives more access to its content.

parent fa0af27a
No related branches found
No related tags found
No related merge requests found
...@@ -39,15 +39,24 @@ std::string MinimizerCatalogue::toString() const ...@@ -39,15 +39,24 @@ std::string MinimizerCatalogue::toString() const
result << boost::format("%-15s|%-65s\n") % "Minimizer" % " Algorithms"; result << boost::format("%-15s|%-65s\n") % "Minimizer" % " Algorithms";
result << std::string(text_width, '-') << "\n"; result << std::string(text_width, '-') << "\n";
for(MinimizerInfo minimizer : m_minimizers) { for(const auto& ingo : m_minimizers) {
result << boost::format("%-15s| %-64s\n") result << boost::format("%-15s| %-64s\n")
% minimizer.name() % ingo.name()
% MinimizerUtils::toString(minimizer.algorithmNames(), std::string(" ")); % MinimizerUtils::toString(ingo.algorithmNames(), std::string(" "));
} }
return result.str(); 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. //! Returns list of algorithms defined for the minimizer with a given name.
std::vector<std::string> MinimizerCatalogue::algorithmNames(const std::string& minimizerName) const std::vector<std::string> MinimizerCatalogue::algorithmNames(const std::string& minimizerName) const
...@@ -65,9 +74,9 @@ std::vector<std::string> MinimizerCatalogue::algorithmDescriptions( ...@@ -65,9 +74,9 @@ std::vector<std::string> MinimizerCatalogue::algorithmDescriptions(
//! Returns info for minimizer with given name. //! 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) if(info.name() == minimizerName)
return info; return info;
......
...@@ -41,12 +41,14 @@ public: ...@@ -41,12 +41,14 @@ public:
std::string toString() const; std::string toString() const;
std::vector<std::string> minimizerNames() const;
std::vector<std::string> algorithmNames(const std::string& minimizerName) const; std::vector<std::string> algorithmNames(const std::string& minimizerName) const;
std::vector<std::string> algorithmDescriptions(const std::string& minimizerName) const; std::vector<std::string> algorithmDescriptions(const std::string& minimizerName) const;
const MinimizerInfo& minimizerInfo(const std::string& minimizerName) const;
private: private:
MinimizerInfo minimizerInfo(const std::string& minimizerName) const;
void addMinimizerInfo(const MinimizerInfo& info); void addMinimizerInfo(const MinimizerInfo& info);
std::vector<MinimizerInfo> m_minimizers; std::vector<MinimizerInfo> m_minimizers;
......
...@@ -26,7 +26,7 @@ MinimizerInfo::MinimizerInfo(const std::string& minimizerType, ...@@ -26,7 +26,7 @@ MinimizerInfo::MinimizerInfo(const std::string& minimizerType,
void MinimizerInfo::setAlgorithmName(const std::string& algorithmName) void MinimizerInfo::setAlgorithmName(const std::string& algorithmName)
{ {
for (const AlgorithmInfo algo : m_algorithms) { for (const AlgorithmInfo& algo : m_algorithms) {
if(algo.name() == algorithmName) { if(algo.name() == algorithmName) {
m_current_algorithm = algorithmName; m_current_algorithm = algorithmName;
return; return;
...@@ -36,7 +36,7 @@ void MinimizerInfo::setAlgorithmName(const std::string& algorithmName) ...@@ -36,7 +36,7 @@ void MinimizerInfo::setAlgorithmName(const std::string& algorithmName)
std::ostringstream msg; std::ostringstream msg;
msg << "MinimizerInfo::setAlgorithmName() -> Error. Algorithm name '" << algorithmName msg << "MinimizerInfo::setAlgorithmName() -> Error. Algorithm name '" << algorithmName
<<"' is not in the list of defined algorithms ("; <<"' is not in the list of defined algorithms (";
for (const AlgorithmInfo algo : m_algorithms) for (const AlgorithmInfo& algo : m_algorithms)
msg << algo.name() << " "; msg << algo.name() << " ";
msg << ")"; msg << ")";
throw std::runtime_error(msg.str()); throw std::runtime_error(msg.str());
...@@ -52,7 +52,7 @@ std::string MinimizerInfo::algorithmName() const ...@@ -52,7 +52,7 @@ std::string MinimizerInfo::algorithmName() const
std::vector<std::string> MinimizerInfo::algorithmNames() const std::vector<std::string> MinimizerInfo::algorithmNames() const
{ {
std::vector<std::string> result; std::vector<std::string> result;
for (const AlgorithmInfo algo : m_algorithms) for (const AlgorithmInfo& algo : m_algorithms)
result.push_back(algo.name()); result.push_back(algo.name());
return result; return result;
} }
...@@ -62,7 +62,7 @@ std::vector<std::string> MinimizerInfo::algorithmNames() const ...@@ -62,7 +62,7 @@ std::vector<std::string> MinimizerInfo::algorithmNames() const
std::vector<std::string> MinimizerInfo::algorithmDescriptions() const std::vector<std::string> MinimizerInfo::algorithmDescriptions() const
{ {
std::vector<std::string> result; std::vector<std::string> result;
for (const AlgorithmInfo algo : m_algorithms) for (const AlgorithmInfo& algo : m_algorithms)
result.push_back(algo.description()); result.push_back(algo.description());
return result; return result;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment