/* * JSONparseCore.h * * Created on: 5 Mar 2017 * Author: wentzelc */ #ifndef REDACORE_JSONPARSECORE_H_ #define REDACORE_JSONPARSECORE_H_ // redA Libraries #include #include // Standard C/C++ Libraries #include #include #include #include //--------------------------------------------------------------------------- class CJSONparse { private: CDataTree * DataTree; // File operation int InputHandle; int OutputHandle; CShiftBuffer * Buffer; // Parsing operation char * BufEnd; char * BufPos; char * LineMark; int LineNo; int Level; // Printing Operation char Spacer[100]; int SpacerLen; // Error bool Error; char ErrorText[100]; // File Buffer operation bool CreateBuffer( int pBufLen ); bool FillBuffer(); void FreeBuffer(); // Parsing functions inline void SkipWhiteSpace() { while (isspace(*BufPos)) { if (*BufPos == '\n') { LineMark = BufPos; LineNo++; } BufPos++; } } bool ParseString( char ** Value, int &pLen ); bool ParseObject( TDataMember * Object ); bool ParseArray( TDataMember * Array ); bool ParseString( TDataMember * Member ); bool ParsePrimitive( TDataMember * Member ); bool PrintObject( TDataMember * Object, const int Indent ); bool PrintArray( TDataMember * Object, const int Indent ); public: CJSONparse( CDataTree * pDataTree ); ~CJSONparse(); bool PrintToScreen( const int Indent ); bool LoadFromFile( const char * FilePath, int pBufLen = 500 ); bool SaveToFile( const char * FilePath, const int Indent = 2 ); const char * GetError() { return ((Error)? ErrorText : "Success"); }; }; #endif /* REDACORE_JSONPARSECORE_H_ */