#ifndef TOOLCHAIN_H_ #define TOOLCHAIN_H_ #include "SharedRef.h" class CCSource; class Configuration; class Executable; class ProcessController; #include #include class ToolChain { public: ToolChain(const std::string& Name); virtual ~ToolChain(); virtual std::string staticLibraryName(const std::string& s) const = 0; virtual void initResultNames(CCSource& aSource) const = 0; virtual ProcessController* createCompilation(CCSource& aSource) = 0; virtual void initResultNames(Executable& aExec) const = 0; virtual ProcessController* createLinking(Executable& aExec) = 0; virtual std::string type() const = 0; virtual void storeToCache() const = 0; virtual bool isValid() const = 0; const std::string& name() const; private: std::string Name; public: static std::string discover(bool OnlyInCache); static SharedPtr createByType(const std::string& Name); static SharedPtr createByName(const std::string& Name); private: static std::vector > All; public: static std::string Default; }; #endif