mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-31 18:15:25 +00:00
internal: introduce macro helpers to check flag requirements
Similar to VIR_EXLUSIVE_FLAGS, it will error out if flag requirement is not met. Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
e86a94ee4c
commit
0fb03395a0
@ -377,6 +377,53 @@
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* Macros to help dealing with flag requirements. */
|
||||
|
||||
/**
|
||||
* VIR_REQUIRE_FLAG_RET:
|
||||
*
|
||||
* @FLAG1: First flag to be checked.
|
||||
* @FLAG2: Second flag that is required by first flag.
|
||||
* @RET: Return value.
|
||||
*
|
||||
* Check whether required flag is set. The checked flags are compared
|
||||
* with flags variable.
|
||||
*
|
||||
* This helper does an early return and therefore it has to be called
|
||||
* before anything that would require cleanup.
|
||||
*/
|
||||
# define VIR_REQUIRE_FLAG_RET(FLAG1, FLAG2, RET) \
|
||||
do { \
|
||||
if ((flags & FLAG1) && !(flags & FLAG2)) { \
|
||||
virReportInvalidArg(ctl, \
|
||||
_("Flag '%s' is required by flag '%s'"), \
|
||||
#FLAG2, #FLAG1); \
|
||||
return RET; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/**
|
||||
* VIR_REQUIRE_FLAG_GOTO:
|
||||
*
|
||||
* @FLAG1: First flag to be checked.
|
||||
* @FLAG2: Second flag that is required by first flag.
|
||||
* @LABEL: Label to jump to.
|
||||
*
|
||||
* Check whether required flag is set. The checked flags are compared
|
||||
* with flags variable.
|
||||
*
|
||||
* Returns nothing. Jumps to a label if required flag is not set.
|
||||
*/
|
||||
# define VIR_REQUIRE_FLAG_GOTO(FLAG1, FLAG2, LABEL) \
|
||||
do { \
|
||||
if ((flags & FLAG1) && !(flags & FLAG2)) { \
|
||||
virReportInvalidArg(ctl, \
|
||||
_("Flag '%s' is required by flag '%s'"), \
|
||||
#FLAG2, #FLAG1); \
|
||||
goto LABEL; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
# define virCheckNonNullArgReturn(argname, retval) \
|
||||
do { \
|
||||
if (argname == NULL) { \
|
||||
|
Loading…
Reference in New Issue
Block a user