|
|
1.1 root 1: /*
2: * JSON lexer
3: *
4: * Copyright IBM, Corp. 2009
5: *
6: * Authors:
7: * Anthony Liguori <[email protected]>
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,
1.1.1.2 ! root 28: JSON_ERROR,
1.1 root 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.