| Index: experimental/windows_debugger/debugger/test_debugger/my_json.cpp
|
| diff --git a/experimental/windows_debugger/debugger/test_debugger/my_json.cpp b/experimental/windows_debugger/debugger/test_debugger/my_json.cpp
|
| deleted file mode 100644
|
| index 53c224006a18c48ede09f11950da24990cbbfd62..0000000000000000000000000000000000000000
|
| --- a/experimental/windows_debugger/debugger/test_debugger/my_json.cpp
|
| +++ /dev/null
|
| @@ -1,310 +0,0 @@
|
| -#include "my_json.h"
|
| -
|
| -namespace json {
|
| -Null::Null() {}
|
| -
|
| -Value* Null::Clone() const {
|
| - return new Null;
|
| -}
|
| -
|
| -void Null::Accept(Visitor* vis) {
|
| - vis->Visit(*this);
|
| -}
|
| -
|
| - bool signed_;
|
| - long size_;
|
| -
|
| -Number::Number()
|
| - : value_(0), signed_(false), size_(0) {
|
| -}
|
| -
|
| -Number::Number(long long n)
|
| - : value_(n), signed_(true), size_(sizeof(n)) {
|
| -}
|
| -
|
| -Number::Number(const Number& n)
|
| - : value_(n.value_), signed_(n.signed_), size_(n.size_) {
|
| -}
|
| -
|
| -Number::Number(const debug::Blob& blob) {
|
| -
|
| -}
|
| -
|
| -Value* Number::Clone() const {
|
| - return new Number(*this);
|
| -}
|
| -
|
| -void Number::Accept(Visitor* vis) {
|
| - vis->Visit(*this);
|
| -}
|
| -
|
| -void Number::SetInteger(const void* i_ptr, size_t int_size, bool sign) {
|
| - size_ = int_size;
|
| - signed_ = sign;
|
| - long long x = 0;
|
| - switch (int_size) {
|
| - case 1: x = *(static_cast<const char*>(i_ptr)); break;
|
| - case 2: x = *(static_cast<const short*>(i_ptr)); break;
|
| - case 4: x = *(static_cast<const int*>(i_ptr)); break;
|
| - case 8: x = *(static_cast<const long long*>(i_ptr)); break;
|
| - }
|
| - value_ = x;
|
| -// long long xx = value();
|
| -// printf("Number::SetInteger %I64d %I64d\n", x, xx);
|
| -}
|
| -
|
| -std::string Number::AsHexString() const {
|
| - if (0 == size_)
|
| - return "null";
|
| -
|
| - char tmp[100];
|
| - switch (size_) {
|
| - case 1:
|
| - case 2:
|
| - case 4: _snprintf_s(tmp, sizeof(tmp), sizeof(tmp) - 1, "%X", static_cast<int>(value_)); break;
|
| - case 8: _snprintf_s(tmp, sizeof(tmp), sizeof(tmp) - 1, "%I64X", value_); break;
|
| - }
|
| - tmp[sizeof(tmp) - 1] = 0;
|
| - return tmp;
|
| -}
|
| -
|
| -int Number::AsInt() const {
|
| - return static_cast<int>(value());
|
| -}
|
| -
|
| -std::string Number::AsDecString() const {
|
| - if (0 == size_)
|
| - return "null";
|
| -
|
| - char tmp[100];
|
| - switch (size_) {
|
| - case 1:
|
| - case 2:
|
| - case 4: {
|
| - int x = static_cast<int>(value_);
|
| - _snprintf_s(tmp, sizeof(tmp), sizeof(tmp) - 1, "%d", x);
|
| - break;
|
| - }
|
| - case 8: _snprintf_s(tmp, sizeof(tmp), sizeof(tmp) - 1, "%I64d", value_); break;
|
| - }
|
| - tmp[sizeof(tmp) - 1] = 0;
|
| - return tmp;
|
| -}
|
| -
|
| -void Number::SetPrintHint(const std::string& hint) {
|
| - //TODO:implement ?
|
| -}
|
| -
|
| -String::String() {}
|
| -
|
| -String::String(const std::string& str)
|
| - : value_(str) {
|
| -}
|
| -
|
| -Value* String::Clone() const {
|
| - return new String(value_);
|
| -}
|
| -
|
| -void String::Accept(Visitor* vis) {
|
| - vis->Visit(*this);
|
| -}
|
| -
|
| -void String::SetStr(const std::string& str) {
|
| - value_ = str;
|
| -}
|
| -
|
| -const std::string& String::GetStr() const {
|
| - return value_;
|
| -}
|
| -
|
| -std::string& String::GetStr() {
|
| - return value_;
|
| -}
|
| -
|
| -Object::Object() {
|
| -}
|
| -
|
| -Object::~Object() {
|
| - Clear();
|
| -}
|
| -
|
| -Value* Object::Clone() const {
|
| - Object* copy = new Object;
|
| - for (size_t i = 0; i < value_.size(); i++) {
|
| - const std::pair<std::string, Value*>& prop = value_[i];
|
| - Value* value_copy = prop.second->Clone();
|
| - if (NULL != value_copy)
|
| - copy->SetProperty(prop.first, value_copy);
|
| - }
|
| - return copy;
|
| -}
|
| -
|
| -void Object::Accept(Visitor* vis) {
|
| - vis->Visit(*this);
|
| -}
|
| -
|
| -const Value* Object::GetProperty(const std::string& name) const {
|
| - for (size_t i = 0; i < value_.size(); i++) {
|
| - const std::pair<std::string, Value*>& prop = value_[i];
|
| - if (prop.first == name)
|
| - return prop.second;
|
| - }
|
| - return NULL;
|
| -}
|
| -
|
| -Value* Object::GetProperty(const std::string& name) {
|
| - for (size_t i = 0; i < value_.size(); i++) {
|
| - std::pair<std::string, Value*>& prop = value_[i];
|
| - if (prop.first == name)
|
| - return prop.second;
|
| - }
|
| - return NULL;
|
| -}
|
| -
|
| -int Object::GetIntProperty(const std::string& name) const {
|
| - int result = 0;
|
| - const Number* num_val = dynamic_value_cast<Number>(GetProperty(name));
|
| - if (NULL != num_val)
|
| - result = num_val->AsInt();
|
| - return result;
|
| -}
|
| -
|
| -void Object::SetProperty(const std::string& name, Value* value) {
|
| - DeleteProperty(name);
|
| - value_.push_back(std::pair<std::string, Value*>(name, value));
|
| -}
|
| -
|
| -void Object::SetProperty(const std::string& name, const std::string& value) {
|
| - SetProperty(name, new String(value));
|
| -}
|
| -
|
| -void Object::Clear() {
|
| - for (size_t i = 0; i < value_.size(); i++) {
|
| - std::pair<std::string, Value*>& prop = value_[i];
|
| - delete prop.second;
|
| - }
|
| - value_.clear();
|
| -}
|
| -
|
| -void Object::GetPropertyNames(std::deque<std::string>* names) const {
|
| - for (size_t i = 0; i < value_.size(); i++) {
|
| - const std::pair<std::string, Value*>& prop = value_[i];
|
| - names->push_back(prop.first);
|
| - }
|
| -}
|
| -
|
| -void Object::DeleteProperty(const std::string& name) {
|
| - TypeOf_value_::iterator it = value_.begin();
|
| - TypeOf_value_::iterator end = value_.end();
|
| - while (it != end) {
|
| - std::pair<std::string, Value*>& prop = *it;
|
| - if (prop.first == name) {
|
| - if (NULL != prop.second)
|
| - delete prop.second;
|
| - value_.erase(it);
|
| - return;
|
| - }
|
| - ++it;
|
| - }
|
| -}
|
| -
|
| -Blob::Blob() {
|
| -}
|
| -
|
| -Blob::Blob(const Blob& other)
|
| - : value_(other.value_) {
|
| -}
|
| -
|
| -Blob::Blob(debug::Blob& blob)
|
| - : value_(blob) {
|
| -}
|
| -
|
| -Blob::~Blob() {
|
| -}
|
| -
|
| -Value* Blob::Clone() const {
|
| - return new Blob(*this);
|
| -}
|
| -
|
| -void Blob::Accept(Visitor* vis) {
|
| - vis->Visit(*this);
|
| -}
|
| -
|
| -size_t Blob::Size() const {
|
| - return value_.size();
|
| -}
|
| -
|
| -void Blob::Append(const void* data, size_t data_sz) {
|
| - debug::Blob other(data, data_sz);
|
| - value_.Append(other);
|
| -}
|
| -
|
| -void Blob::Clear() {
|
| - value_.Clear();
|
| -}
|
| -
|
| -Array::Array() {
|
| -}
|
| -
|
| -Array::~Array() {
|
| - Clear();
|
| -}
|
| -
|
| -Value* Array::Clone() const {
|
| - Array* copy = new Array;
|
| - if (NULL != copy) {
|
| - size_t num = Size();
|
| - for (size_t i = 0; i < num; i++) {
|
| - Value* el_copy = GetAt(i)->Clone();
|
| - if (NULL != el_copy)
|
| - copy->SetAt(i, el_copy);
|
| - }
|
| - }
|
| - return copy;
|
| -}
|
| -
|
| -void Array::Accept(Visitor* vis) {
|
| - vis->Visit(*this);
|
| -}
|
| -
|
| -size_t Array::Size() const {
|
| - return value_.size();
|
| -}
|
| -
|
| -const Value* Array::GetAt(size_t i) const {
|
| - return value_[i];
|
| -}
|
| -
|
| -Value* Array::GetAt(size_t i) {
|
| - return value_[i];
|
| -}
|
| -
|
| -void Array::SetAt(size_t i, Value* value) {
|
| - while (Size() <= i)
|
| - Append(new Null);
|
| - if (NULL != value_[i])
|
| - delete value_[i];
|
| - value_[i] = value;
|
| -}
|
| -
|
| -void Array::Append(Value* value) {
|
| - value_.push_back(value);
|
| -}
|
| -
|
| -void Array::Clear() {
|
| - size_t num = Size();
|
| - for (size_t i = 0; i < num; i++)
|
| - delete GetAt(i);
|
| - value_.clear();
|
| -}
|
| -
|
| -} // namespace json
|
| -
|
| -/*
|
| -#define DBG_LOG(id, fmt, ...) do {\
|
| - static EventIdChecker(id);
|
| - if (NULL != debug::Logger::Get()) {\
|
| - debug::Logger::Get()->Log(id, fmt, __VA_ARGS__);\
|
| - }\
|
| -} while(0)\
|
| -*/
|
|
|