| /* | 
 |  * JSON lexer | 
 |  * | 
 |  * Copyright IBM, Corp. 2009 | 
 |  * | 
 |  * Authors: | 
 |  *  Anthony Liguori   <aliguori@us.ibm.com> | 
 |  * | 
 |  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later. | 
 |  * See the COPYING.LIB file in the top-level directory. | 
 |  * | 
 |  */ | 
 |  | 
 | #ifndef QEMU_JSON_LEXER_H | 
 | #define QEMU_JSON_LEXER_H | 
 |  | 
 | #include "qstring.h" | 
 | #include "qlist.h" | 
 |  | 
 | typedef enum json_token_type { | 
 |     JSON_OPERATOR = 100, | 
 |     JSON_INTEGER, | 
 |     JSON_FLOAT, | 
 |     JSON_KEYWORD, | 
 |     JSON_STRING, | 
 |     JSON_ESCAPE, | 
 |     JSON_SKIP, | 
 |     JSON_ERROR, | 
 | } JSONTokenType; | 
 |  | 
 | typedef struct JSONLexer JSONLexer; | 
 |  | 
 | typedef void (JSONLexerEmitter)(JSONLexer *, QString *, JSONTokenType, int x, int y); | 
 |  | 
 | struct JSONLexer | 
 | { | 
 |     JSONLexerEmitter *emit; | 
 |     int state; | 
 |     QString *token; | 
 |     int x, y; | 
 | }; | 
 |  | 
 | void json_lexer_init(JSONLexer *lexer, JSONLexerEmitter func); | 
 |  | 
 | int json_lexer_feed(JSONLexer *lexer, const char *buffer, size_t size); | 
 |  | 
 | int json_lexer_flush(JSONLexer *lexer); | 
 |  | 
 | void json_lexer_destroy(JSONLexer *lexer); | 
 |  | 
 | #endif |