]> git.tdb.fi Git - builder.git/blob - source/toolchain.h
Remove most container typedefs and refactor others
[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         std::map<std::string, Tool *> tools;
17         std::list<Toolchain *> chains;
18
19 public:
20         ~Toolchain();
21
22         void add_tool(Tool *);
23         void add_toolchain(Toolchain *);
24         bool has_tool(const std::string &) const;
25         Tool &get_tool(const std::string &) const;
26         Tool *get_tool_for_suffix(const std::string &, bool = false) const;
27 };
28
29 #endif