Code compacting of JSON & DataTree:
- Remove excessive {}
DataTree:
- Use "p" prefix in funtion parameters to avoid object parameter overlap
This commit is contained in:
@@ -31,9 +31,8 @@ CJSONparse::CJSONparse( CDataMember * pDataTree )
|
||||
CJSONparse::~CJSONparse()
|
||||
{
|
||||
// Destroy buffer
|
||||
if (Buffer) {
|
||||
if (Buffer)
|
||||
delete Buffer;
|
||||
}
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
@@ -118,9 +117,8 @@ bool CJSONparse::WriteToFile( const char * BasePath, const char * Path, const ch
|
||||
if (Path && *Path) {
|
||||
strcpy( FilePath, Path );
|
||||
PathLen = strlen( FilePath );
|
||||
if (FilePath[PathLen] != '/') {
|
||||
if (FilePath[PathLen] != '/')
|
||||
FilePath[PathLen++] = '/';
|
||||
}
|
||||
}
|
||||
strcpy( &FilePath[PathLen], FileName );
|
||||
|
||||
@@ -215,9 +213,8 @@ bool CJSONparse::ReadFromFile( const char * BasePath, const char * Path, const c
|
||||
if (Path && *Path) {
|
||||
strcpy( FilePath, Path );
|
||||
PathLen = strlen( FilePath );
|
||||
if (FilePath[PathLen] != '/') {
|
||||
if (FilePath[PathLen] != '/')
|
||||
FilePath[PathLen++] = '/';
|
||||
}
|
||||
}
|
||||
strcpy( &FilePath[PathLen], FileName );
|
||||
|
||||
@@ -347,8 +344,8 @@ bool CJSONparse::ReadFromBuffer( const char * BasePath )
|
||||
BaseMember->Clear();
|
||||
|
||||
// Position Counters
|
||||
LineNo = 1;
|
||||
CharNo = 0;
|
||||
LineNo = 1;
|
||||
CharNo = 0;
|
||||
|
||||
// Parse Root Object
|
||||
SkipWhiteSpace();
|
||||
@@ -357,9 +354,8 @@ bool CJSONparse::ReadFromBuffer( const char * BasePath )
|
||||
CharNo += BufPos-Mark;
|
||||
sprintf( ErrorText, "First entry in file must be an Object or Array on line %d:%d", LineNo, CharNo );
|
||||
}
|
||||
if (Error) {
|
||||
if (Error)
|
||||
return false;
|
||||
}
|
||||
|
||||
// Ensure remainder of file is empty
|
||||
SkipWhiteSpace();
|
||||
@@ -428,8 +424,7 @@ void CJSONparse::FreeBuffer()
|
||||
|
||||
void CJSONparse::SkipWhiteSpace()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
while (true) {
|
||||
// Append buffer if required
|
||||
if (!*BufPos && RefillBuffer)
|
||||
FillBuffer();
|
||||
@@ -458,9 +453,8 @@ bool CJSONparse::ParseString( char ** Value, int &Len )
|
||||
char HexVal[5] = "";
|
||||
|
||||
// Check for opening quote
|
||||
if (*BufPos != '"') {
|
||||
if (*BufPos != '"')
|
||||
return false;
|
||||
}
|
||||
|
||||
// Clear values
|
||||
*Value = NULL;
|
||||
@@ -470,12 +464,12 @@ bool CJSONparse::ParseString( char ** Value, int &Len )
|
||||
BufPos++;
|
||||
|
||||
// Check for closing quote
|
||||
while (true)
|
||||
{
|
||||
while (true) {
|
||||
// Check for special characters
|
||||
if ((EndMark = strpbrk( BufPos, "\"\\\n\t\b\f\n\r" ))) { /*"\"/\\\n\t\b\f\n\r" (forward slash included)*/
|
||||
BufPos = EndMark;
|
||||
} else if (RefillBuffer) {
|
||||
}
|
||||
else if (RefillBuffer) {
|
||||
FillBuffer();
|
||||
continue;
|
||||
}
|
||||
@@ -492,9 +486,8 @@ bool CJSONparse::ParseString( char ** Value, int &Len )
|
||||
}
|
||||
else if (*BufPos == '\\') {
|
||||
if (!*(BufPos+1) && RefillBuffer) {
|
||||
if (FillBuffer()) {
|
||||
if (FillBuffer())
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (*(BufPos+1) == 'u') {
|
||||
for (EndMark = BufPos+2; EndMark < BufPos+6; EndMark++) {
|
||||
@@ -538,8 +531,7 @@ bool CJSONparse::ParseString( char ** Value, int &Len )
|
||||
|
||||
// Convert value
|
||||
BufPos = Mark+1;
|
||||
while ((EndMark = strpbrk( BufPos, "\"\\" )))
|
||||
{
|
||||
while ((EndMark = strpbrk( BufPos, "\"\\" ))) {
|
||||
// Copy portion
|
||||
memcpy( ValuePos, BufPos, (EndMark-BufPos) );
|
||||
ValuePos += (EndMark-BufPos);
|
||||
@@ -586,16 +578,14 @@ bool CJSONparse::ParseObject( CDataMember * Object )
|
||||
int Len = 0;
|
||||
|
||||
// Check for start of Object
|
||||
if (*BufPos != '{') {
|
||||
if (*BufPos != '{')
|
||||
return false;
|
||||
}
|
||||
BufPos++;
|
||||
|
||||
// Set Type
|
||||
Object->SetValue( jtObject );
|
||||
|
||||
while (true)
|
||||
{
|
||||
while (true) {
|
||||
// Evaluate key name
|
||||
SkipWhiteSpace();
|
||||
if (*BufPos == '}') {
|
||||
@@ -666,21 +656,18 @@ bool CJSONparse::ParseArray( CDataMember * Array )
|
||||
CDataMember ** Member;
|
||||
|
||||
// Check for start of Object
|
||||
if (*BufPos != '[') {
|
||||
if (*BufPos != '[')
|
||||
return false;
|
||||
}
|
||||
BufPos++;
|
||||
|
||||
// Set Type
|
||||
Array->SetValue( jtArray );
|
||||
Member = &(Array->FirstChild);
|
||||
while (true)
|
||||
{
|
||||
while (true) {
|
||||
// Look for Member Name
|
||||
SkipWhiteSpace();
|
||||
if (*BufPos == ']') {
|
||||
if (*BufPos == ']')
|
||||
break;
|
||||
}
|
||||
|
||||
// Add new element
|
||||
*Member = new CDataMember( Array );
|
||||
@@ -724,9 +711,8 @@ bool CJSONparse::ParseString( CDataMember * Member )
|
||||
int Len = 0;
|
||||
|
||||
// Try to parse
|
||||
if (!ParseString( &Value, Len )) {
|
||||
if (!ParseString( &Value, Len ))
|
||||
return false;
|
||||
}
|
||||
|
||||
// Set string
|
||||
Member->SetValuePtr( jtString, Value, Len );
|
||||
@@ -737,7 +723,6 @@ bool CJSONparse::ParseString( CDataMember * Member )
|
||||
|
||||
bool CJSONparse::ParsePrimitive( CDataMember * Member )
|
||||
{
|
||||
char * Value = NULL;
|
||||
int Len = 0;
|
||||
char * EndMark;
|
||||
|
||||
@@ -772,19 +757,13 @@ bool CJSONparse::ParsePrimitive( CDataMember * Member )
|
||||
// Try conversion to int
|
||||
strtol( Mark, &EndMark, 10 );
|
||||
if (EndMark == BufPos) {
|
||||
Value = (char*)malloc( Len+1 );
|
||||
memcpy( Value, Mark, Len );
|
||||
Value[Len] = 0;
|
||||
Member->SetValuePtr( jtInt, Value, Len );
|
||||
Member->SetValue( jtInt, Mark, Len );
|
||||
}
|
||||
else {
|
||||
// Try conversion to float
|
||||
strtod( Mark, &EndMark );
|
||||
if (EndMark == BufPos) {
|
||||
Value = (char*)malloc( Len+1 );
|
||||
memcpy( Value, Mark, Len );
|
||||
Value[Len] = 0;
|
||||
Member->SetValuePtr( jtFloat, Value, Len );
|
||||
Member->SetValue( jtFloat, Mark, Len );
|
||||
}
|
||||
else {
|
||||
Error = true;
|
||||
@@ -810,8 +789,7 @@ bool CJSONparse::PrintString( char * String, int Len )
|
||||
|
||||
// Content
|
||||
BufPos = String;
|
||||
while (true)
|
||||
{
|
||||
while (true) {
|
||||
// Scan for special chars
|
||||
Mark = BufPos;
|
||||
while ((*BufPos >= 32) && (*BufPos <= 126) && (*BufPos != '\\') && /*(*BufPos != '/') &&*/ (*BufPos != '"'))
|
||||
@@ -880,8 +858,7 @@ bool CJSONparse::PrintObject( CDataMember * Object, const int Indent )
|
||||
}
|
||||
|
||||
// Save parameters
|
||||
for (Member = Object->FirstChild; Member != NULL; (Member = Member->NextPeer))
|
||||
{
|
||||
for (Member = Object->FirstChild; Member != NULL; (Member = Member->NextPeer)) {
|
||||
// Whitespace around first bracket
|
||||
if (Indent) {
|
||||
if (First) {
|
||||
@@ -894,20 +871,21 @@ bool CJSONparse::PrintObject( CDataMember * Object, const int Indent )
|
||||
}
|
||||
|
||||
// Print key name
|
||||
if (!PrintString( Member->Name, strlen(Member->Name) ))
|
||||
if (!PrintString( Member->Name, strlen(Member->Name) )) {
|
||||
return false;
|
||||
if (Indent) {
|
||||
}
|
||||
else if (Indent) {
|
||||
if (Print( this, " : ", 3 ) < 0)
|
||||
return false;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
if (Print( this, ":", 1 ) < 0)
|
||||
return false;
|
||||
}
|
||||
|
||||
// Print value
|
||||
Last = (++Count >= Object->Len);
|
||||
switch (Member->Type)
|
||||
{
|
||||
switch (Member->Type) {
|
||||
case jtNull :
|
||||
if (Print( this, "null", 4 ) < 0)
|
||||
return false;
|
||||
@@ -968,6 +946,7 @@ bool CJSONparse::PrintObject( CDataMember * Object, const int Indent )
|
||||
}
|
||||
if (Print( this, "}", 1 ) < 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
@@ -998,8 +977,7 @@ bool CJSONparse::PrintArray( CDataMember * Array, const int Indent )
|
||||
}
|
||||
|
||||
// Save parameters
|
||||
for (Member = Array->FirstChild; Member != NULL; (Member = Member->NextPeer))
|
||||
{
|
||||
for (Member = Array->FirstChild; Member != NULL; (Member = Member->NextPeer)) {
|
||||
// Whitespace around brace
|
||||
if (Indent) {
|
||||
if (First) {
|
||||
@@ -1012,8 +990,7 @@ bool CJSONparse::PrintArray( CDataMember * Array, const int Indent )
|
||||
}
|
||||
|
||||
Last = (++Count >= Array->Len);
|
||||
switch (Member->Type)
|
||||
{
|
||||
switch (Member->Type) {
|
||||
case jtNull :
|
||||
if (Print( this, "null", 4 ) < 0)
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user