mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-08-04 06:51:01 +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 object_class_foreach_aarch64
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_aarch64
|
||||||
#define object_class_get_parent object_class_get_parent_aarch64
|
#define object_class_get_parent object_class_get_parent_aarch64
|
||||||
#define object_deinit object_deinit_aarch64
|
#define object_deinit object_deinit_aarch64
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_aarch64eb
|
#define object_class_foreach object_class_foreach_aarch64eb
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_aarch64eb
|
||||||
#define object_class_get_parent object_class_get_parent_aarch64eb
|
#define object_class_get_parent object_class_get_parent_aarch64eb
|
||||||
#define object_deinit object_deinit_aarch64eb
|
#define object_deinit object_deinit_aarch64eb
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_arm
|
#define object_class_foreach object_class_foreach_arm
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_arm
|
||||||
#define object_class_get_parent object_class_get_parent_arm
|
#define object_class_get_parent object_class_get_parent_arm
|
||||||
#define object_deinit object_deinit_arm
|
#define object_deinit object_deinit_arm
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_armeb
|
#define object_class_foreach object_class_foreach_armeb
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_armeb
|
||||||
#define object_class_get_parent object_class_get_parent_armeb
|
#define object_class_get_parent object_class_get_parent_armeb
|
||||||
#define object_deinit object_deinit_armeb
|
#define object_deinit object_deinit_armeb
|
||||||
|
|
|
@ -1881,6 +1881,7 @@ symbols = (
|
||||||
'object_class_foreach',
|
'object_class_foreach',
|
||||||
'object_class_foreach_tramp',
|
'object_class_foreach_tramp',
|
||||||
'object_class_get_list',
|
'object_class_get_list',
|
||||||
|
'object_class_get_list_sorted',
|
||||||
'object_class_get_list_tramp',
|
'object_class_get_list_tramp',
|
||||||
'object_class_get_parent',
|
'object_class_get_parent',
|
||||||
'object_deinit',
|
'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,
|
GSList *object_class_get_list(struct uc_struct *uc, const char *implements_type,
|
||||||
bool include_abstract);
|
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:
|
* object_ref:
|
||||||
* @obj: the object
|
* @obj: the object
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_m68k
|
#define object_class_foreach object_class_foreach_m68k
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_m68k
|
||||||
#define object_class_get_parent object_class_get_parent_m68k
|
#define object_class_get_parent object_class_get_parent_m68k
|
||||||
#define object_deinit object_deinit_m68k
|
#define object_deinit object_deinit_m68k
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_mips
|
#define object_class_foreach object_class_foreach_mips
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_mips
|
||||||
#define object_class_get_parent object_class_get_parent_mips
|
#define object_class_get_parent object_class_get_parent_mips
|
||||||
#define object_deinit object_deinit_mips
|
#define object_deinit object_deinit_mips
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_mips64
|
#define object_class_foreach object_class_foreach_mips64
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_mips64
|
||||||
#define object_class_get_parent object_class_get_parent_mips64
|
#define object_class_get_parent object_class_get_parent_mips64
|
||||||
#define object_deinit object_deinit_mips64
|
#define object_deinit object_deinit_mips64
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_mips64el
|
#define object_class_foreach object_class_foreach_mips64el
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_mips64el
|
||||||
#define object_class_get_parent object_class_get_parent_mips64el
|
#define object_class_get_parent object_class_get_parent_mips64el
|
||||||
#define object_deinit object_deinit_mips64el
|
#define object_deinit object_deinit_mips64el
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_mipsel
|
#define object_class_foreach object_class_foreach_mipsel
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_mipsel
|
||||||
#define object_class_get_parent object_class_get_parent_mipsel
|
#define object_class_get_parent object_class_get_parent_mipsel
|
||||||
#define object_deinit object_deinit_mipsel
|
#define object_deinit object_deinit_mipsel
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_powerpc
|
#define object_class_foreach object_class_foreach_powerpc
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_powerpc
|
||||||
#define object_class_get_parent object_class_get_parent_powerpc
|
#define object_class_get_parent object_class_get_parent_powerpc
|
||||||
#define object_deinit object_deinit_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;
|
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)
|
void object_ref(Object *obj)
|
||||||
{
|
{
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_sparc
|
#define object_class_foreach object_class_foreach_sparc
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_sparc
|
||||||
#define object_class_get_parent object_class_get_parent_sparc
|
#define object_class_get_parent object_class_get_parent_sparc
|
||||||
#define object_deinit object_deinit_sparc
|
#define object_deinit object_deinit_sparc
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_sparc64
|
#define object_class_foreach object_class_foreach_sparc64
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_sparc64
|
||||||
#define object_class_get_parent object_class_get_parent_sparc64
|
#define object_class_get_parent object_class_get_parent_sparc64
|
||||||
#define object_deinit object_deinit_sparc64
|
#define object_deinit object_deinit_sparc64
|
||||||
|
|
|
@ -1875,6 +1875,7 @@
|
||||||
#define object_class_foreach object_class_foreach_x86_64
|
#define object_class_foreach object_class_foreach_x86_64
|
||||||
#define object_class_foreach_tramp object_class_foreach_tramp_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 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_list_tramp object_class_get_list_tramp_x86_64
|
||||||
#define object_class_get_parent object_class_get_parent_x86_64
|
#define object_class_get_parent object_class_get_parent_x86_64
|
||||||
#define object_deinit object_deinit_x86_64
|
#define object_deinit object_deinit_x86_64
|
||||||
|
|
Loading…
Reference in a new issue