123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #pragma once
- #include "Text.h"
- #include "Array.h"
- #include "ReferenceCounter.h"
- namespace Framework
- {
- namespace JSON
- {
- enum class JSONType
- {
- NULL_,
- BOOLEAN,
- NUMBER,
- STRING,
- ARRAY,
- OBJECT
- };
- class JSONArray;
- class JSONObject;
- class JSONValue : public virtual ReferenceCounter
- {
- private:
- JSONType type;
- protected:
- __declspec(dllexport) JSONValue( JSONType type );
- public:
- __declspec(dllexport) JSONValue();
- __declspec(dllexport) virtual ~JSONValue();
- __declspec(dllexport) JSONType getType() const;
- __declspec(dllexport) virtual Text toString() const;
- };
- class JSONBool : public JSONValue
- {
- private:
- bool b;
- public:
- __declspec(dllexport) JSONBool( bool b );
- __declspec(dllexport) bool getBool() const;
- __declspec(dllexport) Text toString() const override;
- };
- class JSONNumber : public JSONValue
- {
- private:
- double number;
- public:
- __declspec(dllexport) JSONNumber( double num );
- __declspec(dllexport) double getNumber() const;
- __declspec(dllexport) Text toString() const override;
- };
- class JSONString : public JSONValue
- {
- private:
- Text string;
- public:
- __declspec(dllexport) JSONString( Text string );
- __declspec(dllexport) Text getString() const;
- __declspec(dllexport) Text toString() const override;
- };
- class JSONArray : public JSONValue
- {
- private:
- RCArray< JSONValue >* array;
- public:
- __declspec(dllexport) JSONArray();
- __declspec(dllexport) JSONArray( Text string );
- __declspec(dllexport) JSONArray( const JSONArray& arr );
- __declspec(dllexport) ~JSONArray();
- __declspec(dllexport) JSONArray& operator=( const JSONArray& arr );
- __declspec(dllexport) void addValue( JSONValue* value );
- __declspec(dllexport) JSONValue* getValue( int i ) const;
- __declspec(dllexport) int getLength() const;
- __declspec(dllexport) bool isValueOfType( int i, JSONType type ) const;
- __declspec(dllexport) Text toString() const override;
- };
- class JSONObject : public JSONValue
- {
- private:
- Array< Text >* fields;
- RCArray< JSONValue >* values;
- public:
- __declspec(dllexport) JSONObject();
- __declspec(dllexport) JSONObject( Text string );
- __declspec(dllexport) JSONObject( const JSONObject& obj );
- __declspec(dllexport) ~JSONObject();
- __declspec(dllexport) JSONObject& operator=( const JSONObject& obj );
- __declspec(dllexport) bool addValue( Text field, JSONValue* value );
- __declspec(dllexport) bool removeValue( Text field );
- __declspec(dllexport) bool hasValue( Text field );
- __declspec(dllexport) JSONValue* getValue( Text field );
- __declspec(dllexport) Iterator< Text > getFields();
- __declspec(dllexport) Iterator< JSONValue* > getValues();
- __declspec(dllexport) int getFieldCount() const;
- __declspec(dllexport) bool isValueOfType( Text field, JSONType type ) const;
- __declspec(dllexport) Text toString() const override;
- };
- __declspec(dllexport) JSONValue* loadJSONFromFile( Text path );
- namespace Parser
- {
- __declspec(dllexport) int findObjectEndInArray( const char* str );
- __declspec(dllexport) Text removeWhitespace( const char* str );
- __declspec(dllexport) JSONValue* getValue( const char* str );
- __declspec(dllexport) int findFieldEndInObject( const char* str );
- __declspec(dllexport) int findValueEndInObject( const char* str );
- };
- }
- }
|