]> git.tdb.fi Git - builder.git/blobdiff - source/toolchain.h
Add gcc's private library directory to ClangLinker's system path
[builder.git] / source / toolchain.h
index 8449680409884d12d2801dc760212fa70e8db886..34fc0a2b6651a77eda77c44c97c4679edd8057db 100644 (file)
@@ -1,9 +1,9 @@
 #ifndef TOOLCHAIN_H_
 #define TOOLCHAIN_H_
 
-#include <list>
 #include <map>
 #include <string>
+#include <vector>
 
 class Tool;
 
@@ -13,20 +13,25 @@ A container for tools.  Performs lookup based on tag or filename extension.
 class Toolchain
 {
 private:
-       typedef std::map<std::string, Tool *> ToolMap;
-       typedef std::list<Toolchain *> ToolchainList;
-
-       ToolMap tools;
-       ToolchainList chains;
+       std::string name;
+       int priority = 0;
+       std::map<std::string, Tool *> tools;
+       std::vector<Toolchain *> chains;
 
+protected:
+       Toolchain(const std::string &n, unsigned p): name(n), priority(p) { }
 public:
+       Toolchain() = default;
        ~Toolchain();
 
+       const std::string &get_name() const { return name; }
+       int get_priority() const { return priority; }
        void add_tool(Tool *);
        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;
+       const std::vector<Toolchain *> &get_toolchains() { return chains; }
 };
 
 #endif