qapi: Drop unused non-strict qobject input visitor
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 <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <1488544368-30622-20-git-send-email-armbru@redhat.com>
This commit is contained in:
		@@ -278,7 +278,7 @@ static SocketAddress *nbd_config(BDRVNBDState *s, QDict *options, Error **errp)
 | 
				
			|||||||
        goto done;
 | 
					        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);
 | 
					    visit_type_SocketAddress(iv, NULL, &saddr, &local_err);
 | 
				
			||||||
    if (local_err) {
 | 
					    if (local_err) {
 | 
				
			||||||
        error_propagate(errp, local_err);
 | 
					        error_propagate(errp, local_err);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -474,7 +474,7 @@ static NFSServer *nfs_config(QDict *options, Error **errp)
 | 
				
			|||||||
        goto out;
 | 
					        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);
 | 
					    visit_type_NFSServer(iv, NULL, &server, &local_error);
 | 
				
			||||||
    if (local_error) {
 | 
					    if (local_error) {
 | 
				
			||||||
        error_propagate(errp, local_error);
 | 
					        error_propagate(errp, local_error);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -601,7 +601,7 @@ static InetSocketAddress *ssh_config(QDict *options, Error **errp)
 | 
				
			|||||||
        goto out;
 | 
					        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);
 | 
					    visit_type_InetSocketAddress(iv, NULL, &inet, &local_error);
 | 
				
			||||||
    if (local_error) {
 | 
					    if (local_error) {
 | 
				
			||||||
        error_propagate(errp, local_error);
 | 
					        error_propagate(errp, local_error);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1138,7 +1138,7 @@ Example:
 | 
				
			|||||||
        Visitor *v;
 | 
					        Visitor *v;
 | 
				
			||||||
        UserDefOneList *arg1 = NULL;
 | 
					        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);
 | 
					        visit_start_struct(v, NULL, NULL, 0, &err);
 | 
				
			||||||
        if (err) {
 | 
					        if (err) {
 | 
				
			||||||
            goto out;
 | 
					            goto out;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,10 +21,7 @@ typedef struct QObjectInputVisitor QObjectInputVisitor;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Return a new input visitor that converts a QObject to a QAPI object.
 | 
					 * 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
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,9 +43,6 @@ struct QObjectInputVisitor {
 | 
				
			|||||||
     * QDict or QList). */
 | 
					     * QDict or QList). */
 | 
				
			||||||
    QSLIST_HEAD(, StackObject) stack;
 | 
					    QSLIST_HEAD(, StackObject) stack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* True to reject parse in visit_end_struct() if unvisited keys remain. */
 | 
					 | 
				
			||||||
    bool strict;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    GString *errname;           /* Accumulator for full_name() */
 | 
					    GString *errname;           /* Accumulator for full_name() */
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -157,11 +154,12 @@ static const QListEntry *qobject_input_push(QObjectInputVisitor *qiv,
 | 
				
			|||||||
    tos->obj = obj;
 | 
					    tos->obj = obj;
 | 
				
			||||||
    tos->qapi = qapi;
 | 
					    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);
 | 
					        h = g_hash_table_new(g_str_hash, g_str_equal);
 | 
				
			||||||
        qdict_iter(qobject_to_qdict(obj), qdict_add_key, h);
 | 
					        qdict_iter(qobject_to_qdict(obj), qdict_add_key, h);
 | 
				
			||||||
        tos->h = 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->entry = qlist_first(qobject_to_qlist(obj));
 | 
				
			||||||
        tos->index = -1;
 | 
					        tos->index = -1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -175,20 +173,15 @@ static void qobject_input_check_struct(Visitor *v, Error **errp)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    QObjectInputVisitor *qiv = to_qiv(v);
 | 
					    QObjectInputVisitor *qiv = to_qiv(v);
 | 
				
			||||||
    StackObject *tos = QSLIST_FIRST(&qiv->stack);
 | 
					    StackObject *tos = QSLIST_FIRST(&qiv->stack);
 | 
				
			||||||
 | 
					    GHashTableIter iter;
 | 
				
			||||||
 | 
					    const char *key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    assert(tos && !tos->entry);
 | 
					    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);
 | 
					    g_hash_table_iter_init(&iter, tos->h);
 | 
				
			||||||
            if (g_hash_table_iter_next(&iter, (void **)&key, NULL)) {
 | 
					    if (g_hash_table_iter_next(&iter, (void **)&key, NULL)) {
 | 
				
			||||||
                error_setg(errp, "Parameter '%s' is unexpected",
 | 
					        error_setg(errp, "Parameter '%s' is unexpected",
 | 
				
			||||||
                           full_name(qiv, key));
 | 
					                   full_name(qiv, key));
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -465,7 +458,7 @@ static void qobject_input_free(Visitor *v)
 | 
				
			|||||||
    g_free(qiv);
 | 
					    g_free(qiv);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Visitor *qobject_input_visitor_new(QObject *obj, bool strict)
 | 
					Visitor *qobject_input_visitor_new(QObject *obj)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    QObjectInputVisitor *v;
 | 
					    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.type_null = qobject_input_type_null;
 | 
				
			||||||
    v->visitor.optional = qobject_input_optional;
 | 
					    v->visitor.optional = qobject_input_optional;
 | 
				
			||||||
    v->visitor.free = qobject_input_free;
 | 
					    v->visitor.free = qobject_input_free;
 | 
				
			||||||
    v->strict = strict;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    v->root = obj;
 | 
					    v->root = obj;
 | 
				
			||||||
    qobject_incref(obj);
 | 
					    qobject_incref(obj);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								qmp.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								qmp.c
									
									
									
									
									
								
							@@ -675,7 +675,7 @@ void qmp_object_add(const char *type, const char *id,
 | 
				
			|||||||
        pdict = qdict_new();
 | 
					        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);
 | 
					    obj = user_creatable_add_type(type, id, pdict, v, errp);
 | 
				
			||||||
    visit_free(v);
 | 
					    visit_free(v);
 | 
				
			||||||
    if (obj) {
 | 
					    if (obj) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ void object_property_set_qobject(Object *obj, QObject *value,
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    Visitor *v;
 | 
					    Visitor *v;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    v = qobject_input_visitor_new(value, true);
 | 
					    v = qobject_input_visitor_new(value);
 | 
				
			||||||
    object_property_set(obj, v, name, errp);
 | 
					    object_property_set(obj, v, name, errp);
 | 
				
			||||||
    visit_free(v);
 | 
					    visit_free(v);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -130,7 +130,7 @@ def gen_marshal(name, arg_type, boxed, ret_type):
 | 
				
			|||||||
        push_indent()
 | 
					        push_indent()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ret += mcgen('''
 | 
					    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);
 | 
					    visit_start_struct(v, NULL, NULL, 0, &err);
 | 
				
			||||||
    if (err) {
 | 
					    if (err) {
 | 
				
			||||||
        goto out;
 | 
					        goto out;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -346,7 +346,7 @@ static void cpu_model_from_info(S390CPUModel *model, const CpuModelInfo *info,
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (qdict) {
 | 
					    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);
 | 
					        visit_start_struct(visitor, NULL, NULL, 0, errp);
 | 
				
			||||||
        if (*errp) {
 | 
					        if (*errp) {
 | 
				
			||||||
            object_unref(obj);
 | 
					            object_unref(obj);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -47,7 +47,7 @@ static void qnull_visit_test(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    g_assert(qnull_.refcnt == 1);
 | 
					    g_assert(qnull_.refcnt == 1);
 | 
				
			||||||
    obj = qnull();
 | 
					    obj = qnull();
 | 
				
			||||||
    v = qobject_input_visitor_new(obj, true);
 | 
					    v = qobject_input_visitor_new(obj);
 | 
				
			||||||
    qobject_decref(obj);
 | 
					    qobject_decref(obj);
 | 
				
			||||||
    visit_type_null(v, NULL, &error_abort);
 | 
					    visit_type_null(v, NULL, &error_abort);
 | 
				
			||||||
    visit_free(v);
 | 
					    visit_free(v);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,7 @@ static void test_version(QObject *version)
 | 
				
			|||||||
    VersionInfo *vinfo;
 | 
					    VersionInfo *vinfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    g_assert(version);
 | 
					    g_assert(version);
 | 
				
			||||||
    v = qobject_input_visitor_new(version, true);
 | 
					    v = qobject_input_visitor_new(version);
 | 
				
			||||||
    visit_type_VersionInfo(v, "version", &vinfo, &error_abort);
 | 
					    visit_type_VersionInfo(v, "version", &vinfo, &error_abort);
 | 
				
			||||||
    qapi_free_VersionInfo(vinfo);
 | 
					    qapi_free_VersionInfo(vinfo);
 | 
				
			||||||
    visit_free(v);
 | 
					    visit_free(v);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -246,7 +246,7 @@ static void test_dealloc_partial(void)
 | 
				
			|||||||
        ud2_dict = qdict_new();
 | 
					        ud2_dict = qdict_new();
 | 
				
			||||||
        qdict_put_obj(ud2_dict, "string0", QOBJECT(qstring_from_str(text)));
 | 
					        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_type_UserDefTwo(v, NULL, &ud2, &err);
 | 
				
			||||||
        visit_free(v);
 | 
					        visit_free(v);
 | 
				
			||||||
        QDECREF(ud2_dict);
 | 
					        QDECREF(ud2_dict);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,7 +53,7 @@ static Visitor *validate_test_init_internal(TestInputVisitorData *data,
 | 
				
			|||||||
    data->obj = qobject_from_jsonv(json_string, ap);
 | 
					    data->obj = qobject_from_jsonv(json_string, ap);
 | 
				
			||||||
    g_assert(data->obj);
 | 
					    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);
 | 
					    g_assert(data->qiv);
 | 
				
			||||||
    return data->qiv;
 | 
					    return data->qiv;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,7 +49,7 @@ static Visitor *visitor_input_test_init_internal(TestInputVisitorData *data,
 | 
				
			|||||||
    data->obj = qobject_from_jsonv(json_string, ap);
 | 
					    data->obj = qobject_from_jsonv(json_string, ap);
 | 
				
			||||||
    g_assert(data->obj);
 | 
					    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);
 | 
					    g_assert(data->qiv);
 | 
				
			||||||
    return data->qiv;
 | 
					    return data->qiv;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1040,7 +1040,7 @@ static void qmp_deserialize(void **native_out, void *datap,
 | 
				
			|||||||
    obj = qobject_from_json(qstring_get_str(output_json));
 | 
					    obj = qobject_from_json(qstring_get_str(output_json));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    QDECREF(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_orig);
 | 
				
			||||||
    qobject_decref(obj);
 | 
					    qobject_decref(obj);
 | 
				
			||||||
    visit(d->qiv, native_out, errp);
 | 
					    visit(d->qiv, native_out, errp);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user