jsonsax.hpp
changeset 0 d187e7fc9970
--- /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