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 BASE_DEBUG_TRACE_EVENT_ARGUMENT_H_ 6#define BASE_DEBUG_TRACE_EVENT_ARGUMENT_H_ 7 8#include <string> 9#include <vector> 10 11#include "base/debug/trace_event.h" 12#include "base/memory/scoped_ptr.h" 13 14namespace base { 15class DictionaryValue; 16class ListValue; 17class Value; 18 19namespace debug { 20 21class BASE_EXPORT TracedValue : public ConvertableToTraceFormat { 22 public: 23 TracedValue(); 24 25 void EndDictionary(); 26 void EndArray(); 27 28 void SetInteger(const char* name, int value); 29 void SetDouble(const char* name, double); 30 void SetBoolean(const char* name, bool value); 31 void SetString(const char* name, const std::string& value); 32 void SetValue(const char* name, Value* value); 33 void BeginDictionary(const char* name); 34 void BeginArray(const char* name); 35 36 void AppendInteger(int); 37 void AppendDouble(double); 38 void AppendBoolean(bool); 39 void AppendString(const std::string&); 40 void BeginArray(); 41 void BeginDictionary(); 42 43 virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE; 44 45 private: 46 virtual ~TracedValue(); 47 48 DictionaryValue* GetCurrentDictionary(); 49 ListValue* GetCurrentArray(); 50 51 scoped_ptr<base::Value> root_; 52 std::vector<Value*> stack_; 53 DISALLOW_COPY_AND_ASSIGN(TracedValue); 54}; 55 56} // namespace debug 57} // namespace base 58 59#endif // BASE_DEBUG_TRACE_EVENT_ARGUMENT_H_ 60