|  | // Copyright (c) 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_QT_CREATOR_WRITER_H_ | 
|  | #define TOOLS_GN_QT_CREATOR_WRITER_H_ | 
|  |  | 
|  | #include <set> | 
|  | #include <string> | 
|  |  | 
|  | #include "base/files/file_path.h" | 
|  | #include "base/macros.h" | 
|  | #include "tools/gn/err.h" | 
|  | #include "tools/gn/target.h" | 
|  |  | 
|  | class Builder; | 
|  | class BuildSettings; | 
|  |  | 
|  | class QtCreatorWriter { | 
|  | public: | 
|  | static bool RunAndWriteFile(const BuildSettings* build_settings, | 
|  | const Builder& builder, | 
|  | Err* err, | 
|  | const std::string& root_target); | 
|  |  | 
|  | private: | 
|  | QtCreatorWriter(const BuildSettings* build_settings, | 
|  | const Builder& builder, | 
|  | const base::FilePath& project_prefix, | 
|  | const std::string& root_target_name); | 
|  | ~QtCreatorWriter(); | 
|  |  | 
|  | void Run(); | 
|  |  | 
|  | bool DiscoverTargets(); | 
|  | void HandleTarget(const Target* target); | 
|  |  | 
|  | void CollectDeps(const Target* target); | 
|  | void AddToSources(const Target::FileList& files); | 
|  | void GenerateFile(const base::FilePath::CharType* suffix, | 
|  | const std::set<std::string>& items); | 
|  |  | 
|  | const BuildSettings* build_settings_; | 
|  | const Builder& builder_; | 
|  | base::FilePath project_prefix_; | 
|  | std::string root_target_name_; | 
|  | std::set<const Target*> targets_; | 
|  | std::set<std::string> sources_; | 
|  | std::set<std::string> includes_; | 
|  | std::set<std::string> defines_; | 
|  | Err err_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(QtCreatorWriter); | 
|  | }; | 
|  |  | 
|  | #endif  // TOOLS_GN_QT_CREATOR_WRITER_H_ |