Files
redAcore/DataTreeCore.h
Charl Wentzel b823bd7ea7 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
2017-03-23 20:53:32 +02:00

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_ */