Important Update:

- JSONparseCore:
  - Allow JSON to be parsed from string data
- DataTreeCore:
  - Allow GetMember to work with now path, ie. return BaseMember param
This commit is contained in:
Charl Wentzel
2018-10-28 22:36:31 +00:00
parent 22a05ebd4e
commit 12a8ddb7ba
3 changed files with 30 additions and 4 deletions

View File

@@ -60,8 +60,6 @@ TDataMember * CDataTree::CreateMember( TDataMember * Parent, TDataMember * Prev
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
bool CDataTree::DestroyMember( TDataMember ** Member ) bool CDataTree::DestroyMember( TDataMember ** Member )
{ {
TDataMember * NextMember; TDataMember * NextMember;
@@ -268,9 +266,13 @@ TDataMember * CDataTree::GetMember( TDataMember * BaseMember, const char * Path
TDataMember ** Member; TDataMember ** Member;
// Get Child // Get Child
if (!Path || !*Path) {
return ((BaseMember)? BaseMember : NULL);
} else {
Member = GetMemberPtr( BaseMember, Path, Create ); Member = GetMemberPtr( BaseMember, Path, Create );
return ((Member)? *Member : NULL); return ((Member)? *Member : NULL);
} }
}
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
TDataMember * CDataTree::GetIndexChild( TDataMember * Parent, const int Index ) TDataMember * CDataTree::GetIndexChild( TDataMember * Parent, const int Index )

View File

@@ -254,6 +254,29 @@ bool CJSONparse::ReadFromHandle( const char * BasePath, int Handle, bool pRefill
} }
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
bool CJSONparse::ReadFromString( const char * BasePath, const char * InString, const int Len )
{
bool result = false;
// Clear Error
Error = false;
// Load Buffer
CreateBuffer( Len );
Buffer->Push( true, InString, Len );
// Continuously refill buffer while loading
result = ReadFromBuffer( BasePath );
RefillBuffer = false;
// Destroy buffer
FreeBuffer();
InputHandle = -1;
return result;
}
//---------------------------------------------------------------------------
bool CJSONparse::ReadFromBuffer( const char * BasePath ) bool CJSONparse::ReadFromBuffer( const char * BasePath )
{ {
TDataMember * BaseMember = NULL; TDataMember * BaseMember = NULL;

View File

@@ -67,6 +67,7 @@ public:
bool ReadFromBuffer( const char * BasePath ); bool ReadFromBuffer( const char * BasePath );
// Input // Input
bool ReadFromString( const char * BasePath, const char * InString, const int Len );
bool ReadFromHandle( const char * BasePath, const int Handle, bool pRefillBuffer ); bool ReadFromHandle( const char * BasePath, const int Handle, bool pRefillBuffer );
bool ReadFromFile( const char * BasePath, const char * Path, const char * FileName ); bool ReadFromFile( const char * BasePath, const char * Path, const char * FileName );
bool ReadFromFile( const char * BasePath, const char * FilePath ); bool ReadFromFile( const char * BasePath, const char * FilePath );