GLib.Variant.get_va

### Method

# GLib Variantget_va

since: 2.24

#### Declaration

    void
    g_variant_get_va (
      GVariant* value,
      const gchar* format_string,
      const gchar** endptr,
      va_list* app
    )

#### Description

This function is intended to be used by libraries based on `GVariant` that want to provide g_variant_get()-like functionality to their users.

The API is more general than `g_variant_get()` to allow a wider range of possible uses.

`format_string` must still point to a valid format string, but it only need to be nul-terminated if `endptr` is `NULL`. If `endptr` is non-`NULL` then it is updated to point to the first character past the end of the format string.

`app` is a pointer to a #va_list. The arguments, according to `format_string`, are collected from this #va_list and the list is left pointing to the argument following the last.

These two generalisations allow mixing of multiple calls to `g_variant_new_va()` and `g_variant_get_va()` within a single actual varargs call by the user.

`format_string` determines the C types that are used for unpacking the values and also determines if the values are copied or borrowed, see the section on `GVariant` format strings.

Available since: 2.24

This method is not directly available to language bindings.

#### Parameters

`format_string`

  Type: `const gchar*`

  A string that is prefixed with a format string.

  The data is owned by the caller of the method.
  The value is a NUL terminated UTF-8 string.

`endptr`

  Type: `const gchar**`

  Location to store the end pointer, or `NULL`.

  The argument can be `NULL`.
  The data is owned by the caller of the method.
  The value is a NUL terminated UTF-8 string.

`app`

  Type: `va_list*`

  A pointer to a #va_list.

  The data is owned by the caller of the method.