Major Update:
- Implement consistent Function addition to application
- Use TYPE_XXX constants to declare function type
- Use NewXXXX() methods to call constructor correctly
- Add FunctionType list (with constructor) to Application
- Create Function by comparison to FunctionType list
- Simplify LoadConfig() and Init() methods for functions
- Combine methods into Init() method
- Pass relevant data member to Init() method
- Remove all CDataMember references on functions
- ApplicationCore:
- Split ReadParam() method from LoadConfig() method
- Split main configuration into separate files:
- config/ - main config file, general application settings
- definition/ - application definition, e.g. function blocks
- Definition and Address List files specified in config file
- Load address file in address/ branch
- Made DataTree & JSONparser private
- Made Config, Definition & Address branches public
- Removed unnecessary branch references
- Improved event logging
- DataTreeCore:
- Allow GetChFirstChild & GetChElement to create parent branches
with correct type, ie. Object/Array
- Remove unnecessary Create param from GetXxx functions
- Bug fix: Print empty objects/arrays correct, ie. empty brackets
- Bug fix: Adding element at specific index
- Bug fix: Error when get/create string value with "null"
- FunctionCore:
- Type param now set as constant via constructor
- Create empty Handles & Channels objects if none in Config
- SelectableCore:
- Add Queue length parameter to handles for UNIX and TCP sockets
- DeviceCore:
- Bug fix: missing Process() method
This commit is contained in:
@@ -226,7 +226,7 @@ CDataMember * CDataMember::GetChild( const char * Path, bool Create )
|
||||
|
||||
// Create element if needed
|
||||
if (!*Child && Create) {
|
||||
if ((Index == -1) || (Index = Count + 1)) {
|
||||
if ((Index == -1) || (Index == Count)) {
|
||||
*Child = new CDataMember( Member, NULL );
|
||||
}
|
||||
}
|
||||
@@ -271,35 +271,41 @@ CDataMember * CDataMember::GetChild( const char * Path, bool Create )
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
CDataMember * CDataMember::GetChFirstChild( const char * Path )
|
||||
CDataMember * CDataMember::GetChFirstChild( const char * Path, bool Create )
|
||||
{
|
||||
CDataMember * Member = NULL;
|
||||
|
||||
// Find member
|
||||
Member = (!Path || !*Path)? this : GetChild( Path, false );
|
||||
Member = (!Path || !*Path)? this : GetChild( Path, Create );
|
||||
|
||||
// Check if valid type
|
||||
if (!Member || ((Member->Type != jtObject) && (Member->Type != jtNull))) {
|
||||
return NULL;
|
||||
}
|
||||
else if (Create && (Member->Type == jtNull)) {
|
||||
Member->SetObject(); // Set newly created member to object
|
||||
}
|
||||
|
||||
return Member->FirstChild;
|
||||
}
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
CDataMember * CDataMember::GetChElement( const char * Path, const int Index )
|
||||
CDataMember * CDataMember::GetChElement( const char * Path, const int Index, bool Create )
|
||||
{
|
||||
CDataMember * Member = NULL;
|
||||
CDataMember * Child = NULL;
|
||||
int Count;
|
||||
|
||||
// Find Member
|
||||
Member = (!Path || !*Path)? this : GetChild( Path, false );
|
||||
Member = (!Path || !*Path)? this : GetChild( Path, Create );
|
||||
|
||||
// Check if valid type
|
||||
if (!Member || ((Member->Type != jtArray) && (Member->Type != jtNull))) {
|
||||
return NULL;
|
||||
}
|
||||
else if (Create && (Member->Type == jtNull)) {
|
||||
Member->SetArray(); // Set newly created member to array
|
||||
}
|
||||
|
||||
// Find element at position
|
||||
Count = 0;
|
||||
@@ -526,7 +532,7 @@ const char * CDataMember::GetChStr( const char * Path, const char * Default, boo
|
||||
return Member->Value;
|
||||
}
|
||||
else if (Member && Create && (Member->Type == jtNull)) {
|
||||
Member->SetValue( jtString, Default );
|
||||
Member->SetStr( Default );
|
||||
return Member->Value;
|
||||
}
|
||||
else {
|
||||
@@ -546,7 +552,7 @@ const char * CDataMember::GetChStr( const char * Path, int &Len, const char * De
|
||||
return Member->Value;
|
||||
}
|
||||
else if (Member && Create && (Member->Type == jtNull)) {
|
||||
Member->SetValue( jtString, Default );
|
||||
Member->SetStr( Default );
|
||||
Len = Member->Len;
|
||||
return Member->Value;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user