|
@@ -1,5 +1,5 @@
|
|
/*
|
|
/*
|
|
- * JSON lexer
|
|
|
|
|
|
+ * JSON Parser
|
|
*
|
|
*
|
|
* Copyright IBM, Corp. 2009
|
|
* Copyright IBM, Corp. 2009
|
|
*
|
|
*
|
|
@@ -11,8 +11,10 @@
|
|
*
|
|
*
|
|
*/
|
|
*/
|
|
|
|
|
|
-#ifndef QEMU_JSON_LEXER_H
|
|
|
|
-#define QEMU_JSON_LEXER_H
|
|
|
|
|
|
+#ifndef JSON_PARSER_INT_H
|
|
|
|
+#define JSON_PARSER_INT_H
|
|
|
|
+
|
|
|
|
+#include "qapi/qmp/json-parser.h"
|
|
|
|
|
|
|
|
|
|
typedef enum json_token_type {
|
|
typedef enum json_token_type {
|
|
@@ -33,18 +35,20 @@ typedef enum json_token_type {
|
|
JSON_END_OF_INPUT,
|
|
JSON_END_OF_INPUT,
|
|
} JSONTokenType;
|
|
} JSONTokenType;
|
|
|
|
|
|
-typedef struct JSONLexer {
|
|
|
|
- int start_state, state;
|
|
|
|
- GString *token;
|
|
|
|
- int x, y;
|
|
|
|
-} JSONLexer;
|
|
|
|
|
|
+typedef struct JSONToken JSONToken;
|
|
|
|
|
|
|
|
+/* json-lexer.c */
|
|
void json_lexer_init(JSONLexer *lexer, bool enable_interpolation);
|
|
void json_lexer_init(JSONLexer *lexer, bool enable_interpolation);
|
|
-
|
|
|
|
void json_lexer_feed(JSONLexer *lexer, const char *buffer, size_t size);
|
|
void json_lexer_feed(JSONLexer *lexer, const char *buffer, size_t size);
|
|
-
|
|
|
|
void json_lexer_flush(JSONLexer *lexer);
|
|
void json_lexer_flush(JSONLexer *lexer);
|
|
-
|
|
|
|
void json_lexer_destroy(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
|
|
#endif
|