[libvirt] [PATCH 4/5] util: Move enum convertors into virenum.(c|h)

Peter Krempa pkrempa at redhat.com
Wed Apr 3 13:06:36 UTC 2019


virutil.(c|h) is a very gross collection of random code. Remove the enum
handlers from there so we can limit the scope where virtutil.h is used.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/Makefile.am                   |  3 ++
 src/access/viraccessperm.h        |  1 +
 src/conf/capabilities.c           |  1 +
 src/conf/cpu_conf.h               |  1 +
 src/conf/device_conf.h            |  1 +
 src/conf/domain_capabilities.h    |  1 +
 src/conf/domain_conf.h            |  1 +
 src/conf/interface_conf.h         |  1 +
 src/conf/network_conf.h           |  1 +
 src/conf/node_device_conf.h       |  1 +
 src/conf/numa_conf.h              |  1 +
 src/conf/nwfilter_conf.h          |  1 +
 src/conf/storage_adapter_conf.h   |  1 +
 src/conf/storage_conf.h           |  1 +
 src/libvirt_private.syms          | 19 ++++---
 src/util/Makefile.inc.am          |  2 +
 src/util/vircgroup.h              |  1 +
 src/util/virconf.h                |  1 +
 src/util/virenum.c                | 84 +++++++++++++++++++++++++++++++
 src/util/virenum.h                | 80 +++++++++++++++++++++++++++++
 src/util/virfirewalld.c           |  1 +
 src/util/virgic.h                 |  1 +
 src/util/virjson.c                |  1 +
 src/util/virkeycode.h             |  1 +
 src/util/virmdev.h                |  1 +
 src/util/virnetdev.h              |  1 +
 src/util/virnetdevmacvlan.h       |  1 +
 src/util/virnetdevvlan.h          |  1 +
 src/util/virnetdevvportprofile.h  |  1 +
 src/util/virpci.h                 |  1 +
 src/util/virperf.h                |  1 +
 src/util/virprocess.h             |  1 +
 src/util/virresctrl.h             |  2 +-
 src/util/virsecret.h              |  1 +
 src/util/virstorageencryption.h   |  1 +
 src/util/virstoragefile.h         |  1 +
 src/util/virsysinfo.h             |  1 +
 src/util/virtypedparam.h          |  1 +
 src/util/virutil.c                | 58 ---------------------
 src/util/virutil.h                | 54 --------------------
 tools/virt-host-validate-common.h |  1 +
 41 files changed, 214 insertions(+), 121 deletions(-)
 create mode 100644 src/util/virenum.c
 create mode 100644 src/util/virenum.h

diff --git a/src/Makefile.am b/src/Makefile.am
index b3b1e172ff..ce199d1e93 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -672,6 +672,7 @@ libvirt_setuid_rpc_client_la_SOURCES = \
 		util/vircommand.c \
 		util/virconf.c \
 		util/virdbus.c \
+		util/virenum.c \
 		util/virerror.c \
 		util/virevent.c \
 		util/vireventpoll.c \
@@ -882,6 +883,8 @@ libvirt_nss_la_SOURCES = \
 		util/virbuffer.h \
 		util/vircommand.c \
 		util/vircommand.h \
+		util/virenum.c \
+		util/virenum.h \
 		util/virerror.c \
 		util/virerror.h \
 		util/virfile.c \
diff --git a/src/access/viraccessperm.h b/src/access/viraccessperm.h
index ce3865b359..ed1f7168ca 100644
--- a/src/access/viraccessperm.h
+++ b/src/access/viraccessperm.h
@@ -23,6 +23,7 @@

 # include "internal.h"
 # include "virutil.h"
