Eric Blake <ebl...@redhat.com> writes: > Now that we have a polymorphic visit_free(), we no longer need > string_input_visitor_cleanup(); which in turn means we no longer > need to return a subtype from string_input_visitor_new() nor a > public upcast function. > > Signed-off-by: Eric Blake <ebl...@redhat.com> [...] > diff --git a/qom/object.c b/qom/object.c > index 1562f7e..00dd68c 100644 > --- a/qom/object.c > +++ b/qom/object.c > @@ -1216,7 +1216,7 @@ int object_property_get_enum(Object *obj, const char > *name, > { > Error *err = NULL; > StringOutputVisitor *sov; > - StringInputVisitor *siv; > + Visitor *v; > char *str; > int ret; > ObjectProperty *prop = object_property_find(obj, name, errp); > @@ -1243,13 +1243,12 @@ int object_property_get_enum(Object *obj, const char > *name, > return 0; > } > str = string_output_get_string(sov); > - siv = string_input_visitor_new(str); > string_output_visitor_cleanup(sov); > - visit_type_enum(string_input_get_visitor(siv), name, &ret, > - enumprop->strings, errp); > + v = string_input_visitor_new(str); > + visit_type_enum(v, name, &ret, enumprop->strings, errp); > > g_free(str); > - string_input_visitor_cleanup(siv); > + visit_free(v); > > return ret; > } > @@ -1259,7 +1258,7 @@ void object_property_get_uint16List(Object *obj, const > char *name, > { > Error *err = NULL; > StringOutputVisitor *ov; > - StringInputVisitor *iv; > + Visitor *v; > char *str; > > ov = string_output_visitor_new(false); > @@ -1270,11 +1269,11 @@ void object_property_get_uint16List(Object *obj, > const char *name, > goto out; > } > str = string_output_get_string(ov); > - iv = string_input_visitor_new(str); > - visit_type_uint16List(string_input_get_visitor(iv), NULL, list, errp); > + v = string_input_visitor_new(str); > + visit_type_uint16List(v, NULL, list, errp); > > g_free(str); > - string_input_visitor_cleanup(iv); > + visit_free(v); > out: > string_output_visitor_cleanup(ov); > } > @@ -1282,11 +1281,9 @@ out: > void object_property_parse(Object *obj, const char *string, > const char *name, Error **errp) > { > - StringInputVisitor *siv; > - siv = string_input_visitor_new(string); > - object_property_set(obj, string_input_get_visitor(siv), name, errp); > - > - string_input_visitor_cleanup(siv); > + Visitor *v = string_input_visitor_new(string);
Blank line between declaration and statements, please. > + object_property_set(obj, v, name, errp); > + visit_free(v); > } > > char *object_property_print(Object *obj, const char *name, bool human, [...]