mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-17 23:22:12 -06:00
qapi: merge QInt and QFloat in QNum
We would like to use a same QObject type to represent numbers, whether they are int, uint, or floats. Getters will allow some compatibility between the various types if the number fits other representations. Add a few more tests while at it. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20170607163635.17635-7-marcandre.lureau@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> [parse_stats_intervals() simplified a bit, comment in test_visitor_in_int_overflow() tidied up, suppress bogus warnings] Signed-off-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
58634047b7
commit
01b2ffcedd
65 changed files with 630 additions and 664 deletions
|
@ -941,9 +941,8 @@ typedef struct OptsFromQDictState {
|
|||
static void qemu_opts_from_qdict_1(const char *key, QObject *obj, void *opaque)
|
||||
{
|
||||
OptsFromQDictState *state = opaque;
|
||||
char buf[32];
|
||||
char buf[32], *tmp = NULL;
|
||||
const char *value;
|
||||
int n;
|
||||
|
||||
if (!strcmp(key, "id") || *state->errp) {
|
||||
return;
|
||||
|
@ -953,17 +952,9 @@ static void qemu_opts_from_qdict_1(const char *key, QObject *obj, void *opaque)
|
|||
case QTYPE_QSTRING:
|
||||
value = qstring_get_str(qobject_to_qstring(obj));
|
||||
break;
|
||||
case QTYPE_QINT:
|
||||
n = snprintf(buf, sizeof(buf), "%" PRId64,
|
||||
qint_get_int(qobject_to_qint(obj)));
|
||||
assert(n < sizeof(buf));
|
||||
value = buf;
|
||||
break;
|
||||
case QTYPE_QFLOAT:
|
||||
n = snprintf(buf, sizeof(buf), "%.17g",
|
||||
qfloat_get_double(qobject_to_qfloat(obj)));
|
||||
assert(n < sizeof(buf));
|
||||
value = buf;
|
||||
case QTYPE_QNUM:
|
||||
tmp = qnum_to_string(qobject_to_qnum(obj));
|
||||
value = tmp;
|
||||
break;
|
||||
case QTYPE_QBOOL:
|
||||
pstrcpy(buf, sizeof(buf),
|
||||
|
@ -975,13 +966,14 @@ static void qemu_opts_from_qdict_1(const char *key, QObject *obj, void *opaque)
|
|||
}
|
||||
|
||||
qemu_opt_set(state->opts, key, value, state->errp);
|
||||
g_free(tmp);
|
||||
}
|
||||
|
||||
/*
|
||||
* Create QemuOpts from a QDict.
|
||||
* Use value of key "id" as ID if it exists and is a QString.
|
||||
* Only QStrings, QInts, QFloats and QBools are copied. Entries with
|
||||
* other types are silently ignored.
|
||||
* Use value of key "id" as ID if it exists and is a QString. Only
|
||||
* QStrings, QNums and QBools are copied. Entries with other types
|
||||
* are silently ignored.
|
||||
*/
|
||||
QemuOpts *qemu_opts_from_qdict(QemuOptsList *list, const QDict *qdict,
|
||||
Error **errp)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue