#ifndef TOOLS_GN_ECLIPSE_WRITER_H_
#define TOOLS_GN_ECLIPSE_WRITER_H_
#include <iosfwd>
#include <map>
#include <set>
#include <string>
#include <vector>
class BuildSettings;
class Builder;
class Err;
class Target;
class EclipseWriter {
public:
static bool RunAndWriteFile(const BuildSettings* build_settings,
const Builder& builder,
Err* err);
private:
EclipseWriter(const BuildSettings* build_settings,
const Builder& builder,
std::ostream& out);
~EclipseWriter();
void Run();
void GetAllIncludeDirs();
void GetAllDefines();
bool UsesDefaultToolchain(const Target* target) const;
void WriteCDTSettings();
const BuildSettings* build_settings_;
const Builder& builder_;
std::ostream& out_;
std::vector<std::string> languages_;
std::set<std::string> include_dirs_;
std::map<std::string, std::string> defines_;
EclipseWriter(const EclipseWriter&) = delete;
EclipseWriter& operator=(const EclipseWriter&) = delete;
};
#endif