[libvirt PATCH v3 16/51] virxml: Add virXMLPropTristateSwitch

Daniel P. Berrangé berrange at redhat.com
Mon Mar 22 12:31:49 UTC 2021


On Mon, Mar 22, 2021 at 01:23:28PM +0100, Michal Privoznik wrote:
> On 3/19/21 4:57 PM, Tim Wiederhake wrote:
> > Convenience function to return value of an on / off attribute.
> > 
> > Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
> > ---
> >   src/libvirt_private.syms |  1 +
> >   src/util/virxml.c        | 41 ++++++++++++++++++++++++++++++++++++++++
> >   src/util/virxml.h        |  6 +++++-
> >   3 files changed, 47 insertions(+), 1 deletion(-)
> > 
> 
> > diff --git a/src/util/virxml.h b/src/util/virxml.h
> > index 3041c37df3..e844cb0713 100644
> > --- a/src/util/virxml.h
> > +++ b/src/util/virxml.h
> > @@ -80,8 +80,12 @@ char *     virXMLPropStringLimit(xmlNodePtr node,
> >   char *   virXMLNodeContentString(xmlNodePtr node);
> >   int       virXMLPropTristateBool(xmlNodePtr node,
> >                                    const char *name,
> > -                                 bool mandatory,
> > +                                 bool required,
> >                                    virTristateBool *result);
> 
> I guess this doesn't belong here. I'll squash it into the previous patch.

I wonder if we should avoid the boolean arg entirely though.
Looking at a call

  if (virXMLPropTristateBool(node, "foo", true, &result) < 0)

you have no idea whether "true" means mandatory or optional unless
you're very familiar with the code. In GTK/GNOME they generally
discourage use of bool parameters in favour of enums for this reason.
eg they would have a VIR_XML_TRISTATE_REQUIRED enum flag.

This is quite verbose though, so perhaps we can just use trivial
wrapper methods:

   virXMLPropTristateRequiredBool
   virXMLPropTristateOptionalBool

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list