
On Thu, Mar 29, 2018 at 05:41:19PM +0200, Katerina Koukiou wrote:
The functions were copied from src/util/virutil.* files from libvirt project
Signed-off-by: Katerina Koukiou <kkoukiou@redhat.com> --- src/util.c | 27 +++++++++++++++++++++++++++ src/util.h | 28 ++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+)
diff --git a/src/util.c b/src/util.c index d6c27f3..3179dd7 100644 --- a/src/util.c +++ b/src/util.c @@ -124,3 +124,30 @@ virtDBusUtilVirDomainListFree(virDomainPtr *domains)
g_free(domains); } + +const gchar * +virtDBusUtilEnumToString(const gchar *const*types,
s/*const*types/*const *types/
+ guint ntypes, + gint type) +{ + if (type < 0 || (unsigned)type >= ntypes)
s/unsigned/guint/
+ return NULL; + + return types[type]; +} + +gint +virtDBusUtilEnumFromString(const gchar *const*types,
s/*const*types/*const *types/
+ guint ntypes, + const gchar *type) +{ + guint i; + if (!type) + return -1; + + for (i = 0; i < ntypes; i++) + if (strcmp(types[i], type) == 0)
You can use g_str_equal here.
+ return i; + + return -1; +} diff --git a/src/util.h b/src/util.h index 4304bac..61e01c9 100644 --- a/src/util.h +++ b/src/util.h @@ -37,3 +37,31 @@ virtDBusUtilVirDomainListFree(virDomainPtr *domains);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomain, virDomainFree); G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainPtr, virtDBusUtilVirDomainListFree); + +gint +virtDBusUtilEnumFromString(const gchar *const*types,
s/*const*types/*const *types/
+ guint ntypes, + const gchar *type) G_GNUC_PURE; + +const gchar * +virtDBusUtilEnumToString(const gchar *const*types,
s/*const*types/*const *types/
+ guint ntypes, + gint type) G_GNUC_PURE; + +# define VIRT_DBUS_ENUM_IMPL(name, lastVal, ...) \
Remove the extra space after #.
+ static const gchar *const name ##TypeList[] = { __VA_ARGS__ }; \ + G_STATIC_ASSERT(G_N_ELEMENTS(name ##TypeList) == lastVal); \ + const gchar *name ##TypeToString(int type) { \
s/int/gint/
+ return virtDBusUtilEnumToString(name ##TypeList, \ + G_N_ELEMENTS(name ##TypeList), \ + type); \ + } \ + gint name ##TypeFromString(const gchar *type) { \ + return virtDBusUtilEnumFromString(name ##TypeList, \ + G_N_ELEMENTS(name ##TypeList), \ + type); \ + } + +# define VIRT_DBUS_ENUM_DECL(name) \
Remove the extra space after #.
+ const gchar *name ##TypeToString(gint type) G_GNUC_PURE; \ + gint name ##TypeFromString(const gchar*type) G_GNUC_PURE;
s/gchar*type/gchar *type/ If you fix these small issues mostly introduced by copying the code Reviewed-by: Pavel Hrdina <phrdina@redhat.com>