From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:47018) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RshIu-00046i-RM for qemu-devel@nongnu.org; Wed, 01 Feb 2012 16:01:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RshIq-0003KC-SC for qemu-devel@nongnu.org; Wed, 01 Feb 2012 16:01:20 -0500 Received: from cantor2.suse.de ([195.135.220.15]:37757 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RshIq-0003Jy-BH for qemu-devel@nongnu.org; Wed, 01 Feb 2012 16:01:16 -0500 Message-ID: <4F29A78D.8040403@suse.de> Date: Wed, 01 Feb 2012 21:58:53 +0100 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1328125863-6203-1-git-send-email-aliguori@us.ibm.com> <1328125863-6203-8-git-send-email-aliguori@us.ibm.com> In-Reply-To: <1328125863-6203-8-git-send-email-aliguori@us.ibm.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 07/22] qom: allow object_class_foreach to take additional parameters to refine search List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Paolo Bonzini , qemu-devel@nongnu.org, Peter Maydell Am 01.02.2012 20:50, schrieb Anthony Liguori: > Signed-off-by: Anthony Liguori Reviewed-by: Andreas F=E4rber Thanks, Andreas > --- > include/qemu/object.h | 1 + > qom/object.c | 18 ++++++++++++++++-- > 2 files changed, 17 insertions(+), 2 deletions(-) >=20 > diff --git a/include/qemu/object.h b/include/qemu/object.h > index ba37850..adbcfb1 100644 > --- a/include/qemu/object.h > +++ b/include/qemu/object.h > @@ -431,6 +431,7 @@ const char *object_class_get_name(ObjectClass *klas= s); > ObjectClass *object_class_by_name(const char *typename); > =20 > void object_class_foreach(void (*fn)(ObjectClass *klass, void *opaque)= , > + const char *implements_type, bool include_ab= stract, > void *opaque); > =20 > #endif > diff --git a/qom/object.c b/qom/object.c > index a12895f..3dabb1a 100644 > --- a/qom/object.c > +++ b/qom/object.c > @@ -467,6 +467,8 @@ ObjectClass *object_class_by_name(const char *typen= ame) > typedef struct OCFData > { > void (*fn)(ObjectClass *klass, void *opaque); > + const char *implements_type; > + bool include_abstract; > void *opaque; > } OCFData; > =20 > @@ -475,16 +477,28 @@ static void object_class_foreach_tramp(gpointer k= ey, gpointer value, > { > OCFData *data =3D opaque; > TypeImpl *type =3D value; > + ObjectClass *k; > =20 > type_class_init(type); > + k =3D type->class; > =20 > - data->fn(value, type->class); > + if (!data->include_abstract && type->abstract) { > + return; > + } > + > + if (data->implements_type &&=20 > + !object_class_dynamic_cast(k, data->implements_type)) { > + return; > + } > + > + data->fn(k, data->opaque); > } > =20 > void object_class_foreach(void (*fn)(ObjectClass *klass, void *opaque)= , > + const char *implements_type, bool include_ab= stract, > void *opaque) > { > - OCFData data =3D { fn, opaque }; > + OCFData data =3D { fn, implements_type, include_abstract, opaque }= ; > =20 > g_hash_table_foreach(type_table_get(), object_class_foreach_tramp,= &data); > } --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg