qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]