X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftool.h;h=e1bef2d8652031324338de553b5c46689213a194;hb=d1f9551e05c9d341149eb490e05b1465d3d6b711;hp=c49b4c473257b0ff06f8e2e07cca2a4fbc444b54;hpb=bc6d4c540e7132c829dd558ca9d8acfbde7d71e1;p=builder.git diff --git a/source/tool.h b/source/tool.h index c49b4c4..e1bef2d 100644 --- a/source/tool.h +++ b/source/tool.h @@ -1,8 +1,8 @@ #ifndef TOOL_H_ #define TOOL_H_ -#include #include +#include #include #include "buildinfo.h" #include "virtualfilesystem.h" @@ -31,26 +31,28 @@ public: protected: Builder &builder; - const Architecture *architecture; + const Architecture *architecture = 0; std::string tag; std::string command; - FileTarget *executable; - std::list input_suffixes; - std::list aux_suffixes; - ProcessingUnit processing_unit; + FileTarget *executable = 0; + std::vector input_suffixes; + std::vector aux_suffixes; + ProcessingUnit processing_unit = ONE_FILE; VirtualFileSystem::SearchPath system_path; BuildInfo build_info; - bool prepared; - std::list problems; + bool prepared = false; + std::vector problems; Tool(Builder &, const std::string &); Tool(Builder &, const Architecture &, const std::string &); +private: + Tool(Builder &, const Architecture *, const std::string &); public: virtual ~Tool() { } const std::string &get_tag() const { return tag; } - /** Returns the architecture this tool build for. May return null if the + /** Returns the architecture this tool builds for. May return null if the tool is architecture-agnostic. */ const Architecture *get_architecture() const { return architecture; } @@ -66,11 +68,11 @@ public: FileTarget *get_executable() const { return executable; } /// Returns a list of suffixes that can be processed with this tool. - const std::list &get_input_suffixes() const { return input_suffixes; } + const std::vector &get_input_suffixes() const { return input_suffixes; } /** Returns a list of suffixes that are associated with this tool, but can't be processed directly. For example C and C++ headers. */ - const std::list &get_auxiliary_suffixes() const { return aux_suffixes; } + const std::vector &get_auxiliary_suffixes() const { return aux_suffixes; } /** Indicates whether the tool can accept a suffix. If aux is true, auxiliary suffixes are considered as well */ @@ -100,7 +102,7 @@ public: /** Creates a target from sources. The exact types of accepted sources depends on the tool. The optional second argument can be used to select an alternative target type for tools that can create multiple kinds of targets. */ - virtual Target *create_target(const std::list &, const std::string & = std::string()) = 0; + virtual Target *create_target(const std::vector &, const std::string & = std::string()) = 0; /** Creates an install target for a target created by this tool. Can return null if the tool does not want to handle installing in a special way. */ @@ -114,7 +116,7 @@ protected: virtual void do_prepare() { } public: - const std::list &get_problems() const { return problems; } + const std::vector &get_problems() const { return problems; } /** Invokes the tool to build a target. This should not be called directly; use Target::build() instead. */ @@ -136,7 +138,7 @@ protected: public: Target *create_source(const Component &, const Msp::FS::Path &) const override; Target *create_source(const Msp::FS::Path &) const override; - Target *create_target(const std::list &, const std::string & = std::string()) override; + Target *create_target(const std::vector &, const std::string & = std::string()) override; Target *create_install(Target &) const override; std::string create_build_signature(const BuildInfo &) const override; };