common types

## common types common types — TODO |

## Synopsis

    union               GIArgument;
                        GIUnresolvedInfo;
    enum                GITypeTag;
    enum                GIArrayType;
    #define             GI_TYPE_TAG_N_TYPES
    #define             G_TYPE_TAG_IS_BASIC                 (tag)

## Description

TODO

## Details

### union GIArgument

    union _GIArgument
    {
      gboolean v_boolean;
      gint8    v_int8;
      guint8   v_uint8;
      gint16   v_int16;
      guint16  v_uint16;
      gint32   v_int32;
      guint32  v_uint32;
      gint64   v_int64;
      guint64  v_uint64;
      gfloat   v_float;
      gdouble  v_double;
      gshort   v_short;
      gushort  v_ushort;
      gint     v_int;
      guint    v_uint;
      glong    v_long;
      gulong   v_ulong;
      gssize   v_ssize;
      gsize    v_size;
      gchar *  v_string;
      gpointer v_pointer;
    };

Stores an argument of varying type

gboolean `v_boolean`; | TODO
gint8 `v_int8`; | TODO
guint8 `v_uint8`; | TODO
gint16 `v_int16`; | TODO
guint16 `v_uint16`; | TODO
gint32 `v_int32`; | TODO
guint32 `v_uint32`; | TODO
gint64 `v_int64`; | TODO
guint64 `v_uint64`; | TODO
gfloat `v_float`; | TODO
gdouble `v_double`; | TODO
gshort `v_short`; | TODO
gushort `v_ushort`; | TODO
gint `v_int`; | TODO
guint `v_uint`; | TODO
glong `v_long`; | TODO
gulong `v_ulong`; | TODO
gssize `v_ssize`; | TODO
gsize `v_size`; | TODO
gchar *`v_string`; | TODO
gpointer `v_pointer`; | TODO

### GIUnresolvedInfo

    typedef struct _GIUnresolvedInfo GIUnresolvedInfo;

Represents a unresolved type in a typelib.

### enum GITypeTag

    typedef enum {
      /* Basic types */
      GI_TYPE_TAG_VOID      =  0,
      GI_TYPE_TAG_BOOLEAN   =  1,
      GI_TYPE_TAG_INT8      =  2,
      GI_TYPE_TAG_UINT8     =  3,
      GI_TYPE_TAG_INT16     =  4,
      GI_TYPE_TAG_UINT16    =  5,
      GI_TYPE_TAG_INT32     =  6,
      GI_TYPE_TAG_UINT32    =  7,
      GI_TYPE_TAG_INT64     =  8,
      GI_TYPE_TAG_UINT64    =  9,
      GI_TYPE_TAG_FLOAT     = 10,
      GI_TYPE_TAG_DOUBLE    = 11,
      GI_TYPE_TAG_GTYPE     = 12,
      GI_TYPE_TAG_UTF8      = 13,
      GI_TYPE_TAG_FILENAME  = 14,
      /* Non-basic types; compare with G_TYPE_TAG_IS_BASIC */
      GI_TYPE_TAG_ARRAY     = 15,
      GI_TYPE_TAG_INTERFACE = 16,
      GI_TYPE_TAG_GLIST     = 17,
      GI_TYPE_TAG_GSLIST    = 18,
      GI_TYPE_TAG_GHASH     = 19,
      GI_TYPE_TAG_ERROR     = 20,
      /* Another basic type */
      GI_TYPE_TAG_UNICHAR   = 21
      /* Note - there is currently only room for 32 tags */
    } GITypeTag;

The type tag of a GITypeInfo.

`GI_TYPE_TAG_VOID` | void
`GI_TYPE_TAG_BOOLEAN` | boolean
`GI_TYPE_TAG_INT8` | 8-bit signed integer
`GI_TYPE_TAG_UINT8` | 8-bit unsigned integer
`GI_TYPE_TAG_INT16` | 16-bit signed integer
`GI_TYPE_TAG_UINT16` | 16-bit unsigned integer
`GI_TYPE_TAG_INT32` | 32-bit signed integer
`GI_TYPE_TAG_UINT32` | 32-bit unsigned integer
`GI_TYPE_TAG_INT64` | 64-bit signed integer
`GI_TYPE_TAG_UINT64` | 64-bit unsigned integer
`GI_TYPE_TAG_FLOAT` | float
`GI_TYPE_TAG_DOUBLE` | double floating point
`GI_TYPE_TAG_GTYPE` | a GType
`GI_TYPE_TAG_UTF8` | a UTF-8 encoded string
`GI_TYPE_TAG_FILENAME` | a filename, encoded in the same encoding as the native filesystem is using.
`GI_TYPE_TAG_ARRAY` | an array
`GI_TYPE_TAG_INTERFACE` | an extended interface object
`GI_TYPE_TAG_GLIST` | a GList
`GI_TYPE_TAG_GSLIST` | a GSList
`GI_TYPE_TAG_GHASH` | a GHashTable
`GI_TYPE_TAG_ERROR` | a GError
`GI_TYPE_TAG_UNICHAR` | Unicode character

### enum GIArrayType

    typedef enum {
      GI_ARRAY_TYPE_C,
      GI_ARRAY_TYPE_ARRAY,
      GI_ARRAY_TYPE_PTR_ARRAY,
      GI_ARRAY_TYPE_BYTE_ARRAY
    } GIArrayType;

The type of array in a GITypeInfo.

`GI_ARRAY_TYPE_C` | a C array, char[] for instance
`GI_ARRAY_TYPE_ARRAY` | a `GArray` array
`GI_ARRAY_TYPE_PTR_ARRAY` | a GPtrArray array
`GI_ARRAY_TYPE_BYTE_ARRAY` | a GByteArray array

### GI_TYPE_TAG_N_TYPES

    #define GI_TYPE_TAG_N_TYPES (GI_TYPE_TAG_UNICHAR+1)

TODO

### G_TYPE_TAG_IS_BASIC()

    #define G_TYPE_TAG_IS_BASIC(tag) (tag < GI_TYPE_TAG_ARRAY || tag == GI_TYPE_TAG_UNICHAR)

Checks if `tag` is a basic type.

`tag` : | a type tag