[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 36/36] qapi: Rip out dynamic JSON parser backend
From: |
Eric Blake |
Subject: |
[Qemu-devel] [PATCH 36/36] qapi: Rip out dynamic JSON parser backend |
Date: |
Wed, 30 Nov 2016 13:44:54 -0600 |
Now that there are no callers of dynamic JSON parsing, the
parser does not need to handle a va_list argument.
Signed-off-by: Eric Blake <address@hidden>
---
include/qapi/qmp/json-parser.h | 6 +++---
monitor.c | 2 +-
qga/main.c | 2 +-
qobject/json-parser.c | 34 +++++++++++++++++-----------------
qobject/qjson.c | 2 +-
tests/libqtest.c | 2 +-
6 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/include/qapi/qmp/json-parser.h b/include/qapi/qmp/json-parser.h
index 9987f8c..fd37f73 100644
--- a/include/qapi/qmp/json-parser.h
+++ b/include/qapi/qmp/json-parser.h
@@ -1,5 +1,5 @@
/*
- * JSON Parser
+ * JSON Parser
*
* Copyright IBM, Corp. 2009
*
@@ -17,7 +17,7 @@
#include "qemu-common.h"
#include "qapi/qmp/qlist.h"
-QObject *json_parser_parse(GQueue *tokens, va_list *ap);
-QObject *json_parser_parse_err(GQueue *tokens, va_list *ap, Error **errp);
+QObject *json_parser_parse(GQueue *tokens);
+QObject *json_parser_parse_err(GQueue *tokens, Error **errp);
#endif
diff --git a/monitor.c b/monitor.c
index f86a855..9571e07 100644
--- a/monitor.c
+++ b/monitor.c
@@ -3731,7 +3731,7 @@ static void handle_qmp_command(JSONMessageParser *parser,
GQueue *tokens)
Monitor *mon = cur_mon;
Error *err = NULL;
- req = json_parser_parse_err(tokens, NULL, &err);
+ req = json_parser_parse_err(tokens, &err);
if (err || !req || qobject_type(req) != QTYPE_QDICT) {
if (!err) {
error_setg(&err, QERR_JSON_PARSING);
diff --git a/qga/main.c b/qga/main.c
index 6caf215..7048646 100644
--- a/qga/main.c
+++ b/qga/main.c
@@ -576,7 +576,7 @@ static void process_event(JSONMessageParser *parser, GQueue
*tokens)
g_assert(s && parser);
g_debug("process_event: called");
- qdict = qobject_to_qdict(json_parser_parse_err(tokens, NULL, &err));
+ qdict = qobject_to_qdict(json_parser_parse_err(tokens, &err));
if (err || !qdict) {
QDECREF(qdict);
qdict = qdict_new();
diff --git a/qobject/json-parser.c b/qobject/json-parser.c
index fec1dae..0614a79 100644
--- a/qobject/json-parser.c
+++ b/qobject/json-parser.c
@@ -37,7 +37,7 @@ typedef struct JSONParserContext
* 4) deal with premature EOI
*/
-static QObject *parse_value(JSONParserContext *ctxt, va_list *ap);
+static QObject *parse_value(JSONParserContext *ctxt);
/**
* Error handler
@@ -268,7 +268,7 @@ static void parser_context_free(JSONParserContext *ctxt)
/**
* Parsing rules
*/
-static int parse_pair(JSONParserContext *ctxt, QDict *dict, va_list *ap)
+static int parse_pair(JSONParserContext *ctxt, QDict *dict)
{
QObject *key = NULL, *value;
JSONToken *peek, *token;
@@ -279,7 +279,7 @@ static int parse_pair(JSONParserContext *ctxt, QDict *dict,
va_list *ap)
goto out;
}
- key = parse_value(ctxt, ap);
+ key = parse_value(ctxt);
if (!key || qobject_type(key) != QTYPE_QSTRING) {
parse_error(ctxt, peek, "key is not a string in object");
goto out;
@@ -296,7 +296,7 @@ static int parse_pair(JSONParserContext *ctxt, QDict *dict,
va_list *ap)
goto out;
}
- value = parse_value(ctxt, ap);
+ value = parse_value(ctxt);
if (value == NULL) {
parse_error(ctxt, token, "Missing value in dict");
goto out;
@@ -314,7 +314,7 @@ out:
return -1;
}
-static QObject *parse_object(JSONParserContext *ctxt, va_list *ap)
+static QObject *parse_object(JSONParserContext *ctxt)
{
QDict *dict = NULL;
JSONToken *token, *peek;
@@ -331,7 +331,7 @@ static QObject *parse_object(JSONParserContext *ctxt,
va_list *ap)
}
if (peek->type != JSON_RCURLY) {
- if (parse_pair(ctxt, dict, ap) == -1) {
+ if (parse_pair(ctxt, dict) == -1) {
goto out;
}
@@ -347,7 +347,7 @@ static QObject *parse_object(JSONParserContext *ctxt,
va_list *ap)
goto out;
}
- if (parse_pair(ctxt, dict, ap) == -1) {
+ if (parse_pair(ctxt, dict) == -1) {
goto out;
}
@@ -368,7 +368,7 @@ out:
return NULL;
}
-static QObject *parse_array(JSONParserContext *ctxt, va_list *ap)
+static QObject *parse_array(JSONParserContext *ctxt)
{
QList *list = NULL;
JSONToken *token, *peek;
@@ -387,7 +387,7 @@ static QObject *parse_array(JSONParserContext *ctxt,
va_list *ap)
if (peek->type != JSON_RSQUARE) {
QObject *obj;
- obj = parse_value(ctxt, ap);
+ obj = parse_value(ctxt);
if (obj == NULL) {
parse_error(ctxt, token, "expecting value");
goto out;
@@ -407,7 +407,7 @@ static QObject *parse_array(JSONParserContext *ctxt,
va_list *ap)
goto out;
}
- obj = parse_value(ctxt, ap);
+ obj = parse_value(ctxt);
if (obj == NULL) {
parse_error(ctxt, token, "expecting value");
goto out;
@@ -492,7 +492,7 @@ static QObject *parse_literal(JSONParserContext *ctxt)
}
}
-static QObject *parse_value(JSONParserContext *ctxt, va_list *ap)
+static QObject *parse_value(JSONParserContext *ctxt)
{
JSONToken *token;
@@ -504,9 +504,9 @@ static QObject *parse_value(JSONParserContext *ctxt,
va_list *ap)
switch (token->type) {
case JSON_LCURLY:
- return parse_object(ctxt, ap);
+ return parse_object(ctxt);
case JSON_LSQUARE:
- return parse_array(ctxt, ap);
+ return parse_array(ctxt);
case JSON_INTEGER:
case JSON_FLOAT:
case JSON_STRING:
@@ -519,12 +519,12 @@ static QObject *parse_value(JSONParserContext *ctxt,
va_list *ap)
}
}
-QObject *json_parser_parse(GQueue *tokens, va_list *ap)
+QObject *json_parser_parse(GQueue *tokens)
{
- return json_parser_parse_err(tokens, ap, NULL);
+ return json_parser_parse_err(tokens, NULL);
}
-QObject *json_parser_parse_err(GQueue *tokens, va_list *ap, Error **errp)
+QObject *json_parser_parse_err(GQueue *tokens, Error **errp)
{
JSONParserContext *ctxt = parser_context_new(tokens);
QObject *result;
@@ -533,7 +533,7 @@ QObject *json_parser_parse_err(GQueue *tokens, va_list *ap,
Error **errp)
return NULL;
}
- result = parse_value(ctxt, ap);
+ result = parse_value(ctxt);
error_propagate(errp, ctxt->err);
diff --git a/qobject/qjson.c b/qobject/qjson.c
index f0ab6df..dcfdd88 100644
--- a/qobject/qjson.c
+++ b/qobject/qjson.c
@@ -28,7 +28,7 @@ typedef struct JSONParsingState
static void parse_json(JSONMessageParser *parser, GQueue *tokens)
{
JSONParsingState *s = container_of(parser, JSONParsingState, parser);
- s->result = json_parser_parse(tokens, NULL);
+ s->result = json_parser_parse(tokens);
}
QObject *qobject_from_json(const char *string)
diff --git a/tests/libqtest.c b/tests/libqtest.c
index a9559d8..6432da3 100644
--- a/tests/libqtest.c
+++ b/tests/libqtest.c
@@ -373,7 +373,7 @@ static void qmp_response(JSONMessageParser *parser, GQueue
*tokens)
QMPResponseParser *qmp = container_of(parser, QMPResponseParser, parser);
QObject *obj;
- obj = json_parser_parse(tokens, NULL);
+ obj = json_parser_parse(tokens);
if (!obj) {
fprintf(stderr, "QMP JSON response parsing failed\n");
exit(1);
--
2.7.4
- Re: [Qemu-devel] [PATCH 18/36] qtest: Avoid dynamic JSON in fdc-test, (continued)
- [Qemu-devel] [PATCH 33/36] qtest: Avoid dynamic JSON in test-x86-cpuid-compat, Eric Blake, 2016/11/30
- [Qemu-devel] [PATCH 35/36] qapi: Rip out dynamic JSON parser escape sequence support, Eric Blake, 2016/11/30
- [Qemu-devel] [PATCH 31/36] qtest: Document calling conventions, Eric Blake, 2016/11/30
- [Qemu-devel] [PATCH 15/36] blockdev: Use simpler QAPI_TO_QOBJECT(), Eric Blake, 2016/11/30
- [Qemu-devel] [PATCH 34/36] qapi: Rip out dynamic JSON parser frontend, Eric Blake, 2016/11/30
- [Qemu-devel] [PATCH 32/36] qtest: Avoid dynamic JSON in qom-test, Eric Blake, 2016/11/30
- [Qemu-devel] [PATCH 17/36] qtest: Avoid dynamic JSON in ahci-test, Eric Blake, 2016/11/30
- [Qemu-devel] [PATCH 36/36] qapi: Rip out dynamic JSON parser backend,
Eric Blake <=
- [Qemu-devel] [PATCH 02/36] qdict: Add convenience helpers for wrapped puts, Eric Blake, 2016/11/30
- [Qemu-devel] [PATCH 23/36] qtest: Avoid dynamic JSON in virtio-blk-test, Eric Blake, 2016/11/30
- [Qemu-devel] [PATCH 30/36] qtest: Avoid dynamic JSON in qmp_fd_sendv(), Eric Blake, 2016/11/30
- [Qemu-devel] [PATCH 29/36] qapi: Add qstring_append_printf(), Eric Blake, 2016/11/30
- Re: [Qemu-devel] [PATCH 00/36] Rip out dynamic JSON parsing, Eric Blake, 2016/11/30