123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- /*
- * 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
|