Important Update:
- DataTree:
- Allow to read Null/String/Int/Float/Bool as anyone of the other types,
except Array/Object
This commit is contained in:
@@ -576,7 +576,8 @@ const long CDataTree::GetInt( TDataMember * BaseMember, const char * Path, long
|
|||||||
TDataMember * Member;
|
TDataMember * Member;
|
||||||
|
|
||||||
// Validate
|
// Validate
|
||||||
if ((Member = GetMember( BaseMember, Path, Create )) && (Member->Type == jtInt)) {
|
if ((Member = GetMember( BaseMember, Path, false )) &&
|
||||||
|
((Member->Type == jtString) || (Member->Type == jtFloat) || (Member->Type == jtInt) || (Member->Type == jtBool)) ) {
|
||||||
return strtol( Member->Value, NULL, 10 );
|
return strtol( Member->Value, NULL, 10 );
|
||||||
}
|
}
|
||||||
else if (Member && Create && (Member->Type == jtNull)) {
|
else if (Member && Create && (Member->Type == jtNull)) {
|
||||||
@@ -596,7 +597,8 @@ const double CDataTree::GetFloat( TDataMember * BaseMember, const char * Path,
|
|||||||
TDataMember * Member;
|
TDataMember * Member;
|
||||||
|
|
||||||
// Validate
|
// Validate
|
||||||
if ((Member = GetMember( BaseMember, Path, Create )) && (Member->Type == jtFloat)) {
|
if ((Member = GetMember( BaseMember, Path, false )) &&
|
||||||
|
((Member->Type == jtString) || (Member->Type == jtFloat) || (Member->Type == jtInt) || (Member->Type == jtBool)) ) {
|
||||||
return strtod( Member->Value, NULL );
|
return strtod( Member->Value, NULL );
|
||||||
}
|
}
|
||||||
else if (Member && Create && (Member->Type == jtNull)) {
|
else if (Member && Create && (Member->Type == jtNull)) {
|
||||||
@@ -616,10 +618,20 @@ const bool CDataTree::GetBool( TDataMember * BaseMember, const char * Path, boo
|
|||||||
TDataMember * Member;
|
TDataMember * Member;
|
||||||
|
|
||||||
// Validate
|
// Validate
|
||||||
if ((Member = GetMember( BaseMember, Path, Create )) && (Member->Type == jtBool)) {
|
if ((Member = GetMember( BaseMember, Path, false ))) {
|
||||||
|
if (Member->Type == jtString) {
|
||||||
|
return ((!*Member->Value)? false : true);
|
||||||
|
}
|
||||||
|
else if (Member->Type == jtFloat) {
|
||||||
|
return ((strtod( Member->Value, NULL ) == 0)? false : true );
|
||||||
|
}
|
||||||
|
else if (Member->Type == jtInt) {
|
||||||
|
return ((strtol( Member->Value, NULL, 10 ) == 0)? false : true );
|
||||||
|
}
|
||||||
|
else if (Member->Type == jtBool) {
|
||||||
return ((!strcasecmp( Member->Value, "0" ))? false : true );
|
return ((!strcasecmp( Member->Value, "0" ))? false : true );
|
||||||
}
|
}
|
||||||
else if (Member && Create && (Member->Type == jtNull)) {
|
else if ((Member->Type == jtNull) && Create) {
|
||||||
SetValue( Member, jtBool, ((Default)? "1" : "0") );
|
SetValue( Member, jtBool, ((Default)? "1" : "0") );
|
||||||
return Default;
|
return Default;
|
||||||
}
|
}
|
||||||
@@ -627,5 +639,9 @@ const bool CDataTree::GetBool( TDataMember * BaseMember, const char * Path, boo
|
|||||||
return Default;
|
return Default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
return Default;
|
||||||
|
}
|
||||||
|
}
|
||||||
//---------------------------------------------------------------------------
|
//---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user