|  | // 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_JSON_WRITER_H_ | 
|  | #define TOOLS_GN_JSON_WRITER_H_ | 
|  |  | 
|  | #include "gn/err.h" | 
|  | #include "gn/target.h" | 
|  |  | 
|  | class Builder; | 
|  | class BuildSettings; | 
|  | class StringOutputBuffer; | 
|  |  | 
|  | class JSONProjectWriter { | 
|  | public: | 
|  | static bool RunAndWriteFiles(const BuildSettings* build_setting, | 
|  | const Builder& builder, | 
|  | const std::string& file_name, | 
|  | const std::string& exec_script, | 
|  | const std::string& exec_script_extra_args, | 
|  | const std::string& dir_filter_string, | 
|  | bool quiet, | 
|  | Err* err); | 
|  |  | 
|  | private: | 
|  | FRIEND_TEST_ALL_PREFIXES(JSONWriter, ActionWithResponseFile); | 
|  | FRIEND_TEST_ALL_PREFIXES(JSONWriter, ForEachWithResponseFile); | 
|  | FRIEND_TEST_ALL_PREFIXES(JSONWriter, RustTarget); | 
|  |  | 
|  | static StringOutputBuffer GenerateJSON( | 
|  | const BuildSettings* build_settings, | 
|  | std::vector<const Target*>& all_targets); | 
|  |  | 
|  | static std::string RenderJSON(const BuildSettings* build_settings, | 
|  | std::vector<const Target*>& all_targets); | 
|  | }; | 
|  |  | 
|  | #endif |