[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 02/24] qom: add object_child_foreach
From: |
Andreas Färber |
Subject: |
Re: [Qemu-devel] [PATCH v2 02/24] qom: add object_child_foreach |
Date: |
Thu, 12 Apr 2012 18:03:14 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120312 Thunderbird/11.0 |
Am 11.04.2012 23:30, schrieb Paolo Bonzini:
> A utility function that will be used to implement hierarchical realization.
>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> include/qemu/object.h | 14 +++++++++++++-
> qom/object.c | 17 +++++++++++++++++
> 2 files changed, 30 insertions(+), 1 deletion(-)
>
> diff --git a/include/qemu/object.h b/include/qemu/object.h
> index f814521..470efe3 100644
> --- a/include/qemu/object.h
> +++ b/include/qemu/object.h
> @@ -918,6 +918,19 @@ void object_property_add_str(Object *obj, const char
> *name,
> struct Error **errp);
>
> /**
> + * object_child_foreach:
> + * @obj: the object whose children will be navigated
> + * @fn: the iterator function to be called
> + * @opaque: an opaque value that will be passed to the iterator
> + *
> + * Call @fn passing each child of @obj and @opaque to it, until @fn returns
> + * non-zero. Return the last value returned by @fn, or 0 if there is no
> + * child.
> + */
> +int object_child_foreach(Object *obj, int (*fn)(Object *child, void *opaque),
> + void *opaque);
> +
> +/**
> * container_get:
> * @path: path to the container
> *
> @@ -928,5 +941,4 @@ void object_property_add_str(Object *obj, const char
> *name,
> */
> Object *container_get(const char *path);
>
> -
Unrelated whitespace change. I intentionally leave two empty lines
before #endif in my header files. Otherwise looks okay.
Andreas
> #endif
> diff --git a/qom/object.c b/qom/object.c
> index 3e9fed7..4975d93 100644
> --- a/qom/object.c
> +++ b/qom/object.c
> @@ -597,6 +597,23 @@ void object_class_foreach(void (*fn)(ObjectClass *klass,
> void *opaque),
> g_hash_table_foreach(type_table_get(), object_class_foreach_tramp,
> &data);
> }
>
> +int object_child_foreach(Object *obj, int (*fn)(Object *child, void *opaque),
> + void *opaque)
> +{
> + ObjectProperty *prop;
> + int ret = 0;
> +
> + QTAILQ_FOREACH(prop, &obj->properties, node) {
> + if (strstart(prop->type, "child<", NULL)) {
> + ret = fn(prop->opaque, opaque);
> + if (ret != 0) {
> + break;
> + }
> + }
> + }
> + return ret;
> +}
> +
> static void object_class_get_list_tramp(ObjectClass *klass, void *opaque)
> {
> GSList **list = opaque;
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
- [Qemu-devel] [PATCH 00/24] qdev properties final installment: push, push!, Paolo Bonzini, 2012/04/11
- [Qemu-devel] [PATCH v2 01/24] qom: add object_class_get_parent, Paolo Bonzini, 2012/04/11
- [Qemu-devel] [PATCH v2 02/24] qom: add object_child_foreach, Paolo Bonzini, 2012/04/11
- Re: [Qemu-devel] [PATCH v2 02/24] qom: add object_child_foreach,
Andreas Färber <=
- [Qemu-devel] [PATCH v2 03/24] qom: add class_base_init, Paolo Bonzini, 2012/04/11
- [Qemu-devel] [PATCH v2 04/24] qom: make Object a type, Paolo Bonzini, 2012/04/11
- Re: [Qemu-devel] [PATCH v2 04/24] qom: make Object a type, Andreas Färber, 2012/04/12
- [Qemu-devel] [PATCH v2 05/24] qdev: push "type" property up to Object, Paolo Bonzini, 2012/04/11
- [Qemu-devel] [PATCH v2 06/24] qdev: fix -device foo,?, Paolo Bonzini, 2012/04/11