Important update:
- DataTreeCore:
- Renamed Get/SetMemXxx() methods to Get/SetChXxx()
- Renamed GetMember() to GetChild()
- Updated: JSONparse, ApplicationCore, FunctionCore, SelectableCore,
and WatchdogCore
- Remove unused PrevChild & Last vars in GetChild (GetMember)
- JSONparseCore:
- Use return values from write() and PrintXxx() methods to report fail
- SelectableCore:
- Fix possible uninitialised FlowCtrl & Parity value
- DateTimeCore:
- Fix possible memory overrun in temp buffer
- EventBufferCore:
- Fix possible uninitialised value error in AddEvent
This commit is contained in:
@@ -148,18 +148,16 @@ bool CDataMember::Clear()
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
CDataMember * CDataMember::GetMember( const char * Path, bool Create )
|
||||
CDataMember * CDataMember::GetChild( const char * Path, bool Create )
|
||||
{
|
||||
CDataMember * Member;
|
||||
CDataMember ** Child;
|
||||
CDataMember * PrevChild;
|
||||
char * Pos;
|
||||
char * EndPos;
|
||||
char * Key;
|
||||
unsigned short KeyLen;
|
||||
int Index;
|
||||
int Count;
|
||||
bool Last = false;
|
||||
|
||||
// Validate
|
||||
if (!Path || !*Path) {
|
||||
@@ -197,11 +195,7 @@ CDataMember * CDataMember::GetMember( const char * Path, bool Create )
|
||||
Pos++;
|
||||
if (!*Pos)
|
||||
break;
|
||||
|
||||
// Check if last
|
||||
Pos++;
|
||||
if (!*Pos)
|
||||
Last = true;
|
||||
|
||||
if (Pos == Key+1) {
|
||||
// Empty bracket only allowed for create
|
||||
@@ -210,10 +204,8 @@ CDataMember * CDataMember::GetMember( const char * Path, bool Create )
|
||||
Index = -1;
|
||||
|
||||
// find end of list
|
||||
PrevChild = NULL;
|
||||
Child = &(Member->FirstChild);
|
||||
while (*Child) {
|
||||
PrevChild = *Child;
|
||||
Child = &((*Child)->NextPeer);
|
||||
}
|
||||
}
|
||||
@@ -224,11 +216,9 @@ CDataMember * CDataMember::GetMember( const char * Path, bool Create )
|
||||
break;
|
||||
|
||||
// Find element at requested index
|
||||
PrevChild = NULL;
|
||||
Child = &(Member->FirstChild);
|
||||
Count = 0;
|
||||
while (*Child && (Count < Index)) {
|
||||
PrevChild = *Child;
|
||||
Child = &((*Child)->NextPeer);
|
||||
Count++;
|
||||
}
|
||||
@@ -264,16 +254,9 @@ CDataMember * CDataMember::GetMember( const char * Path, bool Create )
|
||||
Pos++;
|
||||
}
|
||||
|
||||
// More elements?
|
||||
if (!*Pos) {
|
||||
Last = true;
|
||||
}
|
||||
|
||||
// Find next parent
|
||||
PrevChild = NULL;
|
||||
Child = &(Member->FirstChild);
|
||||
while (*Child && (((*Child)->NameLen != KeyLen) || strncasecmp( (*Child)->Name, Key, KeyLen ))) {
|
||||
PrevChild = *Child;
|
||||
Child = &((*Child)->NextPeer);
|
||||
}
|
||||
if (!*Child && Create) {
|
||||
@@ -288,12 +271,12 @@ CDataMember * CDataMember::GetMember( const char * Path, bool Create )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
CDataMember * CDataMember::GetMemFirstChild( const char * Path )
|
||||
CDataMember * CDataMember::GetChFirstChild( const char * Path )
|
||||
{
|
||||
CDataMember * Member = NULL;
|
||||
|
||||
// Find member
|
||||
Member = (!Path || !*Path)? this : GetMember( Path, false );
|
||||
Member = (!Path || !*Path)? this : GetChild( Path, false );
|
||||
|
||||
// Check if valid type
|
||||
if (!Member || ((Member->Type != jtObject) && (Member->Type != jtNull))) {
|
||||
@@ -304,14 +287,14 @@ CDataMember * CDataMember::GetMemFirstChild( const char * Path )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
CDataMember * CDataMember::GetMemElement( const char * Path, const int Index )
|
||||
CDataMember * CDataMember::GetChElement( const char * Path, const int Index )
|
||||
{
|
||||
CDataMember * Member = NULL;
|
||||
CDataMember * Child = NULL;
|
||||
int Count;
|
||||
|
||||
// Find Member
|
||||
Member = (!Path || !*Path)? this : GetMember( Path, false );
|
||||
Member = (!Path || !*Path)? this : GetChild( Path, false );
|
||||
|
||||
// Check if valid type
|
||||
if (!Member || ((Member->Type != jtArray) && (Member->Type != jtNull))) {
|
||||
@@ -340,7 +323,7 @@ bool CDataMember::Delete( const char * Path )
|
||||
Clear();
|
||||
return true;
|
||||
}
|
||||
else if ((Member = GetMember( Path, false ))) {
|
||||
else if ((Member = GetChild( Path, false ))) {
|
||||
// If valid path, destroy member
|
||||
delete Member;
|
||||
return true;
|
||||
@@ -381,12 +364,12 @@ bool CDataMember::SetValue( EDataType pType, const char * pValue, int pLen )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool CDataMember::SetMemObject( const char * Path )
|
||||
bool CDataMember::SetChObject( const char * Path )
|
||||
{
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if (!(Member = GetMember( Path, true ))) {
|
||||
if (!(Member = GetChild( Path, true ))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -396,12 +379,12 @@ bool CDataMember::SetMemObject( const char * Path )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool CDataMember::SetMemArray( const char * Path )
|
||||
bool CDataMember::SetChArray( const char * Path )
|
||||
{
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if (!(Member = GetMember( Path, true ))) {
|
||||
if (!(Member = GetChild( Path, true ))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -411,12 +394,12 @@ bool CDataMember::SetMemArray( const char * Path )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool CDataMember::SetMemStr( const char * Path, const char * Value, const int Len )
|
||||
bool CDataMember::SetChStr( const char * Path, const char * Value, const int Len )
|
||||
{
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if (!(Member = GetMember( Path, true ))) {
|
||||
if (!(Member = GetChild( Path, true ))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -431,13 +414,13 @@ bool CDataMember::SetMemStr( const char * Path, const char * Value, const int L
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool CDataMember::SetMemInt( const char * Path, const long Value, const char * Mask )
|
||||
bool CDataMember::SetChInt( const char * Path, const long Value, const char * Mask )
|
||||
{
|
||||
CDataMember * Member;
|
||||
char ValueStr[20];
|
||||
|
||||
// Validate
|
||||
if (!(Member = GetMember( Path, true ))) {
|
||||
if (!(Member = GetChild( Path, true ))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -448,13 +431,13 @@ bool CDataMember::SetMemInt( const char * Path, const long Value, const char *
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool CDataMember::SetMemFloat( const char * Path, const double Value, const char * Mask )
|
||||
bool CDataMember::SetChFloat( const char * Path, const double Value, const char * Mask )
|
||||
{
|
||||
CDataMember * Member;
|
||||
char ValueStr[20];
|
||||
|
||||
// Validate
|
||||
if (!(Member = GetMember( Path, true ))) {
|
||||
if (!(Member = GetChild( Path, true ))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -465,12 +448,12 @@ bool CDataMember::SetMemFloat( const char * Path, const double Value, const cha
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool CDataMember::SetMemBool( const char * Path, const bool Value )
|
||||
bool CDataMember::SetChBool( const char * Path, const bool Value )
|
||||
{
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if (!(Member = GetMember( Path, true ))) {
|
||||
if (!(Member = GetChild( Path, true ))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -480,12 +463,12 @@ bool CDataMember::SetMemBool( const char * Path, const bool Value )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
bool CDataMember::SetMemNull( const char * Path )
|
||||
bool CDataMember::SetChNull( const char * Path )
|
||||
{
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if (!(Member = GetMember( Path, true ))) {
|
||||
if (!(Member = GetChild( Path, true ))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -500,7 +483,7 @@ const char * CDataMember::GetName( const char * Path )
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if (!(Member = GetMember( Path, false ))) {
|
||||
if (!(Member = GetChild( Path, false ))) {
|
||||
return NULL;
|
||||
}
|
||||
return Member->Name;
|
||||
@@ -512,7 +495,7 @@ EDataType CDataMember::GetType( const char * Path )
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if (!(Member = GetMember( Path, false ))) {
|
||||
if (!(Member = GetChild( Path, false ))) {
|
||||
return jtNull;
|
||||
}
|
||||
return Member->Type;
|
||||
@@ -524,7 +507,7 @@ const int CDataMember::GetLen( const char * Path )
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if ((Member = GetMember( Path, false ))) {
|
||||
if ((Member = GetChild( Path, false ))) {
|
||||
return Member->Len;
|
||||
}
|
||||
else {
|
||||
@@ -533,12 +516,12 @@ const int CDataMember::GetLen( const char * Path )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
const char * CDataMember::GetMemStr( const char * Path, const char * Default, bool Create )
|
||||
const char * CDataMember::GetChStr( const char * Path, const char * Default, bool Create )
|
||||
{
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if ((Member = GetMember( Path, Create )) &&
|
||||
if ((Member = GetChild( Path, Create )) &&
|
||||
((Member->Type == jtString) || (Member->Type == jtFloat) || (Member->Type == jtInt) || (Member->Type == jtBool)) ) {
|
||||
return Member->Value;
|
||||
}
|
||||
@@ -552,12 +535,12 @@ const char * CDataMember::GetMemStr( const char * Path, const char * Default, bo
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
const char * CDataMember::GetMemStr( const char * Path, int &Len, const char * Default, bool Create )
|
||||
const char * CDataMember::GetChStr( const char * Path, int &Len, const char * Default, bool Create )
|
||||
{
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if ((Member = GetMember( Path, Create )) &&
|
||||
if ((Member = GetChild( Path, Create )) &&
|
||||
((Member->Type == jtString) || (Member->Type == jtFloat) || (Member->Type == jtInt) || (Member->Type == jtBool)) ) {
|
||||
Len = Member->Len;
|
||||
return Member->Value;
|
||||
@@ -574,12 +557,12 @@ const char * CDataMember::GetMemStr( const char * Path, int &Len, const char * D
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
const long CDataMember::GetMemInt( const char * Path, long Default, bool Create, const char * Mask )
|
||||
const long CDataMember::GetChInt( const char * Path, long Default, bool Create, const char * Mask )
|
||||
{
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if ((Member = GetMember( Path, Create )) &&
|
||||
if ((Member = GetChild( Path, Create )) &&
|
||||
((Member->Type == jtString) || (Member->Type == jtFloat) || (Member->Type == jtInt) || (Member->Type == jtBool)) ) {
|
||||
return strtol( Member->Value, NULL, 10 );
|
||||
}
|
||||
@@ -595,12 +578,12 @@ const long CDataMember::GetMemInt( const char * Path, long Default, bool Create
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
const double CDataMember::GetMemFloat( const char * Path, double Default, bool Create, const char * Mask )
|
||||
const double CDataMember::GetChFloat( const char * Path, double Default, bool Create, const char * Mask )
|
||||
{
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if ((Member = GetMember( Path, Create )) &&
|
||||
if ((Member = GetChild( Path, Create )) &&
|
||||
((Member->Type == jtString) || (Member->Type == jtFloat) || (Member->Type == jtInt) || (Member->Type == jtBool)) ) {
|
||||
return strtod( Member->Value, NULL );
|
||||
}
|
||||
@@ -616,12 +599,12 @@ const double CDataMember::GetMemFloat( const char * Path, double Default, bool
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
const bool CDataMember::GetMemBool( const char * Path, bool Default, bool Create )
|
||||
const bool CDataMember::GetChBool( const char * Path, bool Default, bool Create )
|
||||
{
|
||||
CDataMember * Member;
|
||||
|
||||
// Validate
|
||||
if ((Member = GetMember( Path, Create ))) {
|
||||
if ((Member = GetChild( Path, Create ))) {
|
||||
if (Member->Type == jtString) {
|
||||
return ((!*Member->Value)? false : true);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user