/* * JSONparseCore.h * * Created on: 5 Mar 2017 * Author: wentzelc */ #ifndef REDACORE_JSONPARSECORE_H_ #define REDACORE_JSONPARSECORE_H_ // Standard C/C++ Libraries #include #include // redA Libraries #include "DataTreeCore.h" #include "CharBufferCore.h" //--------------------------------------------------------------------------- class CJSONparse { private: CDataMember * DataTree = NULL; // File operation int InputHandle = -1; int OutputHandle = -1; CShiftBuffer * Buffer = NULL; // Parsing operation char * BufPos = NULL; char * Mark = NULL; int LineNo = 0; int CharNo = 0; bool RefillBuffer = false; // Printing Operation char Spacer[100] = ""; int SpacerLen = 0; // Error bool Error = false; char ErrorText[100] = ""; // Parsing functions void SkipWhiteSpace(); bool ParseString( char ** Value, int &pLen ); bool ParseObject( CDataMember * Object ); bool ParseArray( CDataMember * Array ); bool ParseString( CDataMember * Member ); bool ParsePrimitive( CDataMember * Member ); bool PrintString( char * String, int Len ); bool PrintObject( CDataMember * Object, const int Indent ); bool PrintArray( CDataMember * Object, const int Indent ); public: CJSONparse(); CJSONparse( CDataMember * pDataTree ); ~CJSONparse(); // Tree bool SetBase( CDataMember * Object ); // Buffer operation bool CreateBuffer( int pBufLen ); bool FillBuffer(); void FreeBuffer(); bool ReadFromBuffer( const char * BasePath ); // Input bool ReadFromString( const char * BasePath, const char * InString, const int Len ); bool ReadFromHandle( const char * BasePath, const int Handle, bool pRefillBuffer ); bool ReadFromFile( const char * BasePath, const char * Path, const char * FileName ); bool ReadFromFile( const char * BasePath, const char * FilePath ); // Output bool WriteToHandle( const char * BasePath, const int Handle, const int Indent = 2 ); bool WriteToScreen( const char * BasePath, const int Indent = 2 ); bool WriteToFile( const char * BasePath, const char * Path, const char * FileName, const int Indent = 2 ); bool WriteToFile( const char * BasePath, const char * FilePath, const int Indent = 2 ); const char * GetError() { return ((Error)? ErrorText : "Success"); }; }; #endif /* REDACORE_JSONPARSECORE_H_ */