@@ -36,7 +36,10 @@ struct Visitor
void (*get_next_type)(Visitor *v, QType *type, bool promote_int,
const char *name, Error **errp);
- void (*type_int)(Visitor *v, int64_t *obj, const char *name, Error **errp);
+ /* Must be set. */
+ void (*type_int64)(Visitor *v, int64_t *obj, const char *name,
+ Error **errp);
+ /* Must be set. */
void (*type_bool)(Visitor *v, bool *obj, const char *name, Error **errp);
void (*type_str)(Visitor *v, char **obj, const char *name, Error **errp);
void (*type_number)(Visitor *v, double *obj, const char *name,
@@ -54,7 +57,6 @@ struct Visitor
void (*type_int8)(Visitor *v, int8_t *obj, const char *name, Error **errp);
void (*type_int16)(Visitor *v, int16_t *obj, const char *name, Error **errp);
void (*type_int32)(Visitor *v, int32_t *obj, const char *name, Error **errp);
- void (*type_int64)(Visitor *v, int64_t *obj, const char *name, Error **errp);
/* visit_type_size() falls back to (*type_uint64)() if type_size is unset */
void (*type_size)(Visitor *v, uint64_t *obj, const char *name, Error **errp);
bool (*start_union)(Visitor *v, bool data_present, Error **errp);
@@ -361,7 +361,7 @@ opts_type_bool(Visitor *v, bool *obj, const char *name, Error **errp)
static void
-opts_type_int(Visitor *v, int64_t *obj, const char *name, Error **errp)
+opts_type_int64(Visitor *v, int64_t *obj, const char *name, Error **errp)
{
OptsVisitor *ov = to_ov(v);
const QemuOpt *opt;
@@ -529,7 +529,7 @@ opts_visitor_new(const QemuOpts *opts)
*/
ov->visitor.type_enum = &input_type_enum;
- ov->visitor.type_int = &opts_type_int;
+ ov->visitor.type_int64 = &opts_type_int64;
ov->visitor.type_uint64 = &opts_type_uint64;
ov->visitor.type_size = &opts_type_size;
ov->visitor.type_bool = &opts_type_bool;
@@ -136,8 +136,8 @@ static void qapi_dealloc_type_str(Visitor *v, char **obj, const char *name,
}
}
-static void qapi_dealloc_type_int(Visitor *v, int64_t *obj, const char *name,
- Error **errp)
+static void qapi_dealloc_type_int64(Visitor *v, int64_t *obj, const char *name,
+ Error **errp)
{
}
@@ -215,7 +215,7 @@ QapiDeallocVisitor *qapi_dealloc_visitor_new(void)
v->visitor.next_list = qapi_dealloc_next_list;
v->visitor.end_list = qapi_dealloc_end_list;
v->visitor.type_enum = qapi_dealloc_type_enum;
- v->visitor.type_int = qapi_dealloc_type_int;
+ v->visitor.type_int64 = qapi_dealloc_type_int64;
v->visitor.type_bool = qapi_dealloc_type_bool;
v->visitor.type_str = qapi_dealloc_type_str;
v->visitor.type_number = qapi_dealloc_type_number;
@@ -92,7 +92,7 @@ void visit_type_enum(Visitor *v, int *obj, const char * const strings[],
void visit_type_int(Visitor *v, int64_t *obj, const char *name, Error **errp)
{
- v->type_int(v, obj, name, errp);
+ v->type_int64(v, obj, name, errp);
}
void visit_type_uint8(Visitor *v, uint8_t *obj, const char *name, Error **errp)
@@ -103,8 +103,10 @@ void visit_type_uint8(Visitor *v, uint8_t *obj, const char *name, Error **errp)
v->type_uint8(v, obj, name, errp);
} else {
value = *obj;
- v->type_int(v, &value, name, errp);
+ v->type_int64(v, &value, name, errp);
if (value < 0 || value > UINT8_MAX) {
+ /* FIXME questionable reuse of errp if callback changed
+ value on error */
error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
name ? name : "null", "uint8_t");
return;
@@ -121,8 +123,10 @@ void visit_type_uint16(Visitor *v, uint16_t *obj, const char *name, Error **errp
v->type_uint16(v, obj, name, errp);
} else {
value = *obj;
- v->type_int(v, &value, name, errp);
+ v->type_int64(v, &value, name, errp);
if (value < 0 || value > UINT16_MAX) {
+ /* FIXME questionable reuse of errp if callback changed
+ value on error */
error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
name ? name : "null", "uint16_t");
return;
@@ -139,8 +143,10 @@ void visit_type_uint32(Visitor *v, uint32_t *obj, const char *name, Error **errp
v->type_uint32(v, obj, name, errp);
} else {
value = *obj;
- v->type_int(v, &value, name, errp);
+ v->type_int64(v, &value, name, errp);
if (value < 0 || value > UINT32_MAX) {
+ /* FIXME questionable reuse of errp if callback changed
+ value on error */
error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
name ? name : "null", "uint32_t");
return;
@@ -157,7 +163,7 @@ void visit_type_uint64(Visitor *v, uint64_t *obj, const char *name, Error **errp
v->type_uint64(v, obj, name, errp);
} else {
value = *obj;
- v->type_int(v, &value, name, errp);
+ v->type_int64(v, &value, name, errp);
*obj = value;
}
}
@@ -170,8 +176,10 @@ void visit_type_int8(Visitor *v, int8_t *obj, const char *name, Error **errp)
v->type_int8(v, obj, name, errp);
} else {
value = *obj;
- v->type_int(v, &value, name, errp);
+ v->type_int64(v, &value, name, errp);
if (value < INT8_MIN || value > INT8_MAX) {
+ /* FIXME questionable reuse of errp if callback changed
+ value on error */
error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
name ? name : "null", "int8_t");
return;
@@ -188,8 +196,10 @@ void visit_type_int16(Visitor *v, int16_t *obj, const char *name, Error **errp)
v->type_int16(v, obj, name, errp);
} else {
value = *obj;
- v->type_int(v, &value, name, errp);
+ v->type_int64(v, &value, name, errp);
if (value < INT16_MIN || value > INT16_MAX) {
+ /* FIXME questionable reuse of errp if callback changed
+ value on error */
error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
name ? name : "null", "int16_t");
return;
@@ -206,8 +216,10 @@ void visit_type_int32(Visitor *v, int32_t *obj, const char *name, Error **errp)
v->type_int32(v, obj, name, errp);
} else {
value = *obj;
- v->type_int(v, &value, name, errp);
+ v->type_int64(v, &value, name, errp);
if (value < INT32_MIN || value > INT32_MAX) {
+ /* FIXME questionable reuse of errp if callback changed
+ value on error */
error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
name ? name : "null", "int32_t");
return;
@@ -218,11 +230,7 @@ void visit_type_int32(Visitor *v, int32_t *obj, const char *name, Error **errp)
void visit_type_int64(Visitor *v, int64_t *obj, const char *name, Error **errp)
{
- if (v->type_int64) {
- v->type_int64(v, obj, name, errp);
- } else {
- v->type_int(v, obj, name, errp);
- }
+ v->type_int64(v, obj, name, errp);
}
void visit_type_size(Visitor *v, uint64_t *obj, const char *name, Error **errp)
@@ -235,7 +243,7 @@ void visit_type_size(Visitor *v, uint64_t *obj, const char *name, Error **errp)
v->type_uint64(v, obj, name, errp);
} else {
value = *obj;
- v->type_int(v, &value, name, errp);
+ v->type_int64(v, &value, name, errp);
*obj = value;
}
}
@@ -225,8 +225,8 @@ static void qmp_input_get_next_type(Visitor *v, QType *type, bool promote_int,
}
}
-static void qmp_input_type_int(Visitor *v, int64_t *obj, const char *name,
- Error **errp)
+static void qmp_input_type_int64(Visitor *v, int64_t *obj, const char *name,
+ Error **errp)
{
QmpInputVisitor *qiv = to_qiv(v);
QInt *qint = qobject_to_qint(qmp_input_get_object(qiv, name, true));
@@ -342,7 +342,7 @@ QmpInputVisitor *qmp_input_visitor_new(QObject *obj)
v->visitor.next_list = qmp_input_next_list;
v->visitor.end_list = qmp_input_end_list;
v->visitor.type_enum = input_type_enum;
- v->visitor.type_int = qmp_input_type_int;
+ v->visitor.type_int64 = qmp_input_type_int64;
v->visitor.type_bool = qmp_input_type_bool;
v->visitor.type_str = qmp_input_type_str;
v->visitor.type_number = qmp_input_type_number;
@@ -159,8 +159,8 @@ static void qmp_output_end_list(Visitor *v, Error **errp)
qmp_output_pop(qov);
}
-static void qmp_output_type_int(Visitor *v, int64_t *obj, const char *name,
- Error **errp)
+static void qmp_output_type_int64(Visitor *v, int64_t *obj, const char *name,
+ Error **errp)
{
QmpOutputVisitor *qov = to_qov(v);
qmp_output_add(qov, name, qint_from_int(*obj));
@@ -242,7 +242,7 @@ QmpOutputVisitor *qmp_output_visitor_new(void)
v->visitor.next_list = qmp_output_next_list;
v->visitor.end_list = qmp_output_end_list;
v->visitor.type_enum = output_type_enum;
- v->visitor.type_int = qmp_output_type_int;
+ v->visitor.type_int64 = qmp_output_type_int64;
v->visitor.type_bool = qmp_output_type_bool;
v->visitor.type_str = qmp_output_type_str;
v->visitor.type_number = qmp_output_type_number;
@@ -185,8 +185,8 @@ end_list(Visitor *v, Error **errp)
siv->head = true;
}
-static void parse_type_int(Visitor *v, int64_t *obj, const char *name,
- Error **errp)
+static void parse_type_int64(Visitor *v, int64_t *obj, const char *name,
+ Error **errp)
{
StringInputVisitor *siv = to_siv(v);
@@ -336,7 +336,7 @@ StringInputVisitor *string_input_visitor_new(const char *str)
v = g_malloc0(sizeof(*v));
v->visitor.type_enum = input_type_enum;
- v->visitor.type_int = parse_type_int;
+ v->visitor.type_int64 = parse_type_int64;
v->visitor.type_size = parse_type_size;
v->visitor.type_bool = parse_type_bool;
v->visitor.type_str = parse_type_str;
@@ -122,8 +122,8 @@ static void format_string(StringOutputVisitor *sov, Range *r, bool next,
}
}
-static void print_type_int(Visitor *v, int64_t *obj, const char *name,
- Error **errp)
+static void print_type_int64(Visitor *v, int64_t *obj, const char *name,
+ Error **errp)
{
StringOutputVisitor *sov = to_sov(v);
GList *l;
@@ -346,7 +346,7 @@ StringOutputVisitor *string_output_visitor_new(bool human)
v->string = g_string_new(NULL);
v->human = human;
v->visitor.type_enum = output_type_enum;
- v->visitor.type_int = print_type_int;
+ v->visitor.type_int64 = print_type_int64;
v->visitor.type_size = print_type_size;
v->visitor.type_bool = print_type_bool;
v->visitor.type_str = print_type_str;