#ifndef TOOLS_GN_NINJA_WRITER_H_
#define TOOLS_GN_NINJA_WRITER_H_
#include <map>
#include <set>
#include <string>
#include <vector>
class Builder;
class BuildSettings;
class Err;
class Target;
class Toolchain;
class NinjaWriter {
public:
using TargetRulePair = std::pair<const Target*, std::string>;
using PerToolchainRules =
std::map<const Toolchain*, std::vector<TargetRulePair>>;
static bool RunAndWriteFiles(const BuildSettings* build_settings,
const Builder& builder,
const PerToolchainRules& per_toolchain_rules,
Err* err);
private:
NinjaWriter(const Builder& builder);
~NinjaWriter();
bool WriteToolchains(const PerToolchainRules& per_toolchain_rules, Err* err);
const Builder& builder_;
NinjaWriter(const NinjaWriter&) = delete;
NinjaWriter& operator=(const NinjaWriter&) = delete;
};
#endif