• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2016 the V8 project 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 SRC_TRACING_TRACED_VALUE_H_
6 #define SRC_TRACING_TRACED_VALUE_H_
7 
8 #include "node.h"
9 #include "util.h"
10 #include "v8.h"
11 
12 #include <cstddef>
13 #include <memory>
14 #include <string>
15 
16 namespace node {
17 namespace tracing {
18 
19 class TracedValue : public v8::ConvertableToTraceFormat {
20  public:
21   ~TracedValue() override = default;
22 
23   static std::unique_ptr<TracedValue> Create();
24   static std::unique_ptr<TracedValue> CreateArray();
25 
26   void EndDictionary();
27   void EndArray();
28 
29   // These methods assume that |name| is a long lived "quoted" string.
30   void SetInteger(const char* name, int value);
31   void SetDouble(const char* name, double value);
32   void SetBoolean(const char* name, bool value);
33   void SetNull(const char* name);
34   void SetString(const char* name, const char* value);
SetString(const char * name,const std::string & value)35   void SetString(const char* name, const std::string& value) {
36     SetString(name, value.c_str());
37   }
38   void BeginDictionary(const char* name);
39   void BeginArray(const char* name);
40 
41   void AppendInteger(int);
42   void AppendDouble(double);
43   void AppendBoolean(bool);
44   void AppendNull();
45   void AppendString(const char*);
AppendString(const std::string & value)46   void AppendString(const std::string& value) { AppendString(value.c_str()); }
47   void BeginArray();
48   void BeginDictionary();
49 
50   // ConvertableToTraceFormat implementation.
51   void AppendAsTraceFormat(std::string* out) const override;
52 
53   TracedValue(const TracedValue&) = delete;
54   TracedValue& operator=(const TracedValue&) = delete;
55 
56  private:
57   explicit TracedValue(bool root_is_array = false);
58 
59   void WriteComma();
60   void WriteName(const char* name);
61 
62   std::string data_;
63   bool first_item_;
64   bool root_is_array_;
65 };
66 
67 }  // namespace tracing
68 }  // namespace node
69 
70 #endif  // SRC_TRACING_TRACED_VALUE_H_
71