1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

util: xml: Introduce virXMLPropEnumDefault

The helper is almost identical to virXMLPropEnum but it allows to pass a
default value to initialize the result to.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Peter Krempa 2021-05-06 17:09:45 +02:00
parent 26cbc01bfc
commit 7054465212
3 changed files with 42 additions and 0 deletions

View File

@ -3550,6 +3550,7 @@ virXMLNodeToString;
virXMLParseHelper; virXMLParseHelper;
virXMLPickShellSafeComment; virXMLPickShellSafeComment;
virXMLPropEnum; virXMLPropEnum;
virXMLPropEnumDefault;
virXMLPropInt; virXMLPropInt;
virXMLPropString; virXMLPropString;
virXMLPropStringLimit; virXMLPropStringLimit;

View File

@ -827,6 +827,36 @@ virXMLPropULongLong(xmlNodePtr node,
} }
/**
* virXMLPropEnumDefault:
* @node: XML dom node pointer
* @name: Name of the property (attribute) to get
* @strToInt: Conversion function to turn enum name to value. Expected to
* return negative value on failure.
* @flags: Bitwise or of virXMLPropFlags
* @result: The returned value
* @defaultResult: default value set to @result in case the property is missing
*
* Convenience function to return value of an enum attribute.
*
* Returns 1 in case of success in which case @result is set,
* or 0 if the attribute is not present,
* or -1 and reports an error on failure.
*/
int
virXMLPropEnumDefault(xmlNodePtr node,
const char* name,
int (*strToInt)(const char*),
virXMLPropFlags flags,
unsigned int *result,
unsigned int defaultResult)
{
*result = defaultResult;
return virXMLPropEnumInternal(node, name, strToInt, flags, result);
}
/** /**
* virXMLPropEnum: * virXMLPropEnum:
* @node: XML dom node pointer * @node: XML dom node pointer

View File

@ -152,6 +152,17 @@ virXMLPropEnum(xmlNodePtr node,
ATTRIBUTE_NONNULL(0) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(0) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
ATTRIBUTE_NONNULL(4); ATTRIBUTE_NONNULL(4);
int
virXMLPropEnumDefault(xmlNodePtr node,
const char* name,
int (*strToInt)(const char*),
virXMLPropFlags flags,
unsigned int *result,
unsigned int defaultResult)
ATTRIBUTE_NONNULL(0) ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2)
ATTRIBUTE_NONNULL(4);
/* Internal function; prefer the macros below. */ /* Internal function; prefer the macros below. */
xmlDocPtr xmlDocPtr
virXMLParseHelper(int domcode, virXMLParseHelper(int domcode,