[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 06/14] qlit: make qlit_equal_qobject return a bo
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH 06/14] qlit: make qlit_equal_qobject return a bool |
Date: |
Fri, 25 Aug 2017 08:55:00 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
Marc-André Lureau <address@hidden> writes:
> Make it more obvious about the expected return values.
>
> Signed-off-by: Marc-André Lureau <address@hidden>
> ---
> include/qapi/qmp/qlit.h | 2 +-
> qobject/qlit.c | 18 +++++++++---------
> tests/check-qjson.c | 14 +++++++-------
> 3 files changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/include/qapi/qmp/qlit.h b/include/qapi/qmp/qlit.h
> index e299e8fab0..2e22d0f73c 100644
> --- a/include/qapi/qmp/qlit.h
> +++ b/include/qapi/qmp/qlit.h
> @@ -44,6 +44,6 @@ struct QLitDictEntry {
> #define QLIT_QLIST(val) \
> { .type = QTYPE_QLIST, .value.qlist = (val) }
>
> -int qlit_equal_qobject(QLitObject *lhs, QObject *rhs);
> +bool qlit_equal_qobject(QLitObject *lhs, QObject *rhs);
>
> #endif /* QLIT_H_ */
> diff --git a/qobject/qlit.c b/qobject/qlit.c
> index 0c4101898d..a2975bef3f 100644
> --- a/qobject/qlit.c
> +++ b/qobject/qlit.c
> @@ -21,19 +21,19 @@
> typedef struct QListCompareHelper {
> int index;
> QLitObject *objs;
> - int result;
> + bool result;
> } QListCompareHelper;
>
> static void compare_helper(QObject *obj, void *opaque)
> {
> QListCompareHelper *helper = opaque;
>
> - if (helper->result == 0) {
> + if (!helper->result) {
> return;
> }
>
> if (helper->objs[helper->index].type == QTYPE_NONE) {
> - helper->result = 0;
> + helper->result = false;
> return;
> }
>
> @@ -41,12 +41,12 @@ static void compare_helper(QObject *obj, void *opaque)
> qlit_equal_qobject(&helper->objs[helper->index++], obj);
> }
>
> -int qlit_equal_qobject(QLitObject *lhs, QObject *rhs)
> +bool qlit_equal_qobject(QLitObject *lhs, QObject *rhs)
> {
> int64_t val;
>
> if (!rhs || lhs->type != qobject_type(rhs)) {
> - return 0;
> + return false;
> }
>
> switch (lhs->type) {
> @@ -64,18 +64,18 @@ int qlit_equal_qobject(QLitObject *lhs, QObject *rhs)
> lhs->value.qdict[i].key);
>
> if (!qlit_equal_qobject(&lhs->value.qdict[i].value, obj)) {
> - return 0;
> + return false;
> }
> }
>
> - return 1;
> + return true;
> }
> case QTYPE_QLIST: {
> QListCompareHelper helper;
>
> helper.index = 0;
> helper.objs = lhs->value.qlist;
> - helper.result = 1;
> + helper.result = true;
>
> qlist_iter(qobject_to_qlist(rhs), compare_helper, &helper);
>
Let's use QLIST_FOREACH_ENTRY() rather than qlist_iter() with awkward
callback machinery. Could be done before this patch (might reduce
churn) or after. Even as a follow-up patch.
Speaking of additional cleanup: qlit_equal_dict() clones its QDict
argument for no good reason. Drop the clone and compare
qdict_size(dict) == i instead. Same result except when you got
duplicates in your QLitObject, but that's a silly programming error I
wouldn't bother to cope with or catch.
> @@ -85,5 +85,5 @@ int qlit_equal_qobject(QLitObject *lhs, QObject *rhs)
> break;
> }
>
> - return 0;
> + return false;
> }
> diff --git a/tests/check-qjson.c b/tests/check-qjson.c
> index e5ca273cbc..59227934ce 100644
> --- a/tests/check-qjson.c
> +++ b/tests/check-qjson.c
> @@ -1094,13 +1094,13 @@ static void simple_dict(void)
> QString *str;
>
> obj = qobject_from_json(test_cases[i].encoded, &error_abort);
> - g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj) == 1);
> + g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj));
>
> str = qobject_to_json(obj);
> qobject_decref(obj);
>
> obj = qobject_from_json(qstring_get_str(str), &error_abort);
> - g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj) == 1);
> + g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj));
> qobject_decref(obj);
> QDECREF(str);
> }
> @@ -1203,13 +1203,13 @@ static void simple_list(void)
> QString *str;
>
> obj = qobject_from_json(test_cases[i].encoded, &error_abort);
> - g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj) == 1);
> + g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj));
>
> str = qobject_to_json(obj);
> qobject_decref(obj);
>
> obj = qobject_from_json(qstring_get_str(str), &error_abort);
> - g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj) == 1);
> + g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj));
> qobject_decref(obj);
> QDECREF(str);
> }
> @@ -1265,13 +1265,13 @@ static void simple_whitespace(void)
> QString *str;
>
> obj = qobject_from_json(test_cases[i].encoded, &error_abort);
> - g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj) == 1);
> + g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj));
>
> str = qobject_to_json(obj);
> qobject_decref(obj);
>
> obj = qobject_from_json(qstring_get_str(str), &error_abort);
> - g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj) == 1);
> + g_assert(qlit_equal_qobject(&test_cases[i].decoded, obj));
>
> qobject_decref(obj);
> QDECREF(str);
> @@ -1295,7 +1295,7 @@ static void simple_varargs(void)
> g_assert(embedded_obj != NULL);
>
> obj = qobject_from_jsonf("[%d, 2, %p]", 1, embedded_obj);
> - g_assert(qlit_equal_qobject(&decoded, obj) == 1);
> + g_assert(qlit_equal_qobject(&decoded, obj));
>
> qobject_decref(obj);
> }
Reviewed-by: Markus Armbruster <address@hidden>
I encourage you to pursue the additional cleanups I outlined above.
- [Qemu-devel] [PATCH 02/14] qlit: move qlit from check-qjson to qobject/, (continued)
- [Qemu-devel] [PATCH 02/14] qlit: move qlit from check-qjson to qobject/, Marc-André Lureau, 2017/08/24
- [Qemu-devel] [PATCH 03/14] qlit: use QLit prefix consistently, Marc-André Lureau, 2017/08/24
- [Qemu-devel] [PATCH 04/14] qlit: remove needless type cast, Marc-André Lureau, 2017/08/24
- [Qemu-devel] [PATCH 05/14] qlit: rename compare_litqobj_to_qobj, Marc-André Lureau, 2017/08/24
- [Qemu-devel] [PATCH 06/14] qlit: make qlit_equal_qobject return a bool, Marc-André Lureau, 2017/08/24
- Re: [Qemu-devel] [PATCH 06/14] qlit: make qlit_equal_qobject return a bool,
Markus Armbruster <=
- [Qemu-devel] [PATCH 08/14] qlit: add QLIT_QNULL and QLIT_BOOL, Marc-André Lureau, 2017/08/24
- [Qemu-devel] [PATCH 07/14] qlit: make qlit_equal_qobject() take const arguments, Marc-André Lureau, 2017/08/24
- [Qemu-devel] [PATCH 09/14] qlit: replace assert(qnum_get_try_int), Marc-André Lureau, 2017/08/24
- [Qemu-devel] [PATCH 11/14] qlit: improve QLit dict vs qdict comparison, Marc-André Lureau, 2017/08/24
- [Qemu-devel] [PATCH 10/14] tests: add qlit tests, Marc-André Lureau, 2017/08/24
- [Qemu-devel] [PATCH 12/14] qlit: improve QLit list vs qlist comparison, Marc-André Lureau, 2017/08/24