Statistics
| Branch: | Revision:

root / json-lexer.h @ 65850a02

History | View | Annotate | Download (977 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
} JSONTokenType;
29

    
30
typedef struct JSONLexer JSONLexer;
31

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

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

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

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

    
46
int json_lexer_flush(JSONLexer *lexer);
47

    
48
void json_lexer_destroy(JSONLexer *lexer);
49

    
50
#endif