]> git.proxmox.com Git - mirror_qemu.git/commit - qom/object.c
qom: Add object_new_with_props() / object_new_withpropv() helpers
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 13 May 2015 16:14:06 +0000 (17:14 +0100)
committerAndreas Färber <afaerber@suse.de>
Fri, 19 Jun 2015 16:42:18 +0000 (18:42 +0200)
commita31bdae5a76ecc060c1eb8a66be1896072c1e8b2
treef09410fa5d0fbdb196e461be8662c57ec4e9ff6f
parentbc2256c4ae86308a1521c89456b599d441119418
qom: Add object_new_with_props() / object_new_withpropv() helpers

It is reasonably common to want to create an object, set a
number of properties, register it in the hierarchy and then
mark it as complete (if a user creatable type). This requires
quite a lot of error prone, verbose, boilerplate code to achieve.

First a pair of functions object_set_props() / object_set_propv()
are added which allow for a list of objects to be set in
one single API call.

Then object_new_with_props() / object_new_with_propv() constructors
are added which simplify the sequence of calls to create an
object, populate properties, register in the object composition
tree and mark the object complete, into a single method call.

Usage would be:

   Error *err = NULL;
   Object *obj;
   obj = object_new_with_propv(TYPE_MEMORY_BACKEND_FILE,
                               object_get_objects_root(),
                               "hostmem0",
                               &err,
                               "share", "yes",
                               "mem-path", "/dev/shm/somefile",
                               "prealloc", "yes",
                               "size", "1048576",
                               NULL);

Note all property values are passed in string form and will
be parsed into their required data types, using normal QOM
semantics for parsing from string format.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
include/qemu/compiler.h
include/qom/object.h
qom/object.c
tests/.gitignore
tests/Makefile
tests/check-qom-proplist.c [new file with mode: 0644]