|
@@ -102,7 +102,7 @@ JSONArray::JSONArray( Text string )
|
|
|
while( string.getLength() )
|
|
|
{
|
|
|
int end = Parser::findObjectEndInArray( string );
|
|
|
- Text *objStr = string.getTeilText( 0, end );
|
|
|
+ Text* objStr = string.getTeilText( 0, end );
|
|
|
string.remove( 0, end + 1 );
|
|
|
array->add( Parser::getValue( *objStr ) );
|
|
|
objStr->release();
|
|
@@ -110,10 +110,10 @@ JSONArray::JSONArray( Text string )
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-JSONArray::JSONArray( const JSONArray &arr )
|
|
|
+JSONArray::JSONArray( const JSONArray& arr )
|
|
|
: JSONValue( JSONType::ARRAY )
|
|
|
{
|
|
|
- array = dynamic_cast<RCArray<JSONValue> *>( arr.array->getThis() );
|
|
|
+ array = dynamic_cast<RCArray<JSONValue> *>(arr.array->getThis());
|
|
|
}
|
|
|
|
|
|
JSONArray::~JSONArray()
|
|
@@ -121,19 +121,19 @@ JSONArray::~JSONArray()
|
|
|
array->release();
|
|
|
}
|
|
|
|
|
|
-JSONArray &JSONArray::operator=( const JSONArray &arr )
|
|
|
+JSONArray& JSONArray::operator=( const JSONArray& arr )
|
|
|
{
|
|
|
array->release();
|
|
|
- array = dynamic_cast<RCArray<JSONValue> *>( arr.array->getThis() );
|
|
|
+ array = dynamic_cast<RCArray<JSONValue> *>(arr.array->getThis());
|
|
|
return *this;
|
|
|
}
|
|
|
|
|
|
-void JSONArray::addValue( JSONValue *value )
|
|
|
+void JSONArray::addValue( JSONValue* value )
|
|
|
{
|
|
|
array->add( value );
|
|
|
}
|
|
|
|
|
|
-JSONValue *JSONArray::getValue( int i ) const
|
|
|
+JSONValue* JSONArray::getValue( int i ) const
|
|
|
{
|
|
|
return array->get( i );
|
|
|
}
|
|
@@ -143,6 +143,11 @@ int JSONArray::getLength() const
|
|
|
return array->getEintragAnzahl();
|
|
|
}
|
|
|
|
|
|
+bool JSONArray::isValueOfType( int i, JSONType type ) const
|
|
|
+{
|
|
|
+ return i >= 0 && i < array->getEintragAnzahl() && array->z( i )->getType() == type;
|
|
|
+}
|
|
|
+
|
|
|
Text JSONArray::toString() const
|
|
|
{
|
|
|
Text str = "[";
|
|
@@ -177,12 +182,12 @@ JSONObject::JSONObject( Text string )
|
|
|
while( string.getLength() )
|
|
|
{
|
|
|
int endField = Parser::findFieldEndInObject( string );
|
|
|
- Text *fieldName = string.getTeilText( 0, endField );
|
|
|
+ Text* fieldName = string.getTeilText( 0, endField );
|
|
|
string.remove( 0, endField + 1 );
|
|
|
fieldName->remove( 0, 1 );
|
|
|
fieldName->remove( fieldName->getLength() - 1, fieldName->getLength() );
|
|
|
int endValue = Parser::findValueEndInObject( string );
|
|
|
- Text *value = string.getTeilText( 0, endValue );
|
|
|
+ Text* value = string.getTeilText( 0, endValue );
|
|
|
string.remove( 0, endValue + 1 );
|
|
|
fields->add( Text( fieldName->getText() ) );
|
|
|
values->add( Parser::getValue( *value ) );
|
|
@@ -192,11 +197,11 @@ JSONObject::JSONObject( Text string )
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-JSONObject::JSONObject( const JSONObject &obj )
|
|
|
+JSONObject::JSONObject( const JSONObject& obj )
|
|
|
: JSONValue( JSONType::OBJECT )
|
|
|
{
|
|
|
- fields = dynamic_cast<Array<Text> *>( obj.fields->getThis() );
|
|
|
- values = dynamic_cast<RCArray<JSONValue> *>( obj.values->getThis() );
|
|
|
+ fields = dynamic_cast<Array<Text> *>(obj.fields->getThis());
|
|
|
+ values = dynamic_cast<RCArray<JSONValue> *>(obj.values->getThis());
|
|
|
}
|
|
|
|
|
|
JSONObject::~JSONObject()
|
|
@@ -206,17 +211,17 @@ JSONObject::~JSONObject()
|
|
|
}
|
|
|
|
|
|
|
|
|
-JSONObject &JSONObject::operator=( const JSONObject &obj )
|
|
|
+JSONObject& JSONObject::operator=( const JSONObject& obj )
|
|
|
{
|
|
|
fields->release();
|
|
|
values->release();
|
|
|
- fields = dynamic_cast<Array<Text> *>( obj.fields->getThis() );
|
|
|
- values = dynamic_cast<RCArray<JSONValue> *>( obj.values->getThis() );
|
|
|
+ fields = dynamic_cast<Array<Text> *>(obj.fields->getThis());
|
|
|
+ values = dynamic_cast<RCArray<JSONValue> *>(obj.values->getThis());
|
|
|
return *this;
|
|
|
}
|
|
|
|
|
|
|
|
|
-bool JSONObject::addValue( Text field, JSONValue *value )
|
|
|
+bool JSONObject::addValue( Text field, JSONValue* value )
|
|
|
{
|
|
|
if( hasValue( field ) )
|
|
|
return 0;
|
|
@@ -249,7 +254,7 @@ bool JSONObject::hasValue( Text field )
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-JSONValue *JSONObject::getValue( Text field )
|
|
|
+JSONValue* JSONObject::getValue( Text field )
|
|
|
{
|
|
|
for( int i = 0; i < fields->getEintragAnzahl(); i++ )
|
|
|
{
|
|
@@ -264,7 +269,7 @@ Iterator< Text > JSONObject::getFields()
|
|
|
return fields->begin();
|
|
|
}
|
|
|
|
|
|
-Iterator< JSONValue * > JSONObject::getValues()
|
|
|
+Iterator< JSONValue* > JSONObject::getValues()
|
|
|
{
|
|
|
return values->begin();
|
|
|
}
|
|
@@ -274,6 +279,16 @@ int JSONObject::getFieldCount() const
|
|
|
return fields->getEintragAnzahl();
|
|
|
}
|
|
|
|
|
|
+bool JSONObject::isValueOfType( Text field, JSONType type ) const
|
|
|
+{
|
|
|
+ for( int i = 0; i < fields->getEintragAnzahl(); i++ )
|
|
|
+ {
|
|
|
+ if( fields->get( i ).istGleich( field ) )
|
|
|
+ return values->z( i )->getType() == type;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
Text JSONObject::toString() const
|
|
|
{
|
|
|
Text str = "{";
|
|
@@ -291,27 +306,27 @@ Text JSONObject::toString() const
|
|
|
return str;
|
|
|
}
|
|
|
|
|
|
-JSONValue *JSON::loadJSONFromFile( Text path )
|
|
|
+JSONValue* JSON::loadJSONFromFile( Text path )
|
|
|
{
|
|
|
Datei d;
|
|
|
d.setDatei( path );
|
|
|
d.open( Datei::Style::lesen );
|
|
|
int size = (int)d.getSize();
|
|
|
- char *buffer = new char[ size + 1 ];
|
|
|
+ char* buffer = new char[ size + 1 ];
|
|
|
buffer[ size ] = 0;
|
|
|
d.lese( buffer, size );
|
|
|
d.close();
|
|
|
- JSONValue *result = Parser::getValue( buffer );
|
|
|
+ JSONValue* result = Parser::getValue( buffer );
|
|
|
delete[] buffer;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-int Parser::findObjectEndInArray( const char *str )
|
|
|
+int Parser::findObjectEndInArray( const char* str )
|
|
|
{
|
|
|
return findValueEndInObject( str );
|
|
|
}
|
|
|
|
|
|
-Text Parser::removeWhitespace( const char *str )
|
|
|
+Text Parser::removeWhitespace( const char* str )
|
|
|
{
|
|
|
int wsc = 0;
|
|
|
int i = 0;
|
|
@@ -385,7 +400,7 @@ Text Parser::removeWhitespace( const char *str )
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-JSONValue *Parser::getValue( const char *str )
|
|
|
+JSONValue* Parser::getValue( const char* str )
|
|
|
{
|
|
|
Text string = Parser::removeWhitespace( str );
|
|
|
if( string.istGleich( "true" ) )
|
|
@@ -407,15 +422,15 @@ JSONValue *Parser::getValue( const char *str )
|
|
|
if( string.anzahlVon( '.' ) == 1 )
|
|
|
{
|
|
|
bool isNumber = 1;
|
|
|
- for( char *c = ( *string.getText() == '-' ) ? string.getText() + 1 : string.getText(); *c; c++ )
|
|
|
- isNumber &= ( *c >= '0' && *c <= '9' ) || *c == '.';
|
|
|
+ for( char* c = (*string.getText() == '-') ? string.getText() + 1 : string.getText(); *c; c++ )
|
|
|
+ isNumber &= (*c >= '0' && *c <= '9') || *c == '.';
|
|
|
if( isNumber )
|
|
|
return new JSONNumber( string );
|
|
|
}
|
|
|
return new JSONValue();
|
|
|
}
|
|
|
|
|
|
-int Parser::findFieldEndInObject( const char *str )
|
|
|
+int Parser::findFieldEndInObject( const char* str )
|
|
|
{
|
|
|
int i = 0;
|
|
|
bool esc = 0;
|
|
@@ -470,7 +485,7 @@ int Parser::findFieldEndInObject( const char *str )
|
|
|
return i;
|
|
|
}
|
|
|
|
|
|
-int Parser::findValueEndInObject( const char *str )
|
|
|
+int Parser::findValueEndInObject( const char* str )
|
|
|
{
|
|
|
int i = 0;
|
|
|
bool esc = 0;
|