Important Update:

- DataTreeCore:
  - Add Parent & Prev Child links to DataMembers
  - Update CreateMember() to set Parent/Sibling reference
      & increase Parent->Len
  - Remove AddMember()
  - Update DestroyMember() to decrease Parent->Len
- JSONparseCore:
  - Update ParseArray() for above changes made to DataTreeCore
This commit is contained in:
Charl Wentzel
2017-08-11 15:42:59 +02:00
parent 73743060a0
commit 2b7c49d5bb
3 changed files with 50 additions and 42 deletions

View File

@@ -34,6 +34,8 @@ struct SDataMember
char * Value;
unsigned short Len;
TDataMember * Parent;
TDataMember * Prev;
TDataMember * Next;
};
@@ -45,8 +47,7 @@ private:
TDataMember * RootMember;
// Manage Members
TDataMember * CreateMember( const char * Name, const int Len = -1 );
bool AddMember( TDataMember * Parent, TDataMember * Member );
TDataMember * CreateMember( TDataMember * Parent, TDataMember * PrevChild, const char * Name, const int Len = -1 );
bool DestroyMember( TDataMember ** Member );
bool DestroyValue( TDataMember * Member );
@@ -68,8 +69,10 @@ public:
TDataMember * GetIndexChild( TDataMember * Parent, const int Index );
TDataMember * GetFirstChild( TDataMember * Parent, const char * Path, bool Create = false );
inline TDataMember * GetFirstChild( TDataMember * Parent ) { return ((Parent)? Parent->FirstChild : NULL); };
inline TDataMember * GetNextChild( TDataMember * PrevChild ) { return ((PrevChild)? PrevChild->Next : NULL); };
inline TDataMember * GetParent( TDataMember * Child ) { return ((Child)? Child->Parent : NULL); };
inline TDataMember * GetFirstChild( TDataMember * Parent ) { return ((Parent)? Parent->FirstChild : NULL); };
inline TDataMember * GetPrevChild( TDataMember * Child ) { return ((Child)? Child->Prev : NULL); };
inline TDataMember * GetNextChild( TDataMember * Child ) { return ((Child)? Child->Next : NULL); };
const char * GetStr( TDataMember * BaseMember, const char * Path, const char * Default = NULL, bool Create = false );
const char * GetStr( TDataMember * BaseMember, const char * Path, int &Len, const char * Default = NULL, bool Create = false );