[libvirt] [PATCH 7/9] virobject: Introduce VIR_CLASS_NEW() macro
Erik Skultety
eskultet at redhat.com
Mon Apr 16 09:52:56 UTC 2018
On Fri, Apr 13, 2018 at 04:47:14PM +0200, Michal Privoznik wrote:
> So far we are repeating the following lines over and over:
>
> virClassNew(virClassForObject(),
> "virSomeObject",
> sizeof(virSomeObject),
> virSomeObjectDispose);
>
> While this works, it is impossible to do some checking. Firstly,
> the class name (the 2nd argument) doesn't match the name in the
> code in all cases (the 3rd argument). Secondly, the current style
> is needlessly verbose. This commit turns example into following:
>
> VIR_CLASS_NEW(virClassForObject(),
> virSomeObject);
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> src/access/viraccessmanager.c | 6 +-
> src/bhyve/bhyve_conf.c | 6 +-
> src/conf/capabilities.c | 6 +-
> src/conf/domain_capabilities.c | 12 +--
> src/conf/domain_conf.c | 18 ++---
> src/conf/domain_event.c | 126 +++++++++++---------------------
> src/conf/network_event.c | 12 +--
> src/conf/node_device_event.c | 18 ++---
> src/conf/object_event.c | 12 +--
> src/conf/secret_event.c | 18 ++---
> src/conf/storage_event.c | 18 ++---
> src/conf/virdomainobjlist.c | 6 +-
> src/conf/virinterfaceobj.c | 12 +--
> src/conf/virnetworkobj.c | 12 +--
> src/conf/virnodedeviceobj.c | 12 +--
> src/conf/virsecretobj.c | 12 +--
> src/conf/virstorageobj.c | 24 ++----
> src/datatypes.c | 6 +-
> src/interface/interface_backend_netcf.c | 6 +-
> src/libvirt-admin.c | 6 +-
> src/libxl/libxl_conf.c | 6 +-
> src/libxl/libxl_domain.c | 6 +-
> src/libxl/libxl_migration.c | 6 +-
> src/logging/log_handler.c | 6 +-
> src/lxc/lxc_conf.c | 6 +-
> src/lxc/lxc_monitor.c | 6 +-
> src/node_device/node_device_udev.c | 6 +-
> src/qemu/qemu_agent.c | 6 +-
> src/qemu/qemu_capabilities.c | 6 +-
> src/qemu/qemu_conf.c | 6 +-
> src/qemu/qemu_domain.c | 36 +++------
> src/qemu/qemu_monitor.c | 6 +-
> src/rpc/virkeepalive.c | 6 +-
> src/rpc/virnetclient.c | 6 +-
> src/rpc/virnetclientprogram.c | 6 +-
> src/rpc/virnetclientstream.c | 6 +-
> src/rpc/virnetdaemon.c | 6 +-
> src/rpc/virnetlibsshsession.c | 6 +-
> src/rpc/virnetsaslcontext.c | 12 +--
> src/rpc/virnetserver.c | 6 +-
> src/rpc/virnetserverclient.c | 6 +-
> src/rpc/virnetserverprogram.c | 6 +-
> src/rpc/virnetserverservice.c | 6 +-
> src/rpc/virnetsocket.c | 6 +-
> src/rpc/virnetsshsession.c | 6 +-
> src/rpc/virnettlscontext.c | 12 +--
> src/security/security_manager.c | 6 +-
> src/util/virclosecallbacks.c | 6 +-
> src/util/virdnsmasq.c | 7 +-
> src/util/virfdstream.c | 6 +-
> src/util/virfilecache.c | 6 +-
> src/util/virhash.c | 6 +-
> src/util/virhostdev.c | 6 +-
> src/util/viridentity.c | 6 +-
> src/util/virmacmap.c | 6 +-
> src/util/virmdev.c | 6 +-
> src/util/virobject.c | 12 +--
> src/util/virobject.h | 4 +
> src/util/virpci.c | 6 +-
> src/util/virportallocator.c | 6 +-
> src/util/virresctrl.c | 12 +--
> src/util/virscsi.c | 6 +-
> src/util/virscsivhost.c | 6 +-
> src/util/virusb.c | 6 +-
> src/vbox/vbox_common.c | 6 +-
> src/vz/vz_driver.c | 6 +-
> tests/virfilecachetest.c | 6 +-
...
> diff --git a/src/datatypes.c b/src/datatypes.c
> index 0c3c66a9ce..3016e45076 100644
> --- a/src/datatypes.c
> +++ b/src/datatypes.c
> @@ -74,10 +74,8 @@ static int
> virDataTypesOnceInit(void)
> {
> #define DECLARE_CLASS_COMMON(basename, parent) \
> - if (!(basename ## Class = virClassNew(parent, \
> - #basename, \
> - sizeof(basename), \
> - basename ## Dispose))) \
> + if (!(basename ## Class = VIR_CLASS_NEW(parent, \
> + basename))) \
> return -1;
I'd probably go one step further and move the DECLARE_CLASS macros in a widely
accessible header and use that instead of repeating the following:
if (!(virSomethingClass = VIR_CLASS_NEW(virObject(Lockable)?, virSomething))
return -1;
Erik
More information about the libvir-list
mailing list