From 7489b5e37e99595c537c670aa2f6ad806115d106 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 24 Nov 2021 14:48:12 +0100 Subject: [PATCH] util: enum: Add helpers for converting virTristate* to a plain bool MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The helpers will update the passed boolean if the tristate's value is not _ABSENT. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/libvirt_private.syms | 2 ++ src/util/virenum.c | 54 ++++++++++++++++++++++++++++++++++++++++ src/util/virenum.h | 2 ++ 3 files changed, 58 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 76fed136cd..cdf9ca49b8 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2148,9 +2148,11 @@ ebtablesRemoveForwardAllowIn; virEnumFromString; virEnumToString; virTristateBoolFromBool; +virTristateBoolToBool; virTristateBoolTypeFromString; virTristateBoolTypeToString; virTristateSwitchFromBool; +virTristateSwitchToBool; virTristateSwitchTypeFromString; virTristateSwitchTypeToString; diff --git a/src/util/virenum.c b/src/util/virenum.c index 26093bd795..103f00b524 100644 --- a/src/util/virenum.c +++ b/src/util/virenum.c @@ -47,6 +47,33 @@ virTristateBoolFromBool(bool val) } +/** + * virTristateBoolToBool: + * @t: a virTristateBool value + * @b: pointer to a boolean to be updated according to the value of @t + * + * The value pointed to by @b is updated if the tristate value @t is not absent. + */ +void +virTristateBoolToBool(virTristateBool t, + bool *b) +{ + switch (t) { + case VIR_TRISTATE_BOOL_YES: + *b = true; + break; + + case VIR_TRISTATE_BOOL_NO: + *b = false; + break; + + case VIR_TRISTATE_BOOL_ABSENT: + case VIR_TRISTATE_BOOL_LAST: + break; + } +} + + virTristateSwitch virTristateSwitchFromBool(bool val) { @@ -57,6 +84,33 @@ virTristateSwitchFromBool(bool val) } +/** + * virTristateSwitchToBool: + * @t: a virTristateSwitch value + * @b: pointer to a boolean to be updated according to the value of @t + * + * The value pointed to by @b is updated if the tristate value @t is not absent. + */ +void +virTristateSwitchToBool(virTristateSwitch t, + bool *b) +{ + switch (t) { + case VIR_TRISTATE_SWITCH_ON: + *b = true; + break; + + case VIR_TRISTATE_SWITCH_OFF: + *b = false; + break; + + case VIR_TRISTATE_SWITCH_ABSENT: + case VIR_TRISTATE_SWITCH_LAST: + break; + } +} + + int virEnumFromString(const char * const *types, unsigned int ntypes, diff --git a/src/util/virenum.h b/src/util/virenum.h index d74af35530..98f01d574d 100644 --- a/src/util/virenum.h +++ b/src/util/virenum.h @@ -68,7 +68,9 @@ VIR_ENUM_DECL(virTristateBool); VIR_ENUM_DECL(virTristateSwitch); virTristateBool virTristateBoolFromBool(bool val); +void virTristateBoolToBool(virTristateBool t, bool *b); virTristateSwitch virTristateSwitchFromBool(bool val); +void virTristateSwitchToBool(virTristateSwitch t, bool *b); /* the two enums must be in sync to be able to use helpers interchangeably in * some special cases */