jsonsax.hpp
author Fabien Ninoles <fabien@tzone.org>
Sat, 06 Oct 2012 21:08:55 -0400
changeset 0 d187e7fc9970
permissions -rw-r--r--
First version, c++.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     1
#ifndef _JSONSAX_HPP_
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     2
#define _JSONSAX_HPP_
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     3
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     4
class IJSLXBackend
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     5
{
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     6
public:
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     7
    virtual bool Eof() = 0;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     8
    virtual char GetChar() = 0;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
     9
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    10
    virtual bool OnStartObject()
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    11
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    12
        return true;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    13
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    14
    virtual bool OnStopObject()
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    15
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    16
        return true;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    17
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    18
    virtual bool OnStartArray()
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    19
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    20
        return true;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    21
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    22
    virtual bool OnStopArray()
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    23
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    24
        return true;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    25
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    26
    virtual bool OnStartNumber()
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    27
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    28
        return true;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    29
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    30
    virtual bool OnStopNumber()
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    31
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    32
        return true;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    33
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    34
    virtual bool OnStartString()
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    35
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    36
        return true;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    37
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    38
    virtual bool OnStopString()
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    39
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    40
        return true;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    41
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    42
    virtual bool OnNull()
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    43
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    44
        return true;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    45
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    46
    virtual bool OnTrue()
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    47
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    48
        return true;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    49
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    50
    virtual bool OnFalse()
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    51
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    52
        return true;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    53
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    54
    virtual void OnError(const char* err)
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    55
    {
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    56
        (void)err;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    57
    }
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    58
};
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    59
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    60
class JSLXParser
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    61
{
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    62
public:
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    63
    JSLXParser(IJSLXBackend* pBackend);
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    64
    bool Parse();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    65
protected:
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    66
    bool _GetNextChar();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    67
    bool TrimWhiteSpace();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    68
    bool GetNextChar(bool trim = true);
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    69
    bool ParseValue();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    70
    bool ParseObject();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    71
    bool ParsePair();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    72
    bool ParseArray();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    73
    bool ParseString();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    74
    bool ParseNumber();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    75
    bool ParseNull();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    76
    bool ParseTrue();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    77
    bool ParseFalse();
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    78
    bool ParseConstant(const char* constant);
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    79
private:
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    80
    IJSLXBackend* m_pBackend;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    81
    char          m_lastChar;
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    82
};
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    83
d187e7fc9970 First version, c++.
Fabien Ninoles <fabien@tzone.org>
parents:
diff changeset
    84
#endif