• Home
  • History
  • Annotate
  • 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 V8_TRACING_TRACED_VALUE_H_
6  #define V8_TRACING_TRACED_VALUE_H_
7  
8  #include <stddef.h>
9  #include <memory>
10  #include <string>
11  #include <vector>
12  
13  #include "include/v8-platform.h"
14  #include "src/base/macros.h"
15  
16  namespace v8 {
17  namespace tracing {
18  
19  class TracedValue : public ConvertableToTraceFormat {
20   public:
21    ~TracedValue() override;
22  
23    static std::unique_ptr<TracedValue> Create();
24  
25    void EndDictionary();
26    void EndArray();
27  
28    // These methods assume that |name| is a long lived "quoted" string.
29    void SetInteger(const char* name, int value);
30    void SetDouble(const char* name, double value);
31    void SetBoolean(const char* name, bool value);
32    void SetString(const char* name, const char* value);
SetString(const char * name,const std::string & value)33    void SetString(const char* name, const std::string& value) {
34      SetString(name, value.c_str());
35    }
36    void BeginDictionary(const char* name);
37    void BeginArray(const char* name);
38  
39    void AppendInteger(int);
40    void AppendDouble(double);
41    void AppendBoolean(bool);
42    void AppendString(const char*);
AppendString(const std::string & value)43    void AppendString(const std::string& value) { AppendString(value.c_str()); }
44    void BeginArray();
45    void BeginDictionary();
46  
47    // ConvertableToTraceFormat implementation.
48    void AppendAsTraceFormat(std::string* out) const override;
49  
50   private:
51    TracedValue();
52  
53    void WriteComma();
54    void WriteName(const char* name);
55  
56  #ifdef DEBUG
57    // In debug builds checks the pairings of {Begin,End}{Dictionary,Array}
58    std::vector<bool> nesting_stack_;
59  #endif
60  
61    std::string data_;
62    bool first_item_;
63  
64    DISALLOW_COPY_AND_ASSIGN(TracedValue);
65  };
66  
67  }  // namespace tracing
68  }  // namespace v8
69  
70  #endif  // V8_TRACING_TRACED_VALUE_H_
71