| Index: experimental/windows_debugger/debugger/test_debugger/my_json.h
|
| diff --git a/experimental/windows_debugger/debugger/test_debugger/my_json.h b/experimental/windows_debugger/debugger/test_debugger/my_json.h
|
| deleted file mode 100644
|
| index 2fd649155c722dec42c13d007b8f356584b4e8d1..0000000000000000000000000000000000000000
|
| --- a/experimental/windows_debugger/debugger/test_debugger/my_json.h
|
| +++ /dev/null
|
| @@ -1,208 +0,0 @@
|
| -#pragma once
|
| -#include <deque>
|
| -#include <string>
|
| -#include <map>
|
| -#include "..\base\debug_blob.h"
|
| -
|
| -namespace json {
|
| -
|
| -class Visitor;
|
| -
|
| -class Value {
|
| -public:
|
| - virtual ~Value() {}
|
| - virtual Value* Clone() const = 0;
|
| - virtual void Accept(Visitor* vis) {}
|
| -};
|
| -
|
| -class Null : public Value {
|
| - public:
|
| - Null();
|
| - virtual Value* Clone() const;
|
| - virtual void Accept(Visitor* vis);
|
| -};
|
| -
|
| -// Number does not support floating point numbers.
|
| -class Number : public Value {
|
| - public:
|
| - Number();
|
| - Number(long long n);
|
| - Number(const Number& n);
|
| - Number(const debug::Blob& blob);
|
| -
|
| - virtual Value* Clone() const;
|
| - virtual void Accept(Visitor* vis);
|
| - void SetInteger(const void* ptr, size_t int_size, bool sign);
|
| - std::string AsHexString() const;
|
| - std::string AsDecString() const;
|
| - int AsInt() const;
|
| -
|
| - // "h" for hex representation, "d" for decimal, "b" for binary,
|
| - // <className>::<memberName> for enums.
|
| - // For example, hint == "h DEBUG_EVENT::dwDebugEventCode", JSON:
|
| - // "dwDebugEventCode" : "6", //0x6:LOAD_DLL_DEBUG_EVENT ih
|
| - void SetPrintHint(const std::string& hint);
|
| - void set_value(long long x) {value_ = x;}
|
| - long long value() const {return value_;}
|
| -
|
| - protected:
|
| - long long value_;
|
| -// std::deque<char> value_;
|
| - bool signed_;
|
| - size_t size_;
|
| -// std::string print_hint_;
|
| -};
|
| -
|
| -class String : public Value {
|
| - public:
|
| - String();
|
| - String(const std::string& str);
|
| -
|
| - virtual Value* Clone() const;
|
| - virtual void Accept(Visitor* vis);
|
| -
|
| - void SetStr(const std::string& str);
|
| - const std::string& GetStr() const;
|
| - std::string& GetStr();
|
| - std::string value() const {return value_;}
|
| -
|
| - protected:
|
| - std::string value_;
|
| -};
|
| -
|
| -class Boolean : public Value {
|
| - public:
|
| - Boolean();
|
| - Boolean(bool value);
|
| -
|
| - virtual Value* Clone() const;
|
| - virtual void Accept(Visitor* vis);
|
| - bool value() const {return value_;}
|
| -
|
| - protected:
|
| - bool value_;
|
| -};
|
| -
|
| -// JSON:
|
| -// "memory" : "00A5A567C6C688", //m
|
| -
|
| -class Blob : public Value {
|
| - public:
|
| - Blob();
|
| - Blob(const Blob& other);
|
| - Blob(debug::Blob& blob);
|
| - ~Blob();
|
| -
|
| - virtual Value* Clone() const;
|
| - virtual void Accept(Visitor* vis);
|
| -
|
| - size_t Size() const;
|
| - void Append(const void* data, size_t data_sz);
|
| - void Clear();
|
| - debug::Blob value() const {return value_;}
|
| -
|
| - protected:
|
| - debug::Blob value_;
|
| -};
|
| -
|
| -class Array : public Value {
|
| - public:
|
| - Array();
|
| - ~Array();
|
| -
|
| - virtual Value* Clone() const;
|
| - virtual void Accept(Visitor* vis);
|
| -
|
| - size_t Size() const;
|
| - const Value* GetAt(size_t i) const;
|
| - Value* GetAt(size_t i);
|
| - void SetAt(size_t i, Value* value);
|
| - void Append(Value* value);
|
| - void Clear();
|
| -
|
| - protected:
|
| - std::deque<Value*> value_;
|
| -};
|
| -
|
| -class Object : public Value {
|
| - public:
|
| - Object();
|
| - ~Object();
|
| -
|
| - virtual Value* Clone() const;
|
| - virtual void Accept(Visitor* vis);
|
| -
|
| - const Value* GetProperty(const std::string& name) const;
|
| - Value* GetProperty(const std::string& name);
|
| - int GetIntProperty(const std::string& name) const;
|
| - void SetProperty(const std::string& name, Value* value);
|
| - void SetProperty(const std::string& name, const std::string& value);
|
| - void DeleteProperty(const std::string& name);
|
| - void Clear();
|
| - void GetPropertyNames(std::deque<std::string>* names) const;
|
| -
|
| - protected:
|
| - typedef std::deque<std::pair<std::string, Value*>> TypeOf_value_;
|
| - TypeOf_value_ value_;
|
| -};
|
| -
|
| -class Visitor {
|
| - public:
|
| - virtual ~Visitor() {}
|
| - virtual void Visit(Null& element) {}
|
| - virtual void Visit(Number& element) {}
|
| - virtual void Visit(Boolean& element) {}
|
| - virtual void Visit(String& element) {}
|
| - virtual void Visit(Blob& element) {}
|
| - virtual void Visit(Array& element) {}
|
| - virtual void Visit(Object& element) {}
|
| -};
|
| -
|
| -template <class T>
|
| -T* dynamic_value_cast(Value* value);
|
| -
|
| -// Implementation.
|
| -
|
| -class CastValueVisitor : public Visitor {
|
| - public:
|
| - CastValueVisitor() : type_(0) {}
|
| - virtual void Visit(Null& element) {type_ = 1;}
|
| - virtual void Visit(Number& element) {type_ = 2;}
|
| - virtual void Visit(Boolean& element) {type_ = 3;}
|
| - virtual void Visit(String& element) {type_ = 4;}
|
| - virtual void Visit(Blob& element) {type_ = 5;}
|
| - virtual void Visit(Array& element) {type_ = 6;}
|
| - virtual void Visit(Object& element) {type_ = 7;}
|
| - int type_;
|
| -};
|
| -
|
| -template <class T>
|
| -T* dynamic_value_cast(Value* value) {
|
| - if (NULL == value)
|
| - return NULL;
|
| - CastValueVisitor vis1;
|
| - value->Accept(&vis1);
|
| -
|
| - T tmp;
|
| - CastValueVisitor vis2;
|
| - tmp.Accept(&vis2);
|
| - if (vis2.type_ != vis1.type_)
|
| - return NULL;
|
| - return (T*)value;
|
| -}
|
| -
|
| -template <class T>
|
| -const T* dynamic_value_cast(const Value* value) {
|
| - if (NULL == value)
|
| - return NULL;
|
| - CastValueVisitor vis1;
|
| - const_cast<Value*>(value)->Accept((&vis1));
|
| -
|
| - T tmp;
|
| - CastValueVisitor vis2;
|
| - tmp.Accept(&vis2);
|
| - if (vis2.type_ != vis1.type_)
|
| - return NULL;
|
| - return (T*)value;
|
| -}
|
| -} // namespace json
|
|
|