xref: /openbmc/qemu/qobject/json-parser-int.h (revision f69d20fa8badbd6b515cc3d9e0a95b36f0410a46)
186cdf9ecSMarkus Armbruster /*
286cdf9ecSMarkus Armbruster  * JSON Parser
386cdf9ecSMarkus Armbruster  *
486cdf9ecSMarkus Armbruster  * Copyright IBM, Corp. 2009
586cdf9ecSMarkus Armbruster  *
686cdf9ecSMarkus Armbruster  * Authors:
786cdf9ecSMarkus Armbruster  *  Anthony Liguori   <aliguori@us.ibm.com>
886cdf9ecSMarkus Armbruster  *
986cdf9ecSMarkus Armbruster  * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
1086cdf9ecSMarkus Armbruster  * See the COPYING.LIB file in the top-level directory.
1186cdf9ecSMarkus Armbruster  *
1286cdf9ecSMarkus Armbruster  */
1386cdf9ecSMarkus Armbruster 
1486cdf9ecSMarkus Armbruster #ifndef JSON_PARSER_INT_H
1586cdf9ecSMarkus Armbruster #define JSON_PARSER_INT_H
1686cdf9ecSMarkus Armbruster 
1786cdf9ecSMarkus Armbruster #include "qapi/qmp/json-parser.h"
1886cdf9ecSMarkus Armbruster 
1986cdf9ecSMarkus Armbruster typedef enum json_token_type {
20*2ce4ee64SMarkus Armbruster     JSON_ERROR = 0,             /* must be zero, see json_lexer[] */
21*2ce4ee64SMarkus Armbruster     /* Gap for lexer states */
22*2ce4ee64SMarkus Armbruster     JSON_LCURLY = 100,
23*2ce4ee64SMarkus Armbruster     JSON_MIN = JSON_LCURLY,
2486cdf9ecSMarkus Armbruster     JSON_RCURLY,
2586cdf9ecSMarkus Armbruster     JSON_LSQUARE,
2686cdf9ecSMarkus Armbruster     JSON_RSQUARE,
2786cdf9ecSMarkus Armbruster     JSON_COLON,
2886cdf9ecSMarkus Armbruster     JSON_COMMA,
2986cdf9ecSMarkus Armbruster     JSON_INTEGER,
3086cdf9ecSMarkus Armbruster     JSON_FLOAT,
3186cdf9ecSMarkus Armbruster     JSON_KEYWORD,
3286cdf9ecSMarkus Armbruster     JSON_STRING,
3386cdf9ecSMarkus Armbruster     JSON_INTERP,
3486cdf9ecSMarkus Armbruster     JSON_END_OF_INPUT,
35c0ee3afaSMarkus Armbruster     JSON_MAX = JSON_END_OF_INPUT
3686cdf9ecSMarkus Armbruster } JSONTokenType;
3786cdf9ecSMarkus Armbruster 
3886cdf9ecSMarkus Armbruster typedef struct JSONToken JSONToken;
3986cdf9ecSMarkus Armbruster 
4086cdf9ecSMarkus Armbruster /* json-lexer.c */
4186cdf9ecSMarkus Armbruster void json_lexer_init(JSONLexer *lexer, bool enable_interpolation);
4286cdf9ecSMarkus Armbruster void json_lexer_feed(JSONLexer *lexer, const char *buffer, size_t size);
4386cdf9ecSMarkus Armbruster void json_lexer_flush(JSONLexer *lexer);
4486cdf9ecSMarkus Armbruster void json_lexer_destroy(JSONLexer *lexer);
4586cdf9ecSMarkus Armbruster 
4686cdf9ecSMarkus Armbruster /* json-streamer.c */
4786cdf9ecSMarkus Armbruster void json_message_process_token(JSONLexer *lexer, GString *input,
4886cdf9ecSMarkus Armbruster                                 JSONTokenType type, int x, int y);
4986cdf9ecSMarkus Armbruster 
5086cdf9ecSMarkus Armbruster /* json-parser.c */
5186cdf9ecSMarkus Armbruster JSONToken *json_token(JSONTokenType type, int x, int y, GString *tokstr);
5286cdf9ecSMarkus Armbruster QObject *json_parser_parse(GQueue *tokens, va_list *ap, Error **errp);
5386cdf9ecSMarkus Armbruster 
5486cdf9ecSMarkus Armbruster #endif
55