util: enum: Add helpers for converting virTristate* to a plain bool

The helpers will update the passed boolean if the tristate's value is
not _ABSENT.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2021-11-24 14:48:12 +01:00
parent f17b9c57c5
commit 7489b5e37e
3 changed files with 58 additions and 0 deletions

View File

@ -2148,9 +2148,11 @@ ebtablesRemoveForwardAllowIn;
virEnumFromString;
virEnumToString;
virTristateBoolFromBool;
virTristateBoolToBool;
virTristateBoolTypeFromString;
virTristateBoolTypeToString;
virTristateSwitchFromBool;
virTristateSwitchToBool;
virTristateSwitchTypeFromString;
virTristateSwitchTypeToString;

View File

@ -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,

View File

@ -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 */