| // Copyright 2016 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef TOOLS_GN_ECLIPSE_WRITER_H_ | 
 | #define TOOLS_GN_ECLIPSE_WRITER_H_ | 
 |  | 
 | #include <iosfwd> | 
 | #include <map> | 
 | #include <set> | 
 | #include <string> | 
 | #include <vector> | 
 |  | 
 | #include "base/macros.h" | 
 |  | 
 | 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(); | 
 |  | 
 |   // Populates |include_dirs_| with the include dirs of all the targets for the | 
 |   // default toolchain. | 
 |   void GetAllIncludeDirs(); | 
 |  | 
 |   // Populates |defines_| with the defines of all the targets for the default | 
 |   // toolchain. | 
 |   void GetAllDefines(); | 
 |  | 
 |   // Returns true if |target| uses the default toolchain. | 
 |   bool UsesDefaultToolchain(const Target* target) const; | 
 |  | 
 |   // Writes the XML settings file. | 
 |   void WriteCDTSettings(); | 
 |  | 
 |   const BuildSettings* build_settings_; | 
 |   const Builder& builder_; | 
 |  | 
 |   // The output stream for the settings file. | 
 |   std::ostream& out_; | 
 |  | 
 |   // Eclipse languages for which the include dirs and defines apply. | 
 |   std::vector<std::string> languages_; | 
 |  | 
 |   // The include dirs of all the targets which use the default toolchain. | 
 |   std::set<std::string> include_dirs_; | 
 |  | 
 |   // The defines of all the targets which use the default toolchain. | 
 |   std::map<std::string, std::string> defines_; | 
 |  | 
 |   DISALLOW_COPY_AND_ASSIGN(EclipseWriter); | 
 | }; | 
 |  | 
 | #endif  // TOOLS_GN_ECLIPSE_WRITER_H_ |