/* * 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; // File operation int InputHandle; int OutputHandle; CShiftBuffer * Buffer; // Parsing operation char * BufPos; char * Mark; int LineNo; int CharNo; bool RefillBuffer; // Printing Operation char Spacer[100]; int SpacerLen; // Error bool Error; 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( CDataMember * pDataTree ); ~CJSONparse(); // 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_ */