diff --git a/ginfo.c b/ginfo.c index 75ced84e8..aa03bc30b 100644 --- a/ginfo.c +++ b/ginfo.c @@ -1838,3 +1838,19 @@ g_union_info_get_discriminator (GIUnionInfo *info, return NULL; } + +GIFunctionInfo * +g_union_info_find_method (GIUnionInfo *info, + const gchar *name) +{ + gint offset; + GIBaseInfo *base = (GIBaseInfo *)info; + Header *header = (Header *)base->typelib->data; + StructBlob *blob = (UnionBlob *)&base->typelib->data[base->offset]; + + offset = base->offset + header->union_blob_size + + blob->n_fields * header->field_blob_size; + + return find_method (base, offset, blob->n_methods, name); +} + diff --git a/girepository.h b/girepository.h index 0b28e40af..42db8d33c 100644 --- a/girepository.h +++ b/girepository.h @@ -362,6 +362,8 @@ gint g_union_info_get_discriminator_offset (GIUnionInfo *info) GITypeInfo * g_union_info_get_discriminator_type (GIUnionInfo *info); GIConstantInfo * g_union_info_get_discriminator (GIUnionInfo *info, gint n); +GIFunctionInfo * g_union_info_find_method (GIUnionInfo *info, + const gchar *name); /* GIStructInfo */