DataTree: Simplify object init

This commit is contained in:
2021-07-05 12:31:13 +02:00
parent 0e6cbf6664
commit 43518eff80
2 changed files with 15 additions and 55 deletions

View File

@@ -20,21 +20,6 @@ CDataMember::CDataMember( const char * pName, const int pLen )
NameLen = (pLen == -1)? strlen( pName ) : pLen ;
Name = strndup( pName, NameLen );
}
else {
NameLen = 0;
Name = NULL;
}
Type = jtNull;
Value = NULL;
Len = 0;
FirstChild = NULL;
LastChild = NULL;
Parent = NULL;
PrevPeer = NULL;
NextPeer = NULL;
}
//---------------------------------------------------------------------------
@@ -44,24 +29,8 @@ CDataMember::CDataMember( CDataMember * pParent, const char * pName, const int p
NameLen = (pLen == -1)? strlen( pName ) : pLen ;
Name = strndup( pName, NameLen );
}
else {
NameLen = 0;
Name = NULL;
}
Type = jtNull;
Value = NULL;
Len = 0;
FirstChild = NULL;
LastChild = NULL;
if (!pParent) {
Parent = NULL;
PrevPeer = NULL;
NextPeer = NULL;
}
else {
if (pParent) {
// Clear/reset parent if not object
Parent = pParent;
if ((Parent->Type != jtNull) && (Parent->Type != jtObject) && (Parent->Type != jtArray)) {
@@ -71,17 +40,12 @@ CDataMember::CDataMember( CDataMember * pParent, const char * pName, const int p
// Insert into Parent & Peer lists
Parent->Len++;
if (!Parent->FirstChild) {
PrevPeer = NULL;
NextPeer = NULL;
Parent->FirstChild = this;
Parent->LastChild = this;
}
else {
PrevPeer = Parent->LastChild;
Parent->LastChild->NextPeer = this;
NextPeer = NULL;
Parent->LastChild = this;
}
}
@@ -93,19 +57,15 @@ CDataMember::~CDataMember()
// Remove from parent
if (Parent) {
Parent->Len--;
if (this == Parent->LastChild) {
if (this == Parent->LastChild)
Parent->LastChild = PrevPeer;
}
if (this == Parent->FirstChild) {
if (this == Parent->FirstChild)
Parent->FirstChild = NextPeer;
}
}
if (PrevPeer) {
if (PrevPeer)
PrevPeer->NextPeer = NextPeer;
}
if (NextPeer) {
if (NextPeer)
NextPeer->PrevPeer = PrevPeer;
}
// Destroy value/children
Clear();

View File

@@ -23,19 +23,19 @@ typedef enum { jtNull = 0, jtBool = 1, jtInt = 2, jtFloat = 3, jtString = 4, jtA
// One Config Members
class CDataMember
{
char * Name;
unsigned short NameLen;
EJsonDataType Type;
char * Name = NULL;
unsigned short NameLen = 0;
EJsonDataType Type = jtNull;
char * Value;
unsigned short Len;
char * Value = NULL;
unsigned short Len = 0;
CDataMember * FirstChild;
CDataMember * LastChild;
CDataMember * FirstChild = NULL;
CDataMember * LastChild = NULL;
CDataMember * Parent;
CDataMember * PrevPeer;
CDataMember * NextPeer;
CDataMember * Parent = NULL;
CDataMember * PrevPeer = NULL;
CDataMember * NextPeer = NULL;
// Manage Members
CDataMember * CreateChild( const char * Name, const int Len = -1 );