|
|
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.