[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 17/26] qapi: Drop unused non-strict qobject input vis
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL 17/26] qapi: Drop unused non-strict qobject input visitor |
Date: |
Tue, 28 Feb 2017 20:06:27 +0100 |
The split between tests/test-qobject-input-visitor.c and
tests/test-qobject-input-strict.c now makes less sense than ever. The
next commit will take care of that.
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-Id: <address@hidden>
---
block/nbd.c | 2 +-
block/nfs.c | 2 +-
block/ssh.c | 2 +-
docs/qapi-code-gen.txt | 2 +-
include/qapi/qobject-input-visitor.h | 5 +----
qapi/qobject-input-visitor.c | 28 ++++++++++------------------
qmp.c | 2 +-
qom/qom-qobject.c | 2 +-
scripts/qapi-commands.py | 2 +-
target/s390x/cpu_models.c | 2 +-
tests/check-qnull.c | 2 +-
tests/qmp-test.c | 2 +-
tests/test-qmp-commands.c | 2 +-
tests/test-qobject-input-strict.c | 2 +-
tests/test-qobject-input-visitor.c | 2 +-
tests/test-visitor-serialization.c | 2 +-
16 files changed, 25 insertions(+), 36 deletions(-)
diff --git a/block/nbd.c b/block/nbd.c
index a7f9108..f478f80 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -278,7 +278,7 @@ static SocketAddress *nbd_config(BDRVNBDState *s, QDict
*options, Error **errp)
goto done;
}
- iv = qobject_input_visitor_new(crumpled_addr, true);
+ iv = qobject_input_visitor_new(crumpled_addr);
visit_type_SocketAddress(iv, NULL, &saddr, &local_err);
if (local_err) {
error_propagate(errp, local_err);
diff --git a/block/nfs.c b/block/nfs.c
index 890d5d4..3f43f6e 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -474,7 +474,7 @@ static NFSServer *nfs_config(QDict *options, Error **errp)
goto out;
}
- iv = qobject_input_visitor_new(crumpled_addr, true);
+ iv = qobject_input_visitor_new(crumpled_addr);
visit_type_NFSServer(iv, NULL, &server, &local_error);
if (local_error) {
error_propagate(errp, local_error);
diff --git a/block/ssh.c b/block/ssh.c
index 835932e..278e66f 100644
--- a/block/ssh.c
+++ b/block/ssh.c
@@ -601,7 +601,7 @@ static InetSocketAddress *ssh_config(QDict *options, Error
**errp)
goto out;
}
- iv = qobject_input_visitor_new(crumpled_addr, true);
+ iv = qobject_input_visitor_new(crumpled_addr);
visit_type_InetSocketAddress(iv, NULL, &inet, &local_error);
if (local_error) {
error_propagate(errp, local_error);
diff --git a/docs/qapi-code-gen.txt b/docs/qapi-code-gen.txt
index 7eb7be1..6746c10 100644
--- a/docs/qapi-code-gen.txt
+++ b/docs/qapi-code-gen.txt
@@ -1138,7 +1138,7 @@ Example:
Visitor *v;
UserDefOneList *arg1 = NULL;
- v = qobject_input_visitor_new(QOBJECT(args), true);
+ v = qobject_input_visitor_new(QOBJECT(args));
visit_start_struct(v, NULL, NULL, 0, &err);
if (err) {
goto out;
diff --git a/include/qapi/qobject-input-visitor.h
b/include/qapi/qobject-input-visitor.h
index cde328d..21db9c4 100644
--- a/include/qapi/qobject-input-visitor.h
+++ b/include/qapi/qobject-input-visitor.h
@@ -21,10 +21,7 @@ typedef struct QObjectInputVisitor QObjectInputVisitor;
/*
* Return a new input visitor that converts a QObject to a QAPI object.
- *
- * Set @strict to reject a parse that doesn't consume all keys of a
- * dictionary; otherwise excess input is ignored.
*/
-Visitor *qobject_input_visitor_new(QObject *obj, bool strict);
+Visitor *qobject_input_visitor_new(QObject *obj);
#endif
diff --git a/qapi/qobject-input-visitor.c b/qapi/qobject-input-visitor.c
index 8015a98..eafcdf4 100644
--- a/qapi/qobject-input-visitor.c
+++ b/qapi/qobject-input-visitor.c
@@ -43,9 +43,6 @@ struct QObjectInputVisitor {
* QDict or QList). */
QSLIST_HEAD(, StackObject) stack;
- /* True to reject parse in visit_end_struct() if unvisited keys remain. */
- bool strict;
-
GString *errname; /* Accumulator for full_name() */
};
@@ -157,11 +154,12 @@ static const QListEntry
*qobject_input_push(QObjectInputVisitor *qiv,
tos->obj = obj;
tos->qapi = qapi;
- if (qiv->strict && qobject_type(obj) == QTYPE_QDICT) {
+ if (qobject_type(obj) == QTYPE_QDICT) {
h = g_hash_table_new(g_str_hash, g_str_equal);
qdict_iter(qobject_to_qdict(obj), qdict_add_key, h);
tos->h = h;
- } else if (qobject_type(obj) == QTYPE_QLIST) {
+ } else {
+ assert(qobject_type(obj) == QTYPE_QLIST);
tos->entry = qlist_first(qobject_to_qlist(obj));
tos->index = -1;
}
@@ -175,20 +173,15 @@ static void qobject_input_check_struct(Visitor *v, Error
**errp)
{
QObjectInputVisitor *qiv = to_qiv(v);
StackObject *tos = QSLIST_FIRST(&qiv->stack);
+ GHashTableIter iter;
+ const char *key;
assert(tos && !tos->entry);
- if (qiv->strict) {
- GHashTable *const top_ht = tos->h;
- if (top_ht) {
- GHashTableIter iter;
- const char *key;
- g_hash_table_iter_init(&iter, top_ht);
- if (g_hash_table_iter_next(&iter, (void **)&key, NULL)) {
- error_setg(errp, "Parameter '%s' is unexpected",
- full_name(qiv, key));
- }
- }
+ g_hash_table_iter_init(&iter, tos->h);
+ if (g_hash_table_iter_next(&iter, (void **)&key, NULL)) {
+ error_setg(errp, "Parameter '%s' is unexpected",
+ full_name(qiv, key));
}
}
@@ -465,7 +458,7 @@ static void qobject_input_free(Visitor *v)
g_free(qiv);
}
-Visitor *qobject_input_visitor_new(QObject *obj, bool strict)
+Visitor *qobject_input_visitor_new(QObject *obj)
{
QObjectInputVisitor *v;
@@ -489,7 +482,6 @@ Visitor *qobject_input_visitor_new(QObject *obj, bool
strict)
v->visitor.type_null = qobject_input_type_null;
v->visitor.optional = qobject_input_optional;
v->visitor.free = qobject_input_free;
- v->strict = strict;
v->root = obj;
qobject_incref(obj);
diff --git a/qmp.c b/qmp.c
index dfaabac..fa82b59 100644
--- a/qmp.c
+++ b/qmp.c
@@ -675,7 +675,7 @@ void qmp_object_add(const char *type, const char *id,
pdict = qdict_new();
}
- v = qobject_input_visitor_new(QOBJECT(pdict), true);
+ v = qobject_input_visitor_new(QOBJECT(pdict));
obj = user_creatable_add_type(type, id, pdict, v, errp);
visit_free(v);
if (obj) {
diff --git a/qom/qom-qobject.c b/qom/qom-qobject.c
index bbdedda..4aec20d 100644
--- a/qom/qom-qobject.c
+++ b/qom/qom-qobject.c
@@ -23,7 +23,7 @@ void object_property_set_qobject(Object *obj, QObject *value,
{
Visitor *v;
- v = qobject_input_visitor_new(value, true);
+ v = qobject_input_visitor_new(value);
object_property_set(obj, v, name, errp);
visit_free(v);
}
diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py
index a75946f..befac8f 100644
--- a/scripts/qapi-commands.py
+++ b/scripts/qapi-commands.py
@@ -130,7 +130,7 @@ def gen_marshal(name, arg_type, boxed, ret_type):
push_indent()
ret += mcgen('''
- v = qobject_input_visitor_new(QOBJECT(args), true);
+ v = qobject_input_visitor_new(QOBJECT(args));
visit_start_struct(v, NULL, NULL, 0, &err);
if (err) {
goto out;
diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
index 2a894ee..4ea3a2d 100644
--- a/target/s390x/cpu_models.c
+++ b/target/s390x/cpu_models.c
@@ -346,7 +346,7 @@ static void cpu_model_from_info(S390CPUModel *model, const
CpuModelInfo *info,
}
if (qdict) {
- visitor = qobject_input_visitor_new(info->props, true);
+ visitor = qobject_input_visitor_new(info->props);
visit_start_struct(visitor, NULL, NULL, 0, errp);
if (*errp) {
object_unref(obj);
diff --git a/tests/check-qnull.c b/tests/check-qnull.c
index b50bb8a..8dd1c96 100644
--- a/tests/check-qnull.c
+++ b/tests/check-qnull.c
@@ -47,7 +47,7 @@ static void qnull_visit_test(void)
g_assert(qnull_.refcnt == 1);
obj = qnull();
- v = qobject_input_visitor_new(obj, true);
+ v = qobject_input_visitor_new(obj);
qobject_decref(obj);
visit_type_null(v, NULL, &error_abort);
visit_free(v);
diff --git a/tests/qmp-test.c b/tests/qmp-test.c
index 405e49e..5d0260b 100644
--- a/tests/qmp-test.c
+++ b/tests/qmp-test.c
@@ -34,7 +34,7 @@ static void test_version(QObject *version)
VersionInfo *vinfo;
g_assert(version);
- v = qobject_input_visitor_new(version, true);
+ v = qobject_input_visitor_new(version);
visit_type_VersionInfo(v, "version", &vinfo, &error_abort);
qapi_free_VersionInfo(vinfo);
visit_free(v);
diff --git a/tests/test-qmp-commands.c b/tests/test-qmp-commands.c
index c4e20d1..a815056 100644
--- a/tests/test-qmp-commands.c
+++ b/tests/test-qmp-commands.c
@@ -244,7 +244,7 @@ static void test_dealloc_partial(void)
ud2_dict = qdict_new();
qdict_put_obj(ud2_dict, "string0", QOBJECT(qstring_from_str(text)));
- v = qobject_input_visitor_new(QOBJECT(ud2_dict), true);
+ v = qobject_input_visitor_new(QOBJECT(ud2_dict));
visit_type_UserDefTwo(v, NULL, &ud2, &err);
visit_free(v);
QDECREF(ud2_dict);
diff --git a/tests/test-qobject-input-strict.c
b/tests/test-qobject-input-strict.c
index 4087ea3..7d26113 100644
--- a/tests/test-qobject-input-strict.c
+++ b/tests/test-qobject-input-strict.c
@@ -53,7 +53,7 @@ static Visitor
*validate_test_init_internal(TestInputVisitorData *data,
data->obj = qobject_from_jsonv(json_string, ap);
g_assert(data->obj);
- data->qiv = qobject_input_visitor_new(data->obj, true);
+ data->qiv = qobject_input_visitor_new(data->obj);
g_assert(data->qiv);
return data->qiv;
}
diff --git a/tests/test-qobject-input-visitor.c
b/tests/test-qobject-input-visitor.c
index 125e34c..658fa2c 100644
--- a/tests/test-qobject-input-visitor.c
+++ b/tests/test-qobject-input-visitor.c
@@ -49,7 +49,7 @@ static Visitor
*visitor_input_test_init_internal(TestInputVisitorData *data,
data->obj = qobject_from_jsonv(json_string, ap);
g_assert(data->obj);
- data->qiv = qobject_input_visitor_new(data->obj, true);
+ data->qiv = qobject_input_visitor_new(data->obj);
g_assert(data->qiv);
return data->qiv;
}
diff --git a/tests/test-visitor-serialization.c
b/tests/test-visitor-serialization.c
index 66b2b1c..c7e64f0 100644
--- a/tests/test-visitor-serialization.c
+++ b/tests/test-visitor-serialization.c
@@ -1040,7 +1040,7 @@ static void qmp_deserialize(void **native_out, void
*datap,
obj = qobject_from_json(qstring_get_str(output_json));
QDECREF(output_json);
- d->qiv = qobject_input_visitor_new(obj, true);
+ d->qiv = qobject_input_visitor_new(obj);
qobject_decref(obj_orig);
qobject_decref(obj);
visit(d->qiv, native_out, errp);
--
2.7.4
- [Qemu-devel] [PULL 22/26] test-qobject-input-visitor: Cover missing nested struct member, (continued)
- [Qemu-devel] [PULL 22/26] test-qobject-input-visitor: Cover missing nested struct member, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 19/26] test-string-input-visitor: Tear down existing test automatically, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 15/26] qom: Make object_property_set_qobject()'s input visitor strict, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 20/26] test-string-input-visitor: Improve list coverage, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 26/26] qapi: Improve qobject visitor documentation, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 18/26] tests-qobject-input-strict: Merge into test-qobject-input-visitor, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 23/26] qapi: Make input visitors detect unvisited list tails, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 02/26] libqtest: Work around a "QMP wants a newline" bug, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 08/26] qmp: Improve QMP dispatch error messages, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 14/26] qapi: Make string input and opts visitor require non-null input, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 17/26] qapi: Drop unused non-strict qobject input visitor,
Markus Armbruster <=
- [Qemu-devel] [PULL 24/26] tests: Cover input visit beyond end of list, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 12/26] qapi: Improve qobject input visitor error reporting, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 16/26] test-qobject-input-visitor: Use strict visitor, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 21/26] tests: Cover partial input visit of list, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PULL 10/26] qapi: Clean up after commit 3d344c2, Markus Armbruster, 2017/02/28
- Re: [Qemu-devel] [PULL 00/26] QAPI patches for 2017-02-28, no-reply, 2017/02/28