|
|
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,
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.