mbox series

[RFC,0/2] util: Add VIR_ENUM_IMPL_LABEL

Message ID cover.1532625483.git.crobinso@redhat.com
Headers show
Series util: Add VIR_ENUM_IMPL_LABEL | expand

Message

Cole Robinson July 26, 2018, 5:49 p.m. UTC
This series adds VIR_ENUM_IMPL_LABEL and a demo conversion.

VIR_ENUM_IMPL_LABEL allows passing in a string that briefly
describes the value the enum represents, which we use to
generate error messages for FromString and ToString
function failures.

This will allow us to drop a lot of code and unique strings
that need translating.

Patch 2 is an example usage, converting virDomainVirtType
enum. It's not a full conversion for this particular enum,
just a demo. The enum creation now looks like

  VIR_ENUM_IMPL_LABEL(virDomainVirt,
                      "domain type",
                      VIR_DOMAIN_VIRT_LAST, ...

FromString failure reports this error for value 'zzzz'

  invalid argument: Unknown 'domain type' value 'zzzz'

ToString failure reports this error for unknown type=83

  internal error: Unknown 'domain type' internal value '83'


Seems like a win to me but I'm interested in other opinions.
This could also be a good BiteSizedTask for converting existing
enums

Cole Robinson (2):
  util: Add VIR_ENUM_IMPL_LABEL
  conf: Convert virDomainVirtType to VIR_ENUM_IMPL_LABEL

 src/conf/domain_conf.c | 10 ++--------
 src/util/virutil.c     | 20 ++++++++++++++++----
 src/util/virutil.h     | 15 ++++++++++-----
 3 files changed, 28 insertions(+), 17 deletions(-)

-- 
2.17.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Comments

Michal Prívozník July 27, 2018, 9:17 a.m. UTC | #1
On 07/26/2018 07:49 PM, Cole Robinson wrote:
> This series adds VIR_ENUM_IMPL_LABEL and a demo conversion.

> 

> VIR_ENUM_IMPL_LABEL allows passing in a string that briefly

> describes the value the enum represents, which we use to

> generate error messages for FromString and ToString

> function failures.

> 

> This will allow us to drop a lot of code and unique strings

> that need translating.

> 

> Patch 2 is an example usage, converting virDomainVirtType

> enum. It's not a full conversion for this particular enum,

> just a demo. The enum creation now looks like

> 

>   VIR_ENUM_IMPL_LABEL(virDomainVirt,

>                       "domain type",

>                       VIR_DOMAIN_VIRT_LAST, ...

> 

> FromString failure reports this error for value 'zzzz'

> 

>   invalid argument: Unknown 'domain type' value 'zzzz'

> 

> ToString failure reports this error for unknown type=83

> 

>   internal error: Unknown 'domain type' internal value '83'

> 

> 

> Seems like a win to me but I'm interested in other opinions.

> This could also be a good BiteSizedTask for converting existing

> enums

> 


Agreed.

> Cole Robinson (2):

>   util: Add VIR_ENUM_IMPL_LABEL

>   conf: Convert virDomainVirtType to VIR_ENUM_IMPL_LABEL

> 

>  src/conf/domain_conf.c | 10 ++--------

>  src/util/virutil.c     | 20 ++++++++++++++++----

>  src/util/virutil.h     | 15 ++++++++++-----

>  3 files changed, 28 insertions(+), 17 deletions(-)

> 


I like this. You can count on my ACK. But we should probably let others
chime in and express their preference.

Michal

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Daniel P. Berrangé July 27, 2018, 9:24 a.m. UTC | #2
On Fri, Jul 27, 2018 at 11:17:13AM +0200, Michal Privoznik wrote:
> On 07/26/2018 07:49 PM, Cole Robinson wrote:

> > This series adds VIR_ENUM_IMPL_LABEL and a demo conversion.

> > 

> > VIR_ENUM_IMPL_LABEL allows passing in a string that briefly

> > describes the value the enum represents, which we use to

> > generate error messages for FromString and ToString

> > function failures.

> > 

> > This will allow us to drop a lot of code and unique strings

> > that need translating.

> > 

> > Patch 2 is an example usage, converting virDomainVirtType

> > enum. It's not a full conversion for this particular enum,

> > just a demo. The enum creation now looks like

> > 

> >   VIR_ENUM_IMPL_LABEL(virDomainVirt,

> >                       "domain type",

> >                       VIR_DOMAIN_VIRT_LAST, ...

> > 

> > FromString failure reports this error for value 'zzzz'

> > 

> >   invalid argument: Unknown 'domain type' value 'zzzz'

> > 

> > ToString failure reports this error for unknown type=83

> > 

> >   internal error: Unknown 'domain type' internal value '83'

> > 

> > 

> > Seems like a win to me but I'm interested in other opinions.

> > This could also be a good BiteSizedTask for converting existing

> > enums

> > 

> 

> Agreed.

> 

> > Cole Robinson (2):

> >   util: Add VIR_ENUM_IMPL_LABEL

> >   conf: Convert virDomainVirtType to VIR_ENUM_IMPL_LABEL

> > 

> >  src/conf/domain_conf.c | 10 ++--------

> >  src/util/virutil.c     | 20 ++++++++++++++++----

> >  src/util/virutil.h     | 15 ++++++++++-----

> >  3 files changed, 28 insertions(+), 17 deletions(-)

> > 

> 

> I like this. You can count on my ACK. But we should probably let others

> chime in and express their preference.


I think its good. My only comment is whether we could come up with a way
to gradually convert each file, while still finishing up with VIR_ENUM_IMPL
as the macro name. A mass rename at the end is one option, but perhaps
theres a more clever approach ?


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 :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list