CCCPaste

Target.h

#ifndef CMVIS_TARGET_H
#define CMVIS_TARGET_H

#include <string>
#include <vector>


class Target {
public:
Target(const Target&) =default;
Target(Target&&) noexcept =default;
Target& operator=(const Target&) =default;
Target& operator=(Target&&) noexcept =default;
~Target() =default;

[[nodiscard]] const std::string& id() const noexcept;
[[nodiscard]] const std::string& name() const noexcept;
[[nodiscard]] const std::string& type() const noexcept;
[[nodiscard]] bool isGeneratorProvided() const noexcept;
[[nodiscard]] bool isImported() const noexcept;
[[nodiscard]] const std::vector<std::string>& dependencies() const noexcept;
[[nodiscard]] const std::vector<std::string>& sources() const noexcept;
[[nodiscard]] const std::vector<std::string>& includes() const noexcept;
[[nodiscard]] const std::vector<std::string>& defines() const noexcept;
[[nodiscard]] const std::vector<std::string>& compileFlags() const noexcept;
[[nodiscard]] const std::vector<std::string>& linkLibraries() const noexcept;
[[nodiscard]] bool hasArtifacts() const noexcept;

private:

friend class TargetFactory;

struct BuildData {
std::string id;
std::string name;
std::string type;
bool isGeneratorProvided{false};
bool isImported{false};
std::vector<std::string> dependencies;
std::vector<std::string> sources;
std::vector<std::string> includes;
std::vector<std::string> defines;
std::vector<std::string> compileFlags;
std::vector<std::string> linkLibraries;
bool hasArtifacts{false};
};

explicit Target(BuildData&& data);

std::string id_;
std::string name_;
std::string type_;
bool isGeneratorProvided_;
bool isImported_;
std::vector<std::string> dependencies_;
std::vector<std::string> sources_;
std::vector<std::string> includes_;
std::vector<std::string> defines_;
std::vector<std::string> compileFlags_;
std::vector<std::string> linkLibraries_;
bool hasArtifacts_;
};

#endif