mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-08-04 05:01:13 +00:00
qom: introduce object_class_get_list_sorted
Unify half a dozen copies of very similar code (the only difference being whether comparisons were case-sensitive) and use it also in Tricore, which did not do any sorting of CPU model names. Backports commit 47c66009ab793241e8210b3018c77a9ce9506aa8 from qemu
This commit is contained in:
parent
8b20dfcba5
commit
37117a74ed
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_aarch64
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_aarch64
|
||||
#define object_class_get_list object_class_get_list_aarch64
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_aarch64
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_aarch64
|
||||
#define object_class_get_parent object_class_get_parent_aarch64
|
||||
#define object_deinit object_deinit_aarch64
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_aarch64eb
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_aarch64eb
|
||||
#define object_class_get_list object_class_get_list_aarch64eb
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_aarch64eb
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_aarch64eb
|
||||
#define object_class_get_parent object_class_get_parent_aarch64eb
|
||||
#define object_deinit object_deinit_aarch64eb
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_arm
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_arm
|
||||
#define object_class_get_list object_class_get_list_arm
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_arm
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_arm
|
||||
#define object_class_get_parent object_class_get_parent_arm
|
||||
#define object_deinit object_deinit_arm
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_armeb
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_armeb
|
||||
#define object_class_get_list object_class_get_list_armeb
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_armeb
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_armeb
|
||||
#define object_class_get_parent object_class_get_parent_armeb
|
||||
#define object_deinit object_deinit_armeb
|
||||
|
|
|
@ -1881,6 +1881,7 @@ symbols = (
|
|||
'object_class_foreach',
|
||||
'object_class_foreach_tramp',
|
||||
'object_class_get_list',
|
||||
'object_class_get_list_sorted',
|
||||
'object_class_get_list_tramp',
|
||||
'object_class_get_parent',
|
||||
'object_deinit',
|
||||
|
|
|
@ -800,6 +800,17 @@ void object_class_foreach(struct uc_struct *uc, void (*fn)(ObjectClass *klass, v
|
|||
GSList *object_class_get_list(struct uc_struct *uc, const char *implements_type,
|
||||
bool include_abstract);
|
||||
|
||||
/**
|
||||
* object_class_get_list_sorted:
|
||||
* @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 alphabetical
|
||||
* case-insensitive order.
|
||||
*/
|
||||
GSList *object_class_get_list_sorted(struct uc_struct *uc, const char *implements_type,
|
||||
bool include_abstract);
|
||||
|
||||
/**
|
||||
* object_ref:
|
||||
* @obj: the object
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_m68k
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_m68k
|
||||
#define object_class_get_list object_class_get_list_m68k
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_m68k
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_m68k
|
||||
#define object_class_get_parent object_class_get_parent_m68k
|
||||
#define object_deinit object_deinit_m68k
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_mips
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_mips
|
||||
#define object_class_get_list object_class_get_list_mips
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_mips
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_mips
|
||||
#define object_class_get_parent object_class_get_parent_mips
|
||||
#define object_deinit object_deinit_mips
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_mips64
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_mips64
|
||||
#define object_class_get_list object_class_get_list_mips64
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_mips64
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_mips64
|
||||
#define object_class_get_parent object_class_get_parent_mips64
|
||||
#define object_deinit object_deinit_mips64
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_mips64el
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_mips64el
|
||||
#define object_class_get_list object_class_get_list_mips64el
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_mips64el
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_mips64el
|
||||
#define object_class_get_parent object_class_get_parent_mips64el
|
||||
#define object_deinit object_deinit_mips64el
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_mipsel
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_mipsel
|
||||
#define object_class_get_list object_class_get_list_mipsel
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_mipsel
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_mipsel
|
||||
#define object_class_get_parent object_class_get_parent_mipsel
|
||||
#define object_deinit object_deinit_mipsel
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_powerpc
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_powerpc
|
||||
#define object_class_get_list object_class_get_list_powerpc
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_powerpc
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_powerpc
|
||||
#define object_class_get_parent object_class_get_parent_powerpc
|
||||
#define object_deinit object_deinit_powerpc
|
||||
|
|
|
@ -767,6 +767,19 @@ GSList *object_class_get_list(struct uc_struct *uc, const char *implements_type,
|
|||
return list;
|
||||
}
|
||||
|
||||
static gint object_class_cmp(gconstpointer a, gconstpointer b)
|
||||
{
|
||||
return strcasecmp(object_class_get_name((ObjectClass *)a),
|
||||
object_class_get_name((ObjectClass *)b));
|
||||
}
|
||||
|
||||
GSList *object_class_get_list_sorted(struct uc_struct *uc, const char *implements_type,
|
||||
bool include_abstract)
|
||||
{
|
||||
return g_slist_sort(object_class_get_list(uc, implements_type, include_abstract),
|
||||
object_class_cmp);
|
||||
}
|
||||
|
||||
void object_ref(Object *obj)
|
||||
{
|
||||
if (!obj) {
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_sparc
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_sparc
|
||||
#define object_class_get_list object_class_get_list_sparc
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_sparc
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_sparc
|
||||
#define object_class_get_parent object_class_get_parent_sparc
|
||||
#define object_deinit object_deinit_sparc
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_sparc64
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_sparc64
|
||||
#define object_class_get_list object_class_get_list_sparc64
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_sparc64
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_sparc64
|
||||
#define object_class_get_parent object_class_get_parent_sparc64
|
||||
#define object_deinit object_deinit_sparc64
|
||||
|
|
|
@ -1875,6 +1875,7 @@
|
|||
#define object_class_foreach object_class_foreach_x86_64
|
||||
#define object_class_foreach_tramp object_class_foreach_tramp_x86_64
|
||||
#define object_class_get_list object_class_get_list_x86_64
|
||||
#define object_class_get_list_sorted object_class_get_list_sorted_x86_64
|
||||
#define object_class_get_list_tramp object_class_get_list_tramp_x86_64
|
||||
#define object_class_get_parent object_class_get_parent_x86_64
|
||||
#define object_deinit object_deinit_x86_64
|
||||
|
|
Loading…
Reference in a new issue