From 12a8ddb7ba3567469674ced1a081f2b137369f55 Mon Sep 17 00:00:00 2001 From: Charl Wentzel Date: Sun, 28 Oct 2018 22:36:31 +0000 Subject: [PATCH] Important Update: - JSONparseCore: - Allow JSON to be parsed from string data - DataTreeCore: - Allow GetMember to work with now path, ie. return BaseMember param --- DataTreeCore.cpp | 10 ++++++---- JSONparseCore.cpp | 23 +++++++++++++++++++++++ JSONparseCore.h | 1 + 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/DataTreeCore.cpp b/DataTreeCore.cpp index 514e3e3..beb5fa1 100644 --- a/DataTreeCore.cpp +++ b/DataTreeCore.cpp @@ -60,8 +60,6 @@ TDataMember * CDataTree::CreateMember( TDataMember * Parent, TDataMember * Prev } //--------------------------------------------------------------------------- - - bool CDataTree::DestroyMember( TDataMember ** Member ) { TDataMember * NextMember; @@ -268,8 +266,12 @@ TDataMember * CDataTree::GetMember( TDataMember * BaseMember, const char * Path TDataMember ** Member; // Get Child - Member = GetMemberPtr( BaseMember, Path, Create ); - return ((Member)? *Member : NULL); + if (!Path || !*Path) { + return ((BaseMember)? BaseMember : NULL); + } else { + Member = GetMemberPtr( BaseMember, Path, Create ); + return ((Member)? *Member : NULL); + } } //--------------------------------------------------------------------------- diff --git a/JSONparseCore.cpp b/JSONparseCore.cpp index 94cbfbb..cc86530 100644 --- a/JSONparseCore.cpp +++ b/JSONparseCore.cpp @@ -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 ) { TDataMember * BaseMember = NULL; diff --git a/JSONparseCore.h b/JSONparseCore.h index 19ac3f4..2f1a2a0 100644 --- a/JSONparseCore.h +++ b/JSONparseCore.h @@ -67,6 +67,7 @@ public: bool ReadFromBuffer( const char * BasePath ); // Input + bool ReadFromString( const char * BasePath, const char * InString, const int Len ); 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 * FilePath );