Steve Sistare <[email protected]> writes:
> Signed-off-by: Steve Sistare <[email protected]>
> Reviewed-by: Marc-André Lureau <[email protected]>
> ---
> include/qapi/util.h | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/include/qapi/util.h b/include/qapi/util.h
> index 81a2b13..e1b8b1d 100644
> --- a/include/qapi/util.h
> +++ b/include/qapi/util.h
> @@ -56,4 +56,17 @@ int parse_qapi_name(const char *name, bool complete);
> (tail) = &(*(tail))->next; \
> } while (0)
>
> +/*
> + * For any GenericList @list, return its length.
> + */
> +#define QAPI_LIST_LENGTH(list) \
> + ({ \
> + int len = 0; \
size_t
> + typeof(list) elem; \
Name this @tail, please.
> + for (elem = list; elem != NULL; elem = elem->next) { \
> + len++; \
> + } \
> + len; \
> + })
> +
> #endif
This is a macro instead of a function so users don't have to cast their
FooList * to GenericList *.
The only user outside tests is strv_from_strList(). I'd be tempted to
open-code it there and call it a day. Or do you have more users in
mind?
If we keep the macro, please align the backslashes like this:
#define QAPI_LIST_LENGTH(list) \
({ \
int len = 0; \
typeof(list) elem; \
for (elem = list; elem != NULL; elem = elem->next) { \
len++; \
} \
len; \
})