From bc2f4fcb1dd1a66ede126593fa091c23a94e3ab8 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Fri, 12 Mar 2021 12:35:46 -0500 Subject: qom: move user_creatable_add_opts logic to vl.c and QAPIfy it Emulators are currently using OptsVisitor (via user_creatable_add_opts) to parse the -object command line option. This has one extra feature, compared to keyval, which is automatic conversion of integers to lists as well as support for lists as repeated options: -object memory-backend-ram,id=pc.ram,size=1048576000,host-nodes=0,policy=bind So we cannot replace OptsVisitor with keyval right now. Still, this patch moves the user_creatable_add_opts logic to vl.c since it is not needed anywhere else, and makes it go through user_creatable_add_qapi. In order to minimize code changes, the predicate still takes a string. This can be changed later to use the ObjectType QAPI enum directly. Reviewed-by: Eric Blake Signed-off-by: Paolo Bonzini Message-Id: <20210312173547.1283477-3-pbonzini@redhat.com> Reviewed-by: Markus Armbruster Signed-off-by: Kevin Wolf --- include/qom/object_interfaces.h | 47 ----------------------------------------- 1 file changed, 47 deletions(-) (limited to 'include') diff --git a/include/qom/object_interfaces.h b/include/qom/object_interfaces.h index fb32330..81541e2 100644 --- a/include/qom/object_interfaces.h +++ b/include/qom/object_interfaces.h @@ -94,57 +94,10 @@ Object *user_creatable_add_type(const char *type, const char *id, * * Create an instance of the user creatable object according to the * options passed in @opts as described in the QAPI schema documentation. - * - * Returns: the newly created object or NULL on error */ void user_creatable_add_qapi(ObjectOptions *options, Error **errp); /** - * user_creatable_add_opts: - * @opts: the object definition - * @errp: if an error occurs, a pointer to an area to store the error - * - * Create an instance of the user creatable object whose type - * is defined in @opts by the 'qom-type' option, placing it - * in the object composition tree with name provided by the - * 'id' field. The remaining options in @opts are used to - * initialize the object properties. - * - * Returns: the newly created object or NULL on error - */ -Object *user_creatable_add_opts(QemuOpts *opts, Error **errp); - - -/** - * user_creatable_add_opts_predicate: - * @type: the QOM type to be added - * - * A callback function to determine whether an object - * of type @type should be created. Instances of this - * callback should be passed to user_creatable_add_opts_foreach - */ -typedef bool (*user_creatable_add_opts_predicate)(const char *type); - -/** - * user_creatable_add_opts_foreach: - * @opaque: a user_creatable_add_opts_predicate callback or NULL - * @opts: options to create - * @errp: unused - * - * An iterator callback to be used in conjunction with - * the qemu_opts_foreach() method for creating a list of - * objects from a set of QemuOpts - * - * The @opaque parameter can be passed a user_creatable_add_opts_predicate - * callback to filter which types of object are created during iteration. - * When it fails, report the error. - * - * Returns: 0 on success, -1 when an error was reported. - */ -int user_creatable_add_opts_foreach(void *opaque, - QemuOpts *opts, Error **errp); - -/** * user_creatable_parse_str: * @optarg: the object definition string as passed on the command line * @errp: if an error occurs, a pointer to an area to store the error -- cgit v1.1