[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 RESEND 01/20] qom: Introduce object_class_get_lis
From: |
Andreas Färber |
Subject: |
[Qemu-devel] [PATCH v2 RESEND 01/20] qom: Introduce object_class_get_list() |
Date: |
Sat, 10 Mar 2012 17:53:37 +0100 |
This function allows to obtain a singly-linked list of classes, which
can be sorted by the caller.
Signed-off-by: Andreas Färber <address@hidden>
Cc: Anthony Liguori <address@hidden>
---
include/qemu/object.h | 11 +++++++++++
qom/object.c | 17 +++++++++++++++++
2 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/include/qemu/object.h b/include/qemu/object.h
index ec2d294..e8fc126 100644
--- a/include/qemu/object.h
+++ b/include/qemu/object.h
@@ -560,6 +560,17 @@ ObjectClass *object_class_by_name(const char *typename);
void object_class_foreach(void (*fn)(ObjectClass *klass, void *opaque),
const char *implements_type, bool include_abstract,
void *opaque);
+
+/**
+ * object_class_get_list:
+ * @implements_type: The type to filter for, including its derivatives.
+ * @include_abstract: Whether to include abstract classes.
+ *
+ * Returns: A singly-linked list of the classes in reverse hashtable order.
+ */
+GSList *object_class_get_list(const char *implements_type,
+ bool include_abstract);
+
/**
* object_ref:
* @obj: the object
diff --git a/qom/object.c b/qom/object.c
index aa037d2..eef0b22 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -572,6 +572,23 @@ void object_class_foreach(void (*fn)(ObjectClass *klass,
void *opaque),
g_hash_table_foreach(type_table_get(), object_class_foreach_tramp, &data);
}
+static void object_class_get_list_tramp(ObjectClass *klass, void *opaque)
+{
+ GSList **list = opaque;
+
+ *list = g_slist_prepend(*list, klass);
+}
+
+GSList *object_class_get_list(const char *implements_type,
+ bool include_abstract)
+{
+ GSList *list = NULL;
+
+ object_class_foreach(object_class_get_list_tramp,
+ implements_type, include_abstract, &list);
+ return list;
+}
+
void object_ref(Object *obj)
{
obj->ref++;
--
1.7.7
- Re: [Qemu-devel] [PATCH RFC v4 44/44] qom: Introduce CPU class, (continued)
- Re: [Qemu-devel] [PATCH RFC v4 44/44] qom: Introduce CPU class, Anthony Liguori, 2012/03/13
- Re: [Qemu-devel] [PATCH RFC v4 44/44] qom: Introduce CPU class, Igor Mitsyanko, 2012/03/14
- Re: [Qemu-devel] [PATCH RFC v4 44/44] qom: Introduce CPU class, Anthony Liguori, 2012/03/14
- Re: [Qemu-devel] [PATCH RFC v4 44/44] qom: Introduce CPU class, Andreas Färber, 2012/03/14
- Re: [Qemu-devel] [PATCH RFC v4 44/44] qom: Introduce CPU class, Anthony Liguori, 2012/03/14
- Re: [Qemu-devel] [PATCH RFC v4 44/44] qom: Introduce CPU class, Andreas Färber, 2012/03/14
- Re: [Qemu-devel] [PATCH RFC v4 44/44] qom: Introduce CPU class, Anthony Liguori, 2012/03/14
[Qemu-devel] [PATCH RFC v4 00/20] QOM'ify ARM CPU, Andreas Färber, 2012/03/10
[Qemu-devel] [PATCH RFC v4 13/20] target-arm: Store VFP FPSID register in ARMCPUClass, Andreas Färber, 2012/03/10
[Qemu-devel] [PATCH RFC v4 07/20] target-arm: No longer abort on unhandled CPUIDs on reset, Andreas Färber, 2012/03/10
[Qemu-devel] [PATCH RFC v4 10/20] target-arm: Store SCTLR in ARMCPUClass, Andreas Färber, 2012/03/10
[Qemu-devel] [PATCH RFC v4 09/20] target-arm: Store CTR in ARMCPUClass, Andreas Färber, 2012/03/10
[Qemu-devel] [PATCH RFC v4 18/20] target-arm: Add cpuid-{variant, revision} properties to CPU, Andreas Färber, 2012/03/10
[Qemu-devel] [PATCH RFC v4 19/20] target-arm: Simplify pxa270 CPU classes, Andreas Färber, 2012/03/10