util: typedparam: Convert VIR_TYPED_PARAM_CHECK_TYPE into a function

Create 'virTypedParamValidateType' which will use the same logic
encapsulated in a function. Use the error message wording from
'virTypedParamsValidate' as it contains less fluff.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa committed 2026-05-14 12:13:09 +02:00
1 parent ad40d3c822
commit 0e35fe608c
3 files changed
+66 -19

No files matched your search

+35 -19
View File
@@ -147,18 +147,6 @@ virTypedParamsGet(virTypedParameterPtr params,
}
#define VIR_TYPED_PARAM_CHECK_TYPE(check_type) \
do { if (param->type != check_type) { \
virReportError(VIR_ERR_INVALID_ARG, \
_("Invalid type '%1$s' requested for parameter '%2$s', actual type is '%3$s'"), \
virTypedParameterTypeToString(check_type), \
name, \
virTypedParameterTypeToString(param->type)); \
virDispatchError(NULL); \
return -1; \
} } while (0)
/**
* virTypedParamsGetInt:
* @params: array of typed parameters
@@ -189,7 +177,11 @@ virTypedParamsGetInt(virTypedParameterPtr params,
if (!(param = virTypedParamsGet(params, nparams, name)))
return 0;
VIR_TYPED_PARAM_CHECK_TYPE(VIR_TYPED_PARAM_INT);
if (virTypedParamValidateType(param, VIR_TYPED_PARAM_INT) < 0) {
virDispatchError(NULL);
return -1;
}
if (value)
*value = param->value.i;
@@ -227,7 +219,11 @@ virTypedParamsGetUInt(virTypedParameterPtr params,
if (!(param = virTypedParamsGet(params, nparams, name)))
return 0;
VIR_TYPED_PARAM_CHECK_TYPE(VIR_TYPED_PARAM_UINT);
if (virTypedParamValidateType(param, VIR_TYPED_PARAM_UINT) < 0) {
virDispatchError(NULL);
return -1;
}
if (value)
*value = param->value.ui;
@@ -265,7 +261,11 @@ virTypedParamsGetLLong(virTypedParameterPtr params,
if (!(param = virTypedParamsGet(params, nparams, name)))
return 0;
VIR_TYPED_PARAM_CHECK_TYPE(VIR_TYPED_PARAM_LLONG);
if (virTypedParamValidateType(param, VIR_TYPED_PARAM_LLONG) < 0) {
virDispatchError(NULL);
return -1;
}
if (value)
*value = param->value.l;
@@ -303,7 +303,11 @@ virTypedParamsGetULLong(virTypedParameterPtr params,
if (!(param = virTypedParamsGet(params, nparams, name)))
return 0;
VIR_TYPED_PARAM_CHECK_TYPE(VIR_TYPED_PARAM_ULLONG);
if (virTypedParamValidateType(param, VIR_TYPED_PARAM_ULLONG) < 0) {
virDispatchError(NULL);
return -1;
}
if (value)
*value = param->value.ul;
@@ -341,7 +345,11 @@ virTypedParamsGetDouble(virTypedParameterPtr params,
if (!(param = virTypedParamsGet(params, nparams, name)))
return 0;
VIR_TYPED_PARAM_CHECK_TYPE(VIR_TYPED_PARAM_DOUBLE);
if (virTypedParamValidateType(param, VIR_TYPED_PARAM_DOUBLE) < 0) {
virDispatchError(NULL);
return -1;
}
if (value)
*value = param->value.d;
@@ -379,7 +387,11 @@ virTypedParamsGetBoolean(virTypedParameterPtr params,
if (!(param = virTypedParamsGet(params, nparams, name)))
return 0;
VIR_TYPED_PARAM_CHECK_TYPE(VIR_TYPED_PARAM_BOOLEAN);
if (virTypedParamValidateType(param, VIR_TYPED_PARAM_BOOLEAN) < 0) {
virDispatchError(NULL);
return -1;
}
if (value)
*value = !!param->value.b;
@@ -419,7 +431,11 @@ virTypedParamsGetString(virTypedParameterPtr params,
if (!(param = virTypedParamsGet(params, nparams, name)))
return 0;
VIR_TYPED_PARAM_CHECK_TYPE(VIR_TYPED_PARAM_STRING);
if (virTypedParamValidateType(param, VIR_TYPED_PARAM_STRING) < 0) {
virDispatchError(NULL);
return -1;
}
if (value)
*value = param->value.s;
+27
View File
@@ -42,6 +42,33 @@ VIR_ENUM_IMPL(virTypedParameter,
"string",
);
/**
* virTypedParamValidateType:
* @param: typed parameter to validate
* @expected_type: type to look for
*
* Validates that @param is a parameter of @expected type.
*
* Returns 0 on success; -1 on error and reports an error.
*/
int
virTypedParamValidateType(virTypedParameterPtr param,
unsigned int expected_type)
{
if (param->type != expected_type) {
virReportError(VIR_ERR_INVALID_ARG,
_("invalid type '%1$s' for parameter '%2$s', expected '%3$s'"),
virTypedParameterTypeToString(expected_type),
param->field,
virTypedParameterTypeToString(param->type));
return -1;
}
return 0;
}
static int
virTypedParamsSortName(const void *left,
const void *right,
+4
View File
@@ -63,6 +63,10 @@ struct _virTypedParameterRemote {
virTypedParameterRemoteValue value;
};
int
virTypedParamValidateType(virTypedParameterPtr param,
unsigned int expected_type)
G_GNUC_WARN_UNUSED_RESULT;
int
virTypedParamsValidate(virTypedParameterPtr params,