jsonsax.hpp
changeset 0 d187e7fc9970
equal deleted inserted replaced
-1:000000000000 0:d187e7fc9970
       
     1 #ifndef _JSONSAX_HPP_
       
     2 #define _JSONSAX_HPP_
       
     3 
       
     4 class IJSLXBackend
       
     5 {
       
     6 public:
       
     7     virtual bool Eof() = 0;
       
     8     virtual char GetChar() = 0;
       
     9 
       
    10     virtual bool OnStartObject()
       
    11     {
       
    12         return true;
       
    13     }
       
    14     virtual bool OnStopObject()
       
    15     {
       
    16         return true;
       
    17     }
       
    18     virtual bool OnStartArray()
       
    19     {
       
    20         return true;
       
    21     }
       
    22     virtual bool OnStopArray()
       
    23     {
       
    24         return true;
       
    25     }
       
    26     virtual bool OnStartNumber()
       
    27     {
       
    28         return true;
       
    29     }
       
    30     virtual bool OnStopNumber()
       
    31     {
       
    32         return true;
       
    33     }
       
    34     virtual bool OnStartString()
       
    35     {
       
    36         return true;
       
    37     }
       
    38     virtual bool OnStopString()
       
    39     {
       
    40         return true;
       
    41     }
       
    42     virtual bool OnNull()
       
    43     {
       
    44         return true;
       
    45     }
       
    46     virtual bool OnTrue()
       
    47     {
       
    48         return true;
       
    49     }
       
    50     virtual bool OnFalse()
       
    51     {
       
    52         return true;
       
    53     }
       
    54     virtual void OnError(const char* err)
       
    55     {
       
    56         (void)err;
       
    57     }
       
    58 };
       
    59 
       
    60 class JSLXParser
       
    61 {
       
    62 public:
       
    63     JSLXParser(IJSLXBackend* pBackend);
       
    64     bool Parse();
       
    65 protected:
       
    66     bool _GetNextChar();
       
    67     bool TrimWhiteSpace();
       
    68     bool GetNextChar(bool trim = true);
       
    69     bool ParseValue();
       
    70     bool ParseObject();
       
    71     bool ParsePair();
       
    72     bool ParseArray();
       
    73     bool ParseString();
       
    74     bool ParseNumber();
       
    75     bool ParseNull();
       
    76     bool ParseTrue();
       
    77     bool ParseFalse();
       
    78     bool ParseConstant(const char* constant);
       
    79 private:
       
    80     IJSLXBackend* m_pBackend;
       
    81     char          m_lastChar;
       
    82 };
       
    83 
       
    84 #endif