+# include "virenum.h"

 typedef enum {
     /**
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
index 47308700bb..64c04d9774 100644
--- a/src/conf/capabilities.c
+++ b/src/conf/capabilities.c
@@ -41,6 +41,7 @@
 #include "virstring.h"
 #include "virtypedparam.h"
 #include "viruuid.h"
+#include "virenum.h"

 #define VIR_FROM_THIS VIR_FROM_CAPABILITIES

diff --git a/src/conf/cpu_conf.h b/src/conf/cpu_conf.h
index 6e810e5486..c98db65693 100644
--- a/src/conf/cpu_conf.h
+++ b/src/conf/cpu_conf.h
@@ -27,6 +27,7 @@
 # include "virbitmap.h"
 # include "virarch.h"
 # include "numa_conf.h"
+# include "virenum.h"

 # define VIR_CPU_VENDOR_ID_LENGTH 12

diff --git a/src/conf/device_conf.h b/src/conf/device_conf.h
index 7a3455f99f..b3299ac69d 100644
--- a/src/conf/device_conf.h
+++ b/src/conf/device_conf.h
@@ -31,6 +31,7 @@
 # include "virbuffer.h"
 # include "virpci.h"
 # include "virnetdev.h"
+# include "virenum.h"

 typedef enum {
     VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE,
diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h
index 28e7d495c5..b82c78f1f5 100644
--- a/src/conf/domain_capabilities.h
+++ b/src/conf/domain_capabilities.h
@@ -23,6 +23,7 @@

 # include "internal.h"
 # include "domain_conf.h"
+# include "virenum.h"

 typedef const char * (*virDomainCapsValToStr)(int value);

diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index ce6e5b4748..12eb71c197 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -56,6 +56,7 @@
 # include "virtypedparam.h"
 # include "virsavecookie.h"
 # include "virresctrl.h"
+# include "virenum.h"

 /* Flags for the 'type' field in virDomainDeviceDef */
 typedef enum {
diff --git a/src/conf/interface_conf.h b/src/conf/interface_conf.h
index fd3fc7cba0..e56b158b6d 100644
--- a/src/conf/interface_conf.h
+++ b/src/conf/interface_conf.h
@@ -29,6 +29,7 @@
 # include "virutil.h"
 # include "virthread.h"
 # include "device_conf.h"
+# include "virenum.h"

 /* There is currently 3 types of interfaces */

diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h
index 4fba8f025d..5410a57c67 100644
--- a/src/conf/network_conf.h
+++ b/src/conf/network_conf.h
@@ -40,6 +40,7 @@
 # include "networkcommon_conf.h"
 # include "virobject.h"
 # include "virmacmap.h"
+# include "virenum.h"

 typedef enum {
     VIR_NETWORK_FORWARD_NONE   = 0,
diff --git a/src/conf/node_device_conf.h b/src/conf/node_device_conf.h
index e8cb315e30..510624968f 100644
--- a/src/conf/node_device_conf.h
+++ b/src/conf/node_device_conf.h
@@ -31,6 +31,7 @@
 # include "virvhba.h"
 # include "device_conf.h"
 # include "storage_adapter_conf.h"
+# include "virenum.h"

 # include <libxml/tree.h>

diff --git a/src/conf/numa_conf.h b/src/conf/numa_conf.h
index 1e389397a7..ae1793a950 100644
--- a/src/conf/numa_conf.h
+++ b/src/conf/numa_conf.h
@@ -27,6 +27,7 @@
 # include "virutil.h"
 # include "virbitmap.h"
 # include "virbuffer.h"
+# include "virenum.h"


 typedef struct _virDomainNuma virDomainNuma;
diff --git a/src/conf/nwfilter_conf.h b/src/conf/nwfilter_conf.h
index de4c3b1d40..4366ccc4d1 100644
--- a/src/conf/nwfilter_conf.h
+++ b/src/conf/nwfilter_conf.h
@@ -33,6 +33,7 @@
 # include "virsocketaddr.h"
 # include "virmacaddr.h"
 # include "virdomainobjlist.h"
+# include "virenum.h"

 /* XXX
  * The config parser/structs should not be using platform specific
diff --git a/src/conf/storage_adapter_conf.h b/src/conf/storage_adapter_conf.h
index 763e4ba0e9..81d73ea889 100644
--- a/src/conf/storage_adapter_conf.h
+++ b/src/conf/storage_adapter_conf.h
@@ -22,6 +22,7 @@

 # include "virpci.h"
 # include "virxml.h"
+# include "virenum.h"


 typedef enum {
diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h
index 87db8edadb..a8b6f72688 100644
--- a/src/conf/storage_conf.h
+++ b/src/conf/storage_conf.h
@@ -30,6 +30,7 @@
 # include "device_conf.h"
 # include "object_event.h"
 # include "storage_adapter_conf.h"
+# include "virenum.h"

 # include <libxml/tree.h>

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 23cbd27ce1..40ae82cd03 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1784,6 +1784,17 @@ ebtablesContextNew;
 ebtablesRemoveForwardAllowIn;


+# util/virenum.h
+virEnumFromString;
+virEnumToString;
+virTristateBoolFromBool;
+virTristateBoolTypeFromString;
+virTristateBoolTypeToString;
+virTristateSwitchFromBool;
+virTristateSwitchTypeFromString;
+virTristateSwitchTypeToString;
+
+
 # util/virerror.h
 virDispatchError;
 virErrorCopyNew;
@@ -3186,8 +3197,6 @@ virUSBDeviceSetUsedBy;
 virDoesGroupExist;
 virDoesUserExist;
 virDoubleToStr;
-virEnumFromString;
-virEnumToString;
 virFormatIntDecimal;
 virFormatIntPretty;
 virGetDeviceID;
@@ -3235,12 +3244,6 @@ virSetNonBlock;
 virSetSockReuseAddr;
 virSetUIDGID;
 virSetUIDGIDWithCaps;
-virTristateBoolFromBool;
-virTristateBoolTypeFromString;
-virTristateBoolTypeToString;
-virTristateSwitchFromBool;
-virTristateSwitchTypeFromString;
-virTristateSwitchTypeToString;
 virUpdateSelfLastChanged;
 virValidateWWN;
 virWaitForDevices;
diff --git a/src/util/Makefile.inc.am b/src/util/Makefile.inc.am
index 6b24245aa1..58874cca3c 100644
--- a/src/util/Makefile.inc.am
+++ b/src/util/Makefile.inc.am
@@ -49,6 +49,8 @@ UTIL_SOURCES = \
 	util/virebtables.c \
 	util/virebtables.h \
 	util/virendian.h \
+	util/virenum.h \
+	util/virenum.c \
 	util/virerror.c \
 	util/virerror.h \
 	util/virerrorpriv.h \
diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h
index 372009de4a..377e0fd870 100644
--- a/src/util/vircgroup.h
+++ b/src/util/vircgroup.h
@@ -24,6 +24,7 @@

 # include "virutil.h"
 # include "virbitmap.h"
+# include "virenum.h"

 struct _virCgroup;
 typedef struct _virCgroup virCgroup;
diff --git a/src/util/virconf.h b/src/util/virconf.h
index ff4c2b6615..d692e4a805 100644
--- a/src/util/virconf.h
+++ b/src/util/virconf.h
@@ -22,6 +22,7 @@
 # define LIBVIRT_VIRCONF_H

 # include "virutil.h"
+# include "virenum.h"

 /**
  * virConfType:
diff --git a/src/util/virenum.c b/src/util/virenum.c
new file mode 100644
index 0000000000..abbc74d28e
--- /dev/null
+++ b/src/util/virenum.c
@@ -0,0 +1,84 @@
+/*
+ * virenum.c: enum value conversion helpers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+#include <config.h>
+
+#include "virenum.h"
+#include "virstring.h"
+
+#define VIR_FROM_THIS VIR_FROM_NONE
+
+VIR_ENUM_IMPL(virTristateBool, VIR_TRISTATE_BOOL_LAST,
+              "default",
+              "yes",
+              "no",
+);
+
+VIR_ENUM_IMPL(virTristateSwitch, VIR_TRISTATE_SWITCH_LAST,
+              "default",
+              "on",
+              "off",
+);
+
+
+virTristateBool
+virTristateBoolFromBool(bool val)
+{
+    if (val)
+        return VIR_TRISTATE_BOOL_YES;
+    else
+        return VIR_TRISTATE_BOOL_NO;
+}
+
+
+virTristateSwitch
+virTristateSwitchFromBool(bool val)
+{
+    if (val)
+        return VIR_TRISTATE_SWITCH_ON;
+    else
+        return VIR_TRISTATE_SWITCH_OFF;
+}
+
+
+int
+virEnumFromString(const char * const *types,
+                  unsigned int ntypes,
+                  const char *type)
+{
+    size_t i;
+    if (!type)
+        return -1;
+
+    for (i = 0; i < ntypes; i++)
+        if (STREQ(types[i], type))
+            return i;
+
+    return -1;
+}
+
+
+const char *
+virEnumToString(const char * const *types,
+                unsigned int ntypes,
+                int type)
+{
+    if (type < 0 || type >= ntypes)
+        return NULL;
+
+    return types[type];
+}
diff --git a/src/util/virenum.h b/src/util/virenum.h
new file mode 100644
index 0000000000..3ae1a70b72
--- /dev/null
+++ b/src/util/virenum.h
@@ -0,0 +1,80 @@
+/*
+ * virenum.h: enum value conversion helpers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef LIBVIRT_VIRENUM_H
+# define LIBVIRT_VIRENUM_H
+
+# include "internal.h"
+
+int
+virEnumFromString(const char * const *types,
+                  unsigned int ntypes,
+                  const char *type);
+
+const char *
+virEnumToString(const char * const *types,
+                unsigned int ntypes,
+                int type);
+
+# define VIR_ENUM_IMPL(name, lastVal, ...) \
+    static const char *const name ## TypeList[] = { __VA_ARGS__ }; \
+    const char *name ## TypeToString(int type) { \
+        return virEnumToString(name ## TypeList, \
+                               ARRAY_CARDINALITY(name ## TypeList), \
+                               type); \
+    } \
+    int name ## TypeFromString(const char *type) { \
+        return virEnumFromString(name ## TypeList, \
+                                 ARRAY_CARDINALITY(name ## TypeList), \
+                                 type); \
+    } \
+    verify(ARRAY_CARDINALITY(name ## TypeList) == lastVal)
+
+# define VIR_ENUM_DECL(name) \
+    const char *name ## TypeToString(int type); \
+    int name ## TypeFromString(const char*type)
+
+typedef enum {
+    VIR_TRISTATE_BOOL_ABSENT = 0,
+    VIR_TRISTATE_BOOL_YES,
+    VIR_TRISTATE_BOOL_NO,
+
+    VIR_TRISTATE_BOOL_LAST
+} virTristateBool;
+
+typedef enum {
+    VIR_TRISTATE_SWITCH_ABSENT = 0,
+    VIR_TRISTATE_SWITCH_ON,
+    VIR_TRISTATE_SWITCH_OFF,
+
+    VIR_TRISTATE_SWITCH_LAST
+} virTristateSwitch;
+
+VIR_ENUM_DECL(virTristateBool);
+VIR_ENUM_DECL(virTristateSwitch);
+
+virTristateBool virTristateBoolFromBool(bool val);
+virTristateSwitch virTristateSwitchFromBool(bool val);
+
+/* the two enums must be in sync to be able to use helpers interchangeably in
+ * some special cases */
+verify((int)VIR_TRISTATE_BOOL_YES == (int)VIR_TRISTATE_SWITCH_ON);
+verify((int)VIR_TRISTATE_BOOL_NO == (int)VIR_TRISTATE_SWITCH_OFF);
+verify((int)VIR_TRISTATE_BOOL_ABSENT == (int)VIR_TRISTATE_SWITCH_ABSENT);
+
+#endif /* LIBVIRT_VIRENUM_H */
diff --git a/src/util/virfirewalld.c b/src/util/virfirewalld.c
index 7a730f2bea..1e30dadff3 100644
--- a/src/util/virfirewalld.c
+++ b/src/util/virfirewalld.c
@@ -31,6 +31,7 @@
 #include "virutil.h"
 #include "virlog.h"
 #include "virdbus.h"
+#include "virenum.h"

 #define VIR_FROM_THIS VIR_FROM_FIREWALLD

diff --git a/src/util/virgic.h b/src/util/virgic.h
index 371d04f708..e54d7ec9d2 100644
--- a/src/util/virgic.h
+++ b/src/util/virgic.h
@@ -22,6 +22,7 @@
 # define LIBVIRT_VIRGIC_H

 # include "virutil.h"
+# include "virenum.h"

 typedef enum {
     VIR_GIC_VERSION_NONE = 0,
diff --git a/src/util/virjson.c b/src/util/virjson.c
index 467561c744..d62ae1475a 100644
--- a/src/util/virjson.c
+++ b/src/util/virjson.c
@@ -30,6 +30,7 @@
 #include "virstring.h"
 #include "virutil.h"
 #include "virbuffer.h"
+#include "virenum.h"

 #if WITH_YAJL
 # include <yajl/yajl_gen.h>
diff --git a/src/util/virkeycode.h b/src/util/virkeycode.h
index 7120fb96e6..9e94d6f61e 100644
--- a/src/util/virkeycode.h
+++ b/src/util/virkeycode.h
@@ -23,6 +23,7 @@
 # define LIBVIRT_VIRKEYCODE_H

 # include "virutil.h"
+# include "virenum.h"

 VIR_ENUM_DECL(virKeycodeSet);
 int virKeycodeValueFromString(virKeycodeSet codeset, const char *keyname);
diff --git a/src/util/virmdev.h b/src/util/virmdev.h
index 0d3bc506e2..a6e9c3c605 100644
--- a/src/util/virmdev.h
+++ b/src/util/virmdev.h
@@ -22,6 +22,7 @@
 # include "internal.h"
 # include "virobject.h"
 # include "virutil.h"
+# include "virenum.h"

 typedef enum {
     VIR_MDEV_MODEL_TYPE_VFIO_PCI = 0,
diff --git a/src/util/virnetdev.h b/src/util/virnetdev.h
index 98357128e4..c3f64edae9 100644
--- a/src/util/virnetdev.h
+++ b/src/util/virnetdev.h
@@ -26,6 +26,7 @@
 # include "virmacaddr.h"
 # include "virpci.h"
 # include "virnetdevvlan.h"
+# include "virenum.h"

 # ifdef HAVE_STRUCT_IFREQ
 typedef struct ifreq virIfreq;
diff --git a/src/util/virnetdevmacvlan.h b/src/util/virnetdevmacvlan.h
index 504a8c89ae..a33ea8f29e 100644
--- a/src/util/virnetdevmacvlan.h
+++ b/src/util/virnetdevmacvlan.h
@@ -26,6 +26,7 @@
 # include "virnetdevbandwidth.h"
 # include "virnetdevvportprofile.h"
 # include "virnetdevvlan.h"
+# include "virenum.h"

 /* the mode type for macvtap devices */
 typedef enum {
diff --git a/src/util/virnetdevvlan.h b/src/util/virnetdevvlan.h
index c250181f69..d986300d2a 100644
--- a/src/util/virnetdevvlan.h
+++ b/src/util/virnetdevvlan.h
@@ -22,6 +22,7 @@
 # include <virutil.h>

 # include "virautoclean.h"
+# include "virenum.h"

 typedef enum {
     VIR_NATIVE_VLAN_MODE_DEFAULT = 0,
diff --git a/src/util/virnetdevvportprofile.h b/src/util/virnetdevvportprofile.h
index 65b4779861..5506194001 100644
--- a/src/util/virnetdevvportprofile.h
+++ b/src/util/virnetdevvportprofile.h
@@ -23,6 +23,7 @@
 # include "viruuid.h"
 # include "virutil.h"
 # include "virmacaddr.h"
+# include "virenum.h"

 # define LIBVIRT_IFLA_VF_PORT_PROFILE_MAX 40

diff --git a/src/util/virpci.h b/src/util/virpci.h
index e89ea8390c..af98376d74 100644
--- a/src/util/virpci.h
+++ b/src/util/virpci.h
@@ -25,6 +25,7 @@
 # include "virmdev.h"
 # include "virobject.h"
 # include "virutil.h"
+# include "virenum.h"

 typedef struct _virPCIDevice virPCIDevice;
 typedef virPCIDevice *virPCIDevicePtr;
diff --git a/src/util/virperf.h b/src/util/virperf.h
index f43b856723..e68baa527d 100644
--- a/src/util/virperf.h
+++ b/src/util/virperf.h
@@ -21,6 +21,7 @@

 # include "virutil.h"
 # include "virautoclean.h"
+# include "virenum.h"

 /* Some Intel processor families introduced some RDT (Resource Director
  * Technology) features to monitor or control shared resource based on
diff --git a/src/util/virprocess.h b/src/util/virprocess.h
index e3944d3f1b..8e5b0c2127 100644
--- a/src/util/virprocess.h
+++ b/src/util/virprocess.h
@@ -27,6 +27,7 @@
 # include "internal.h"
 # include "virbitmap.h"
 # include "virutil.h"
+# include "virenum.h"

 typedef enum {
     VIR_PROC_POLICY_NONE = 0,
diff --git a/src/util/virresctrl.h b/src/util/virresctrl.h
index 0aa8bf7ea3..abdeb594ee 100644
--- a/src/util/virresctrl.h
+++ b/src/util/virresctrl.h
@@ -23,7 +23,7 @@

 # include "virbitmap.h"
 # include "virutil.h"
-
+# include "virenum.h"

 typedef enum {
     VIR_CACHE_TYPE_BOTH,
diff --git a/src/util/virsecret.h b/src/util/virsecret.h
index a44d1bcdb6..aaeb204f7c 100644
--- a/src/util/virsecret.h
+++ b/src/util/virsecret.h
@@ -26,6 +26,7 @@

 # include "virutil.h"
 # include "virxml.h"
+# include "virenum.h"

 VIR_ENUM_DECL(virSecretUsage);

diff --git a/src/util/virstorageencryption.h b/src/util/virstorageencryption.h
index 3fc4d970a1..68d879a63e 100644
--- a/src/util/virstorageencryption.h
+++ b/src/util/virstorageencryption.h
@@ -25,6 +25,7 @@
 # include "virbuffer.h"
 # include "virsecret.h"
 # include "virutil.h"
+# include "virenum.h"

 # include <libxml/tree.h>

diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
index 420c8a57f3..b71004f4ef 100644
--- a/src/util/virstoragefile.h
+++ b/src/util/virstoragefile.h
@@ -30,6 +30,7 @@
 # include "virstorageencryption.h"
 # include "virutil.h"
 # include "virsecret.h"
+# include "virenum.h"

 /* Minimum header size required to probe all known formats with
  * virStorageFileProbeFormat, or obtain metadata from a known format.
diff --git a/src/util/virsysinfo.h b/src/util/virsysinfo.h
index 835ee4c62e..c0015834bc 100644
--- a/src/util/virsysinfo.h
+++ b/src/util/virsysinfo.h
@@ -25,6 +25,7 @@
 # include "internal.h"
 # include "virutil.h"
 # include "virbuffer.h"
+# include "virenum.h"

 typedef enum {
     VIR_SYSINFO_SMBIOS,
diff --git a/src/util/virtypedparam.h b/src/util/virtypedparam.h
index 911ae52f6c..112f2a2af9 100644
--- a/src/util/virtypedparam.h
+++ b/src/util/virtypedparam.h
@@ -24,6 +24,7 @@

 # include "internal.h"
 # include "virutil.h"
+# include "virenum.h"

 /**
  * VIR_TYPED_PARAM_MULTIPLE:
diff --git a/src/util/virutil.c b/src/util/virutil.c
index 0d58f1ee57..760557ea29 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -84,38 +84,6 @@ verify(sizeof(gid_t) <= sizeof(unsigned int) &&

 VIR_LOG_INIT("util.util");

-VIR_ENUM_IMPL(virTristateBool, VIR_TRISTATE_BOOL_LAST,
-              "default",
-              "yes",
-              "no",
-);
-
-VIR_ENUM_IMPL(virTristateSwitch, VIR_TRISTATE_SWITCH_LAST,
-              "default",
-              "on",
-              "off",
-);
-
-
-virTristateBool
-virTristateBoolFromBool(bool val)
-{
-    if (val)
-        return VIR_TRISTATE_BOOL_YES;
-    else
-        return VIR_TRISTATE_BOOL_NO;
-}
-
-
-virTristateSwitch
-virTristateSwitchFromBool(bool val)
-{
-    if (val)
-        return VIR_TRISTATE_SWITCH_ON;
-    else
-        return VIR_TRISTATE_SWITCH_OFF;
-}
-

 #ifndef WIN32

@@ -437,22 +405,6 @@ virParseVersionString(const char *str, unsigned long *version,
     return 0;
 }

-int virEnumFromString(const char *const*types,
-                      unsigned int ntypes,
-                      const char *type)
-{
-    size_t i;
-    if (!type)
-        return -1;
-
-    for (i = 0; i < ntypes; i++)
-        if (STREQ(types[i], type))
-            return i;
-
-    return -1;
-}
-
-
 /**
  * Format @val as a base-10 decimal number, in the
  * buffer @buf of size @buflen. To allocate a suitable
@@ -532,16 +484,6 @@ virFormatIntPretty(unsigned long long val,
 }


-const char *virEnumToString(const char *const*types,
-                            unsigned int ntypes,
-                            int type)
-{
-    if (type < 0 || type >= ntypes)
-        return NULL;
-
-    return types[type];
-}
-
 /* Translates a device name of the form (regex) /^[fhv]d[a-z]+[0-9]*$/
  * into the corresponding index and partition number
  * (e.g. sda0 => (0,0), hdz2 => (25,2), vdaa12 => (26,12))
diff --git a/src/util/virutil.h b/src/util/virutil.h
index f8d8d85d27..67edf34d55 100644
--- a/src/util/virutil.h
+++ b/src/util/virutil.h
@@ -72,32 +72,6 @@ int virDiskNameParse(const char *name, int *disk, int *partition);
 int virDiskNameToIndex(const char* str);
 char *virIndexToDiskName(int idx, const char *prefix);

-int virEnumFromString(const char *const*types,
-                      unsigned int ntypes,
-                      const char *type);
-
-const char *virEnumToString(const char *const*types,
-                            unsigned int ntypes,
-                            int type);
-
-# define VIR_ENUM_IMPL(name, lastVal, ...) \
-    static const char *const name ## TypeList[] = { __VA_ARGS__ }; \
-    const char *name ## TypeToString(int type) { \
-        return virEnumToString(name ## TypeList, \
-                               ARRAY_CARDINALITY(name ## TypeList), \
-                               type); \
-    } \
-    int name ## TypeFromString(const char *type) { \
-        return virEnumFromString(name ## TypeList, \
-                                 ARRAY_CARDINALITY(name ## TypeList), \
-                                 type); \
-    } \
-    verify(ARRAY_CARDINALITY(name ## TypeList) == lastVal)
-
-# define VIR_ENUM_DECL(name) \
-    const char *name ## TypeToString(int type); \
-    int name ## TypeFromString(const char*type)
-
 /* No-op workarounds for functionality missing in mingw.  */
 # ifndef HAVE_GETUID
 static inline int getuid(void)
@@ -180,34 +154,6 @@ bool virIsSUID(void);
 time_t virGetSelfLastChanged(void);
 void virUpdateSelfLastChanged(const char *path);

-typedef enum {
-    VIR_TRISTATE_BOOL_ABSENT = 0,
-    VIR_TRISTATE_BOOL_YES,
-    VIR_TRISTATE_BOOL_NO,
-
-    VIR_TRISTATE_BOOL_LAST
-} virTristateBool;
-
-typedef enum {
-    VIR_TRISTATE_SWITCH_ABSENT = 0,
-    VIR_TRISTATE_SWITCH_ON,
-    VIR_TRISTATE_SWITCH_OFF,
-
-    VIR_TRISTATE_SWITCH_LAST
-} virTristateSwitch;
-
-VIR_ENUM_DECL(virTristateBool);
-VIR_ENUM_DECL(virTristateSwitch);
-
-virTristateBool virTristateBoolFromBool(bool val);
-virTristateSwitch virTristateSwitchFromBool(bool val);
-
-/* the two enums must be in sync to be able to use helpers interchangeably in
- * some special cases */
-verify((int)VIR_TRISTATE_BOOL_YES == (int)VIR_TRISTATE_SWITCH_ON);
-verify((int)VIR_TRISTATE_BOOL_NO == (int)VIR_TRISTATE_SWITCH_OFF);
-verify((int)VIR_TRISTATE_BOOL_ABSENT == (int)VIR_TRISTATE_SWITCH_ABSENT);
-
 unsigned int virGetListenFDs(void);
 char *virGetUNIXSocketPath(int fd);

diff --git a/tools/virt-host-validate-common.h b/tools/virt-host-validate-common.h
index c2e11dae01..94a5005d5d 100644
--- a/tools/virt-host-validate-common.h
+++ b/tools/virt-host-validate-common.h
@@ -25,6 +25,7 @@
 # include "internal.h"
 # include "virutil.h"
 # include "virbitmap.h"
+# include "virenum.h"

 typedef enum {
     VIR_HOST_VALIDATE_FAIL,
-- 
2.20.1




More information about the libvir-list mailing list