## GIUnionInfo

GIUnionInfo — Struct representing a union.

## Synopsis

    #define             GI_IS_UNION_INFO                    (info)
    typedef             GIUnionInfo;
    gint                g_union_info_get_n_fields           (GIUnionInfo *info);
    GIFieldInfo *       g_union_info_get_field              (GIUnionInfo *info,
                                                             gint n);
    gint                g_union_info_get_n_methods          (GIUnionInfo *info);
    GIFunctionInfo *    g_union_info_get_method             (GIUnionInfo *info,
                                                             gint n);
    gboolean            g_union_info_is_discriminated       (GIUnionInfo *info);
    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);
    gsize               g_union_info_get_size               (GIUnionInfo *info);
    gsize               g_union_info_get_alignment          (GIUnionInfo *info);

## Description

GIUnionInfo represents a union type.

A union has methods and fields. Unions can optionally have a discriminator, which is a field deciding what type of real union fields is valid for specified instance.

## Struct hierarchy

      GIBaseInfo
       +----GIRegisteredTypeInfo
             +----GIUnionInfo

## Details

### GI_IS_UNION_INFO()

    #define             GI_IS_UNION_INFO(info)

### GIUnionInfo

    typedef GIBaseInfo GIUnionInfo;

Represents a union.

### g_union_info_get_n_fields ()

    gint                g_union_info_get_n_fields           (GIUnionInfo *info);

Obtain the number of fields this union has.

`info` : | a GIUnionInfo
Returns : | number of fields

### g_union_info_get_field ()

    GIFieldInfo *       g_union_info_get_field              (GIUnionInfo *info,
                                                             gint n);

Obtain the type information for field with specified index.

`info` : | a GIUnionInfo
`n` : | a field index
Returns : | the GIFieldInfo, free it with `g_base_info_unref()` when done. [transfer full]

### g_union_info_get_n_methods ()

    gint                g_union_info_get_n_methods          (GIUnionInfo *info);

Obtain the number of methods this union has.

`info` : | a GIUnionInfo
Returns : | number of methods

### g_union_info_get_method ()

    GIFunctionInfo *    g_union_info_get_method             (GIUnionInfo *info,
                                                             gint n);

Obtain the type information for method with specified index.

`info` : | a GIUnionInfo
`n` : | a method index
Returns : | the GIFunctionInfo, free it with `g_base_info_unref()` when done. [transfer full]

### g_union_info_is_discriminated ()

    gboolean            g_union_info_is_discriminated       (GIUnionInfo *info);

Return true if this union contains discriminator field.

`info` : | a GIUnionInfo
Returns : | `TRUE` if this is a discriminated union, `FALSE` otherwise

### g_union_info_get_discriminator_offset ()

    gint                g_union_info_get_discriminator_offset
                                                            (GIUnionInfo *info);

### g_union_info_get_discriminator_type ()

    GITypeInfo *        g_union_info_get_discriminator_type (GIUnionInfo *info);

Obtain the type information of the union discriminator.

`info` : | a GIUnionInfo
Returns : | the GITypeInfo, free it with `g_base_info_unref()` when done. [transfer full]

### g_union_info_get_discriminator ()

    GIConstantInfo *    g_union_info_get_discriminator      (GIUnionInfo *info,
                                                             gint n);

Obtain discriminator value assigned for n-th union field, i.e. n-th union field is the active one if discriminator contains this constant.

`info` : | a GIUnionInfo
`n` : | a union field index
Returns : | the GIConstantInfo, free it with `g_base_info_unref()` when done. [transfer full]

### g_union_info_find_method ()

    GIFunctionInfo *    g_union_info_find_method            (GIUnionInfo *info,
                                                             const gchar *name);

Obtain the type information for method named `name`.

`info` : | a GIUnionInfo
`name` : | a method name
Returns : | the GIFunctionInfo, free it with `g_base_info_unref()` when done. [transfer full]

### g_union_info_get_size ()

    gsize               g_union_info_get_size               (GIUnionInfo *info);

Obtain the total size of the union.

`info` : | a GIUnionInfo
Returns : | size of the union in bytes

### g_union_info_get_alignment ()

    gsize               g_union_info_get_alignment          (GIUnionInfo *info);

Obtain the required alignment of the union.

`info` : | a GIUnionInfo
Returns : | required alignment in bytes