[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 4/8] qnum: qnum_value_is_equal() function
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v2 4/8] qnum: qnum_value_is_equal() function |
Date: |
Thu, 19 Nov 2020 11:27:40 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Eduardo Habkost <ehabkost@redhat.com> writes:
> Extract the QNum value comparison logic to a function that takes
> QNumValue* as argument.
>
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
> include/qapi/qmp/qnum.h | 1 +
> qobject/qnum.c | 29 +++++++++++++++++++----------
> 2 files changed, 20 insertions(+), 10 deletions(-)
>
> diff --git a/include/qapi/qmp/qnum.h b/include/qapi/qmp/qnum.h
> index 62fbdfda68..0327ecd0f0 100644
> --- a/include/qapi/qmp/qnum.h
> +++ b/include/qapi/qmp/qnum.h
> @@ -106,6 +106,7 @@ double qnum_get_double(const QNum *qn);
>
> char *qnum_to_string(QNum *qn);
>
> +bool qnum_value_is_equal(const QNumValue *num_x, const QNumValue *num_y);
> bool qnum_is_equal(const QObject *x, const QObject *y);
> void qnum_destroy_obj(QObject *obj);
>
> diff --git a/qobject/qnum.c b/qobject/qnum.c
> index f80d4efd76..6a0f948b16 100644
> --- a/qobject/qnum.c
> +++ b/qobject/qnum.c
> @@ -207,9 +207,9 @@ char *qnum_to_string(QNum *qn)
> }
>
> /**
> - * qnum_is_equal(): Test whether the two QNums are equal
> - * @x: QNum object
> - * @y: QNum object
> + * qnum_value_is_equal(): Test whether two QNumValues are equal
> + * @num_x: QNum value
> + * @num_y: QNum value
> *
> * Negative integers are never considered equal to unsigned integers,
> * but positive integers in the range [0, INT64_MAX] are considered
> @@ -217,13 +217,8 @@ char *qnum_to_string(QNum *qn)
> *
> * Doubles are never considered equal to integers.
> */
> -bool qnum_is_equal(const QObject *x, const QObject *y)
> +bool qnum_value_is_equal(const QNumValue *num_x, const QNumValue *num_y)
> {
> - const QNum *qnum_x = qobject_to(QNum, x);
> - const QNum *qnum_y = qobject_to(QNum, y);
> - const QNumValue *num_x = &qnum_x->value;
> - const QNumValue *num_y = &qnum_y->value;
> -
> switch (num_x->kind) {
> case QNUM_I64:
> switch (num_y->kind) {
> @@ -241,7 +236,7 @@ bool qnum_is_equal(const QObject *x, const QObject *y)
> case QNUM_U64:
> switch (num_y->kind) {
> case QNUM_I64:
> - return qnum_is_equal(y, x);
> + return qnum_value_is_equal(num_y, num_x);
> case QNUM_U64:
> /* Comparison in native uint64_t type */
> return num_x->u.u64 == num_y->u.u64;
> @@ -264,6 +259,20 @@ bool qnum_is_equal(const QObject *x, const QObject *y)
> abort();
> }
>
> +/**
> + * qnum_is_equal(): Test whether the two QNums are equal
> + * @x: QNum object
> + * @y: QNum object
> + *
> + * See qnum_value_is_equal() for details on the comparison rules.
> + */
> +bool qnum_is_equal(const QObject *x, const QObject *y)
> +{
> + const QNum *qnum_x = qobject_to(QNum, x);
> + const QNum *qnum_y = qobject_to(QNum, y);
Humor me: blank line between declarations and statements, please.
> + return qnum_value_is_equal(&qnum_x->value, &qnum_y->value);
> +}
> +
> /**
> * qnum_destroy_obj(): Free all memory allocated by a QNum object
> *
[PATCH v2 4/8] qnum: qnum_value_is_equal() function, Eduardo Habkost, 2020/11/16
Re: [PATCH v2 4/8] qnum: qnum_value_is_equal() function,
Markus Armbruster <=
[PATCH v2 7/8] qom: Make object_property_set_default() public, Eduardo Habkost, 2020/11/16
[PATCH v2 8/8] qom: Use qlit to represent property defaults, Eduardo Habkost, 2020/11/16
[PATCH v2 6/8] qlit: qlit_type() function, Eduardo Habkost, 2020/11/16