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