mirror of
https://github.com/libvirt/libvirt.git
synced 2026-10-02 12:20:06 -05:00
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:
1 parent
ad40d3c822
commit
0e35fe608c
3 files changed
+66
-19
No files matched your search
@@ -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;
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user