diff -r 000000000000 -r d187e7fc9970 jsonsax.hpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jsonsax.hpp Sat Oct 06 21:08:55 2012 -0400 @@ -0,0 +1,84 @@ +#ifndef _JSONSAX_HPP_ +#define _JSONSAX_HPP_ + +class IJSLXBackend +{ +public: + virtual bool Eof() = 0; + virtual char GetChar() = 0; + + virtual bool OnStartObject() + { + return true; + } + virtual bool OnStopObject() + { + return true; + } + virtual bool OnStartArray() + { + return true; + } + virtual bool OnStopArray() + { + return true; + } + virtual bool OnStartNumber() + { + return true; + } + virtual bool OnStopNumber() + { + return true; + } + virtual bool OnStartString() + { + return true; + } + virtual bool OnStopString() + { + return true; + } + virtual bool OnNull() + { + return true; + } + virtual bool OnTrue() + { + return true; + } + virtual bool OnFalse() + { + return true; + } + virtual void OnError(const char* err) + { + (void)err; + } +}; + +class JSLXParser +{ +public: + JSLXParser(IJSLXBackend* pBackend); + bool Parse(); +protected: + bool _GetNextChar(); + bool TrimWhiteSpace(); + bool GetNextChar(bool trim = true); + bool ParseValue(); + bool ParseObject(); + bool ParsePair(); + bool ParseArray(); + bool ParseString(); + bool ParseNumber(); + bool ParseNull(); + bool ParseTrue(); + bool ParseFalse(); + bool ParseConstant(const char* constant); +private: + IJSLXBackend* m_pBackend; + char m_lastChar; +}; + +#endif