- Split CConfigCore into two classes: - DataTreeCore.h - Tree data structure and access - JSONparseCore.h - JSON parsing functionality - Renamed TConfigParam struct to TDataMember - Renamed most of CDataTreeCore methods
84 lines
2.8 KiB
C++
84 lines
2.8 KiB
C++
/*
|
|
* DataTreeCore.h
|
|
*
|
|
* Created on: 5 Mar 2017
|
|
* Author: wentzelc
|
|
*/
|
|
|
|
#ifndef REDACORE_DATATREECORE_H_
|
|
#define REDACORE_DATATREECORE_H_
|
|
|
|
// redA Libraries
|
|
#include <BufferCore.h>
|
|
|
|
// Standard C/C++ Libraries
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <ctype.h>
|
|
#include <stdio.h>
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
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_ */
|