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 ; NameLen = (pLen == -1)? strlen( pName ) : pLen ;
Name = strndup( pName, NameLen ); 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 ; NameLen = (pLen == -1)? strlen( pName ) : pLen ;
Name = strndup( pName, NameLen ); Name = strndup( pName, NameLen );
} }
else {
NameLen = 0;
Name = NULL;
}
Type = jtNull; if (pParent) {
Value = NULL;
Len = 0;
FirstChild = NULL;
LastChild = NULL;
if (!pParent) {
Parent = NULL;
PrevPeer = NULL;
NextPeer = NULL;
}
else {
// Clear/reset parent if not object // Clear/reset parent if not object
Parent = pParent; Parent = pParent;
if ((Parent->Type != jtNull) && (Parent->Type != jtObject) && (Parent->Type != jtArray)) { 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 // Insert into Parent & Peer lists
Parent->Len++; Parent->Len++;
if (!Parent->FirstChild) { if (!Parent->FirstChild) {
PrevPeer = NULL;
NextPeer = NULL;
Parent->FirstChild = this; Parent->FirstChild = this;
Parent->LastChild = this; Parent->LastChild = this;
} }
else { else {
PrevPeer = Parent->LastChild; PrevPeer = Parent->LastChild;
Parent->LastChild->NextPeer = this; Parent->LastChild->NextPeer = this;
NextPeer = NULL;
Parent->LastChild = this; Parent->LastChild = this;
} }
} }
@@ -93,19 +57,15 @@ CDataMember::~CDataMember()
// Remove from parent // Remove from parent
if (Parent) { if (Parent) {
Parent->Len--; Parent->Len--;
if (this == Parent->LastChild) { if (this == Parent->LastChild)
Parent->LastChild = PrevPeer; Parent->LastChild = PrevPeer;
} if (this == Parent->FirstChild)
if (this == Parent->FirstChild) {
Parent->FirstChild = NextPeer; Parent->FirstChild = NextPeer;
} }
} if (PrevPeer)
if (PrevPeer) {
PrevPeer->NextPeer = NextPeer; PrevPeer->NextPeer = NextPeer;
} if (NextPeer)
if (NextPeer) {
NextPeer->PrevPeer = PrevPeer; NextPeer->PrevPeer = PrevPeer;
}
// Destroy value/children // Destroy value/children
Clear(); Clear();

View File

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