Important Update: (incomplete)
- 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
This commit is contained in:
83
DataTreeCore.h
Normal file
83
DataTreeCore.h
Normal file
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* 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_ */
|
||||
Reference in New Issue
Block a user