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);
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);
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);
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;
/*
* 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
* 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() */
};
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;
}
{
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));
}
}
g_free(qiv);
}
-Visitor *qobject_input_visitor_new(QObject *obj, bool strict)
+Visitor *qobject_input_visitor_new(QObject *obj)
{
QObjectInputVisitor *v;
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);
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) {
{
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);
}
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;
}
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);
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);
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);
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);
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;
}
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;
}
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);