/* * DataTreeCore.h * * Created on: 5 Mar 2017 * Author: wentzelc */ #ifndef REDACORE_DATATREECORE_H_ #define REDACORE_DATATREECORE_H_ // redA Libraries #include // Standard C/C++ Libraries #include #include #include #include //--------------------------------------------------------------------------- typedef enum { jtNull = 0, jtBool = 1, jtInt = 2, jtFloat = 3, jtString = 4, jtArray = 5, jtObject = 6 } EDataType; //--------------------------------------------------------------------------- // Structure prototypes typedef struct SDataMember TDataMember; // One Config Members struct SDataMember { char * Name; EDataType Type; TDataMember * FirstChild; char * Value; int Len; TDataMember * Next; }; //--------------------------------------------------------------------------- class CDataTree { private: TDataMember * RootObject; // Manage Members TDataMember * CreateMember( const char * Name ); bool DestroyMember( 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 ); // Set Member value bool SetMember( TDataMember * Member, EDataType Type, const char * Value, const 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 ); const EDataType GetType( const char * ParentPath, const char * Name ); 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 Delete( const char * ParentPath, const char * Name ); bool DeleteAll(); }; #endif /* REDACORE_DATATREECORE_H_ */