qom: introduce type_register_static_array()

it will help to remove code duplication of registration
static types in places that have open coded loop to
perform batch type registering.

Backports commit aa04c9d20704fa5b9ab239d5111adbcce5f49808 from qemu
This commit is contained in:
Igor Mammedov 2018-03-05 03:49:38 -05:00 committed by Lioncash
parent 0c06666800
commit c97583fc42
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7
2 changed files with 19 additions and 0 deletions

View file

@ -675,6 +675,16 @@ Type type_register_static(struct uc_struct *uc, const TypeInfo *info);
*/
Type type_register(struct uc_struct *uc, const TypeInfo *info);
/**
* type_register_static_array:
* @infos: The array of the new type #TypeInfo structures.
* @nr_infos: number of entries in @infos
*
* @infos and all of the strings it points to should exist for the life time
* that the type is registered.
*/
void type_register_static_array(struct uc_struct *uc, const TypeInfo *infos, int nr_infos);
/**
* object_class_dynamic_cast_assert:
* @klass: The #ObjectClass to attempt to cast.

View file

@ -145,6 +145,15 @@ TypeImpl *type_register_static(struct uc_struct *uc, const TypeInfo *info)
return type_register(uc, info);
}
void type_register_static_array(struct uc_struct *uc, const TypeInfo *infos, int nr_infos)
{
int i;
for (i = 0; i < nr_infos; i++) {
type_register_static(uc, &infos[i]);
}
}
static TypeImpl *type_get_by_name(struct uc_struct *uc, const char *name)
{
if (name == NULL) {