Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(128)

Side by Side Diff: tools/clang/blink_gc_plugin/JsonWriter.h

Issue 1385193002: Bisect clang Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: 246985 Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/clang/blink_gc_plugin/Edge.cpp ('k') | tools/clang/blink_gc_plugin/NeedsTracing.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef TOOLS_BLINK_GC_PLUGIN_JSON_WRITER_H_
6 #define TOOLS_BLINK_GC_PLUGIN_JSON_WRITER_H_
7
8 #include "llvm/Support/raw_ostream.h"
9
10 // Helper to write information for the points-to graph.
11 class JsonWriter {
12 public:
13 static JsonWriter* from(std::unique_ptr<llvm::raw_ostream> os) {
14 return os ? new JsonWriter(std::move(os)) : 0;
15 }
16 void OpenList() {
17 Separator();
18 *os_ << "[";
19 state_.push(false);
20 }
21 void OpenList(const std::string key) {
22 Write(key);
23 *os_ << ":";
24 OpenList();
25 }
26 void CloseList() {
27 *os_ << "]";
28 state_.pop();
29 }
30 void OpenObject() {
31 Separator();
32 *os_ << "{";
33 state_.push(false);
34 }
35 void CloseObject() {
36 *os_ << "}\n";
37 state_.pop();
38 }
39 void Write(const size_t val) {
40 Separator();
41 *os_ << val;
42 }
43 void Write(const std::string val) {
44 Separator();
45 *os_ << "\"" << val << "\"";
46 }
47 void Write(const std::string key, const size_t val) {
48 Separator();
49 *os_ << "\"" << key << "\":" << val;
50 }
51 void Write(const std::string key, const std::string val) {
52 Separator();
53 *os_ << "\"" << key << "\":\"" << val << "\"";
54 }
55 private:
56 JsonWriter(std::unique_ptr<llvm::raw_ostream> os) : os_(std::move(os)) {}
57 void Separator() {
58 if (state_.empty())
59 return;
60 if (state_.top()) {
61 *os_ << ",";
62 return;
63 }
64 state_.top() = true;
65 }
66 std::unique_ptr<llvm::raw_ostream> os_;
67 std::stack<bool> state_;
68 };
69
70 #endif // TOOLS_BLINK_GC_PLUGIN_JSON_WRITER_H_
OLDNEW
« no previous file with comments | « tools/clang/blink_gc_plugin/Edge.cpp ('k') | tools/clang/blink_gc_plugin/NeedsTracing.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698