#include <map>
#include <string>
+#include <vector>
class Tool;
+/**
+A container for tools. Performs lookup based on tag or filename extension.
+*/
class Toolchain
{
private:
- typedef std::map<std::string, Tool *> ToolMap;
-
- ToolMap tools;
+ std::map<std::string, Tool *> tools;
+ std::vector<Toolchain *> chains;
public:
~Toolchain();
void add_tool(Tool *);
- const Tool &get_tool(const std::string &) const;
- const Tool *get_tool_for_suffix(const std::string &) const;
+ void add_toolchain(Toolchain *);
+ bool has_tool(const std::string &) const;
+ Tool &get_tool(const std::string &) const;
+ Tool *get_tool_for_suffix(const std::string &, bool = false) const;
};
#endif