Major Update:
- Bug fix: BufferCore - set correct auto buffer size
- Change Get/Set methods to use BaseReference and full path instead of
ParentPath and MemberName
- Add Create param to all Get methods (create if not found)
- Implement arrays & parsing of arrays
- Set CJSONparse as friend class to DataTree (access protected methods)
- Print JSON to screen
This commit is contained in:
@@ -43,41 +43,46 @@ struct SDataMember
|
||||
class CDataTree
|
||||
{
|
||||
private:
|
||||
TDataMember * RootObject;
|
||||
TDataMember * RootMember;
|
||||
|
||||
// Manage Members
|
||||
TDataMember * CreateMember( const char * Name );
|
||||
bool AddMember( TDataMember * Parent, TDataMember * Member );
|
||||
bool DestroyMember( TDataMember ** Member );
|
||||
bool DestroyValue( TDataMember * Member );
|
||||
|
||||
// Find Member
|
||||
bool GetParent( const char * ParentPath, TDataMember **Parent );
|
||||
TDataMember * GetMember( TDataMember * Parent, const char * Name );
|
||||
TDataMember ** GetMemberPtr( TDataMember * Parent, const char * Name );
|
||||
TDataMember * GetRootMember() { return RootMember; };
|
||||
TDataMember ** GetMemberPtr( TDataMember * BaseMember, const char * Path, bool Create, TDataMember ** Parent = NULL );
|
||||
|
||||
// Set Member value
|
||||
bool SetMember( TDataMember * Member, EDataType Type, const char * Value, const int Len );
|
||||
bool SetValue( TDataMember * Member, EDataType Type, const char * Value, const int Len );
|
||||
bool SetValuePtr( TDataMember * Member, EDataType Type, char * Value, int Len );
|
||||
|
||||
public:
|
||||
CDataTree();
|
||||
~CDataTree();
|
||||
|
||||
bool SetObject( const char * ParentPath, const char * Name );
|
||||
bool SetStr( const char * ParentPath, const char * Name, const char * Value = NULL, const int Len = -1 ); // Use Len param if Value contains NULL values
|
||||
bool SetInt( const char * ParentPath, const char * Name, const long Value );
|
||||
bool SetFloat( const char * ParentPath, const char * Name, const double Value );
|
||||
bool SetBool( const char * ParentPath, const char * Name, const bool Value );
|
||||
bool SetNull( const char * ParentPath, const char * Name );
|
||||
EDataType GetType( TDataMember * BaseMember, const char * Path );
|
||||
TDataMember * GetMember( TDataMember * BaseMember, const char * Path, bool Create = false );
|
||||
|
||||
const EDataType GetType( const char * ParentPath, const char * Name );
|
||||
const char * GetStr( TDataMember * BaseMember, const char * Path, const char * Default = NULL, bool Create = false );
|
||||
const char * GetStr( TDataMember * BaseMember, const char * Path, int &Len, const char * Default = NULL, bool Create = false );
|
||||
const long GetInt( TDataMember * BaseMember, const char * Path, long Default = 0, bool Create = false );
|
||||
const double GetFloat( TDataMember * BaseMember, const char * Path, double Default = 0.0, bool Create = false );
|
||||
const bool GetBool( TDataMember * BaseMember, const char * Path, bool Default = false, bool Create = false );
|
||||
|
||||
const char * GetStr( const char * ParentPath, const char * Name, const char * Default = NULL );
|
||||
const char * GetStr( const char * ParentPath, const char * Name, int &Len, const char * Default = NULL );
|
||||
const long GetInt( const char * ParentPath, const char * Name, long Default = 0 );
|
||||
const double GetFloat( const char * ParentPath, const char * Name, double Default = 0.0 );
|
||||
const bool GetBool( const char * ParentPath, const char * Name, bool Default = false );
|
||||
bool SetObject( TDataMember * BaseMember, const char * Path );
|
||||
bool SetStr( TDataMember * BaseMember, const char * Path, const char * Value = NULL, const int Len = -1 ); // Use Len param if Value contains NULL values
|
||||
bool SetInt( TDataMember * BaseMember, const char * Path, const long Value );
|
||||
bool SetFloat( TDataMember * BaseMember, const char * Path, const double Value );
|
||||
bool SetBool( TDataMember * BaseMember, const char * Path, const bool Value );
|
||||
bool SetNull( TDataMember * BaseMember, const char * Path );
|
||||
|
||||
bool Delete( const char * ParentPath, const char * Name );
|
||||
bool Delete( TDataMember * BaseMember, const char * Path );
|
||||
bool DeleteAll();
|
||||
|
||||
friend class CJSONparse;
|
||||
};
|
||||
|
||||
#endif /* REDACORE_DATATREECORE_H_ */
|
||||
|
||||
Reference in New Issue
Block a user