- DataTreeCore: - Rename all Get/SetChild...() methods to Get/SetMem...() - Update all other objects with new methods
116 lines
5.1 KiB
C++
116 lines
5.1 KiB
C++
/*
|
|
* DataTreeCore.h
|
|
*
|
|
* Created on: 5 Mar 2017
|
|
* Author: wentzelc
|
|
*/
|
|
|
|
#ifndef REDACORE_DATATREECORE_H_
|
|
#define REDACORE_DATATREECORE_H_
|
|
|
|
// Standard C/C++ Libraries
|
|
#include <stdlib.h>
|
|
|
|
// redA Libraries
|
|
#include "CharBufferCore.h"
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef enum { jtNull = 0, jtBool = 1, jtInt = 2, jtFloat = 3, jtString = 4, jtArray = 5, jtObject = 6 } EDataType;
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
// One Config Members
|
|
class CDataMember
|
|
{
|
|
char * Name;
|
|
unsigned short NameLen;
|
|
EDataType Type;
|
|
|
|
char * Value;
|
|
unsigned short Len;
|
|
|
|
CDataMember * FirstChild;
|
|
CDataMember * LastChild;
|
|
|
|
CDataMember * Parent;
|
|
CDataMember * PrevPeer;
|
|
CDataMember * NextPeer;
|
|
|
|
// Manage Members
|
|
CDataMember * CreateChild( const char * Name, const int Len = -1 );
|
|
|
|
// Set Member value
|
|
bool SetValue( EDataType Type, const char * Value = NULL, int Len = -1 );
|
|
|
|
public:
|
|
CDataMember( const char * pName = NULL, const int pLen = -1 );
|
|
CDataMember( CDataMember * pParent, const char * pName = NULL, const int pLen = -1 );
|
|
~CDataMember();
|
|
|
|
EDataType GetType() { return Type; };
|
|
EDataType GetType( const char * Path );
|
|
|
|
inline bool isNull() { return (Type == jtNull); };
|
|
inline bool isBool() { return (Type == jtBool); };
|
|
inline bool isInt() { return (Type == jtInt); };
|
|
inline bool isFloat() { return (Type == jtFloat); };
|
|
inline bool isString() { return (Type == jtString); };
|
|
inline bool isArray() { return (Type == jtArray); };
|
|
inline bool isObject() { return (Type == jtObject); };
|
|
|
|
const char * GetName() { return Name; };
|
|
const char * GetName( const char * Path );
|
|
|
|
const int GetLen() { return Len; };
|
|
const int GetLen( const char * Path );
|
|
|
|
CDataMember * GetMember( const char * Path, bool Create = false );
|
|
CDataMember * GetMemFirstChild( const char * Path );
|
|
CDataMember * GetMemElement( const char * Path, const int Index );
|
|
|
|
inline CDataMember * GetFirstChild() { return FirstChild; };
|
|
inline CDataMember * GetElement( const int Index ) { return GetMemElement( NULL, Index ); };
|
|
|
|
inline CDataMember * GetParent() { return Parent; };
|
|
inline CDataMember * GetPrevPeer() { return PrevPeer; };
|
|
inline CDataMember * GetNextPeer() { return NextPeer; };
|
|
|
|
const char * GetMemStr( const char * Path, const char * Default = NULL, bool Create = false );
|
|
const char * GetMemStr( const char * Path, int &Len, const char * Default = NULL, bool Create = false );
|
|
const bool GetMemBool( const char * Path, bool Default = false, bool Create = false );
|
|
const long GetMemInt( const char * Path, long Default = 0, bool Create = false, const char * Mask = NULL );
|
|
const double GetMemFloat( const char * Path, double Default = 0.0, bool Create = false, const char * Mask = NULL );
|
|
|
|
inline const char * GetStr( const char * Default = NULL, bool Create = false ) { return GetMemStr( NULL, Default, Create ); };
|
|
inline const char * GetStr( int &Len, const char * Default = NULL, bool Create = false ) { return GetMemStr( NULL, Len, Default, Create ); };
|
|
inline const bool GetBool( bool Default = false, bool Create = false ) { return GetMemBool( NULL, Default, Create ); };
|
|
inline const long GetInt( long Default = 0, bool Create = false, const char * Mask = NULL ) { return GetMemInt( NULL, Default, Create, Mask ); };
|
|
inline const double GetFloat( double Default = 0.0, bool Create = false, const char * Mask = NULL ) { return GetMemFloat( NULL, Default, Create, Mask ); };
|
|
|
|
bool SetMemBool( const char * Path, const bool Value );
|
|
bool SetMemInt( const char * Path, const long Value, const char * Mask = NULL );
|
|
bool SetMemFloat( const char * Path, const double Value, const char * Mask = NULL );
|
|
bool SetMemStr( const char * Path, const char * Value = NULL, const int Len = -1 ); // Use Len param if Value contains NULL values
|
|
|
|
inline bool SetBool( const bool Value ) { return SetMemBool( NULL, Value ); };
|
|
inline bool SetInt( const long Value, const char * Mask = NULL ) { return SetMemInt( NULL, Value, Mask ); };
|
|
inline bool SetFloat( const double Value, const char * Mask = NULL ) { return SetMemFloat( NULL, Value, Mask ); };
|
|
inline bool SetStr( const char * Value = NULL, const int Len = -1 ) { return SetMemStr( NULL, Value, Len ); };
|
|
|
|
bool SetMemNull( const char * Path );
|
|
bool SetMemObject( const char * Path );
|
|
bool SetMemArray( const char * Path );
|
|
|
|
inline bool SetNull() { return SetMemNull( NULL ); };
|
|
inline bool SetObject() { return SetMemObject( NULL ); };
|
|
inline bool SetArray() { return SetMemArray( NULL ); };
|
|
|
|
bool Clear();
|
|
bool Delete( const char * Path );
|
|
|
|
friend class CJSONparse;
|
|
};
|
|
|
|
#endif /* REDACORE_DATATREECORE_H_ */
|