Statistics
| Branch: | Revision:

root / json-lexer.h @ b011f619

History | View | Annotate | Download (993 Bytes)

1
/*
2
 * JSON lexer
3
 *
4
 * Copyright IBM, Corp. 2009
5
 *
6
 * Authors:
7
 *  Anthony Liguori   <aliguori@us.ibm.com>
8
 *
9
 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
10
 * See the COPYING.LIB file in the top-level directory.
11
 *
12
 */
13

    
14
#ifndef QEMU_JSON_LEXER_H
15
#define QEMU_JSON_LEXER_H
16

    
17
#include "qstring.h"
18
#include "qlist.h"
19

    
20
typedef enum json_token_type {
21
    JSON_OPERATOR = 100,
22
    JSON_INTEGER,
23
    JSON_FLOAT,
24
    JSON_KEYWORD,
25
    JSON_STRING,
26
    JSON_ESCAPE,
27
    JSON_SKIP,
28
    JSON_ERROR,
29
} JSONTokenType;
30

    
31
typedef struct JSONLexer JSONLexer;
32

    
33
typedef void (JSONLexerEmitter)(JSONLexer *, QString *, JSONTokenType, int x, int y);
34

    
35
struct JSONLexer
36
{
37
    JSONLexerEmitter *emit;
38
    int state;
39
    QString *token;
40
    int x, y;
41
};
42

    
43
void json_lexer_init(JSONLexer *lexer, JSONLexerEmitter func);
44

    
45
int json_lexer_feed(JSONLexer *lexer, const char *buffer, size_t size);
46

    
47
int json_lexer_flush(JSONLexer *lexer);
48

    
49
void json_lexer_destroy(JSONLexer *lexer);
50

    
51
#endif