| /******************************************************************************* |
| * Copyright (c) 2011 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| |
| |
| #pragma once |
| |
| #include <iostream> |
| #include <map> |
| #include <sstream> |
| #include <vector> |
| |
| enum { |
| TYPE_UNDEFINED = 0x0, |
| TYPE_NULL = 0x1, |
| TYPE_BOOLEAN = 0x2, |
| TYPE_NUMBER = 0x4, |
| TYPE_STRING = 0x8, |
| TYPE_ARRAY = 0x10, |
| TYPE_OBJECT = 0x20, |
| }; |
| |
| class Value { |
| |
| public: |
| Value(); |
| Value(bool value); |
| Value(double value); |
| Value(const wchar_t* value); |
| Value(std::wstring* value); |
| ~Value(); |
| virtual void addArrayValue(Value* value); |
| virtual bool addObjectValue(const wchar_t* key, Value* value); |
| virtual bool addObjectValue(std::wstring* key, Value* value); |
| virtual void clone(Value** _value); |
| virtual void getArrayValues(Value*** __values); |
| virtual bool getBooleanValue(); |
| virtual double getNumberValue(); |
| virtual Value* getObjectValue(const wchar_t* key); |
| virtual Value* getObjectValue(std::wstring* key); |
| virtual void getObjectValues(std::wstring*** __keys, Value*** __values); |
| virtual std::wstring* getStringValue(); |
| virtual int getType(); |
| virtual bool setObjectValue(const wchar_t* key, Value* value); |
| virtual bool setObjectValue(std::wstring* key, Value* value); |
| virtual void setType(int type); |
| virtual void setValue(bool value); |
| virtual void setValue(double value); |
| virtual void setValue(const wchar_t* value); |
| virtual void setValue(std::wstring* value); |
| |
| private: |
| virtual void clearCurrentValue(); |
| virtual bool setObjectValue(std::wstring* key, Value* value, bool overwrite); |
| |
| std::vector<Value*>* m_arrayValue; |
| double m_numberValue; |
| std::map<std::wstring, Value*>* m_objectValue; |
| std::wstring* m_stringValue; |
| int m_type; |
| }; |