]> git.tdb.fi Git - builder.git/blob - source/toolchain.h
Refactor transitive dependencies to work on all targets
[builder.git] / source / toolchain.h
1 #ifndef TOOLCHAIN_H_
2 #define TOOLCHAIN_H_
3
4 #include <list>
5 #include <map>
6 #include <string>
7
8 class Tool;
9
10 /**
11 A container for tools.  Performs lookup based on tag or filename extension.
12 */
13 class Toolchain
14 {
15 private:
16         typedef std::map<std::string, Tool *> ToolMap;
17         typedef std::list<Toolchain *> ToolchainList;
18
19         ToolMap tools;
20         ToolchainList chains;
21
22 public:
23         ~Toolchain();
24
25         void add_tool(Tool *);
26         void add_toolchain(Toolchain *);
27         bool has_tool(const std::string &) const;
28         Tool &get_tool(const std::string &) const;
29         Tool *get_tool_for_suffix(const std::string &, bool = false) const;
30 };
31
32 #endif