summaryrefslogtreecommitdiff
path: root/qobject/qjson.c
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2020-04-15 10:30:46 +0200
committerMarkus Armbruster <armbru@redhat.com>2020-04-30 06:51:15 +0200
commit2f2ec111795119b2e020bc0cbf4b5f42878574b2 (patch)
treeb4e60346dc8c6f5ea8e59013e85853dd1d960af6 /qobject/qjson.c
parent1cd7741ef18e4333b17d64aaed3cd48e3e182a57 (diff)
downloadqemu-2f2ec111795119b2e020bc0cbf4b5f42878574b2.zip
qobject: Eliminate qlist_iter(), use QLIST_FOREACH_ENTRY() instead
qlist_iter() has just three uses outside tests/. Replace by QLIST_FOREACH_ENTRY() for more concise code and less type punning. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20200415083048.14339-4-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
Diffstat (limited to 'qobject/qjson.c')
-rw-r--r--qobject/qjson.c31
1 files changed, 11 insertions, 20 deletions
diff --git a/qobject/qjson.c b/qobject/qjson.c
index 87422f600d..f0eebc5fda 100644
--- a/qobject/qjson.c
+++ b/qobject/qjson.c
@@ -191,20 +191,6 @@ static void to_json_dict_iter(const char *key, QObject *obj, void *opaque)
s->count++;
}
-static void to_json_list_iter(QObject *obj, void *opaque)
-{
- ToJsonIterState *s = opaque;
-
- if (s->count) {
- qstring_append(s->str, s->pretty ? "," : ", ");
- }
-
- json_pretty_newline(s->str, s->pretty, s->indent);
-
- to_json(obj, s->str, s->pretty, s->indent);
- s->count++;
-}
-
static void to_json(const QObject *obj, QString *str, int pretty, int indent)
{
switch (qobject_type(obj)) {
@@ -289,15 +275,20 @@ static void to_json(const QObject *obj, QString *str, int pretty, int indent)
break;
}
case QTYPE_QLIST: {
- ToJsonIterState s;
QList *val = qobject_to(QList, obj);
+ const char *comma = pretty ? "," : ", ";
+ const char *sep = "";
+ QListEntry *entry;
- s.count = 0;
- s.str = str;
- s.indent = indent + 1;
- s.pretty = pretty;
qstring_append(str, "[");
- qlist_iter(val, (void *)to_json_list_iter, &s);
+
+ QLIST_FOREACH_ENTRY(val, entry) {
+ qstring_append(str, sep);
+ json_pretty_newline(str, pretty, indent + 1);
+ to_json(qlist_entry_obj(entry), str, pretty, indent + 1);
+ sep = comma;
+ }
+
json_pretty_newline(str, pretty, indent);
qstring_append(str, "]");
break;