| /* | 
 |  * JSON Parser | 
 |  * | 
 |  * 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 JSON_PARSER_INT_H | 
 | #define JSON_PARSER_INT_H | 
 |  | 
 | #include "qapi/qmp/json-parser.h" | 
 |  | 
 | typedef enum json_token_type { | 
 |     JSON_ERROR = 0,             /* must be zero, see json_lexer[] */ | 
 |     /* Gap for lexer states */ | 
 |     JSON_LCURLY = 100, | 
 |     JSON_MIN = JSON_LCURLY, | 
 |     JSON_RCURLY, | 
 |     JSON_LSQUARE, | 
 |     JSON_RSQUARE, | 
 |     JSON_COLON, | 
 |     JSON_COMMA, | 
 |     JSON_INTEGER, | 
 |     JSON_FLOAT, | 
 |     JSON_KEYWORD, | 
 |     JSON_STRING, | 
 |     JSON_INTERP, | 
 |     JSON_END_OF_INPUT, | 
 |     JSON_MAX = JSON_END_OF_INPUT | 
 | } JSONTokenType; | 
 |  | 
 | typedef struct JSONToken JSONToken; | 
 |  | 
 | /* json-lexer.c */ | 
 | void json_lexer_init(JSONLexer *lexer, bool enable_interpolation); | 
 | void json_lexer_feed(JSONLexer *lexer, const char *buffer, size_t size); | 
 | void json_lexer_flush(JSONLexer *lexer); | 
 | void json_lexer_destroy(JSONLexer *lexer); | 
 |  | 
 | /* json-streamer.c */ | 
 | void json_message_process_token(JSONLexer *lexer, GString *input, | 
 |                                 JSONTokenType type, int x, int y); | 
 |  | 
 | /* json-parser.c */ | 
 | JSONToken *json_token(JSONTokenType type, int x, int y, GString *tokstr); | 
 | QObject *json_parser_parse(GQueue *tokens, va_list *ap, Error **errp); | 
 |  | 
 | #endif |