+#include <algorithm>
#include <msp/core/maputils.h>
#include "tool.h"
#include "toolchain.h"
Toolchain::~Toolchain()
{
- for(ToolMap::iterator i=tools.begin(); i!=tools.end(); ++i)
- delete i->second;
- for(ToolchainList::iterator i=chains.begin(); i!=chains.end(); ++i)
- delete *i;
+ for(const auto &kvp: tools)
+ delete kvp.second;
+ for(Toolchain *c: chains)
+ delete c;
}
void Toolchain::add_tool(Tool *tool)
{
if(tools.count(tag))
return true;
- for(ToolchainList::const_iterator i=chains.begin(); i!=chains.end(); ++i)
- if((*i)->has_tool(tag))
- return true;
- return false;
+ return any_of(chains.begin(), chains.end(), [&tag](Toolchain *tc){ return tc->has_tool(tag); });
}
Tool &Toolchain::get_tool(const string &tag) const
{
if(!tools.count(tag))
{
- for(ToolchainList::const_iterator i=chains.begin(); i!=chains.end(); ++i)
- if((*i)->has_tool(tag))
- return (*i)->get_tool(tag);
+ for(const Toolchain *c: chains)
+ if(c->has_tool(tag))
+ return c->get_tool(tag);
}
return *get_item(tools, tag);
Tool *Toolchain::get_tool_for_suffix(const string &suffix, bool aux) const
{
- for(ToolMap::const_iterator i=tools.begin(); i!=tools.end(); ++i)
- if(i->second->accepts_suffix(suffix, aux))
- return i->second;
+ for(const auto &kvp: tools)
+ if(kvp.second->accepts_suffix(suffix, aux))
+ return kvp.second;
- for(ToolchainList::const_iterator i=chains.begin(); i!=chains.end(); ++i)
- if(Tool *tool = (*i)->get_tool_for_suffix(suffix, aux))
+ for(const Toolchain *c: chains)
+ if(Tool *tool = c->get_tool_for_suffix(suffix, aux))
return tool;
return 0;