### Function

# GLib Variant new_parsed_va

since: 2.24

#### Declaration

    GVariant*
    g_variant_new_parsed_va (
      const gchar* format,
      va_list* app
    )

#### Description

Parses `format` and returns the result.

This is the version of `g_variant_new_parsed()` intended to be used from libraries.

The return value will be floating if it was a newly created GVariant instance. In the case that `format` simply specified the collection of a `GVariant` pointer (eg: `format` was “%*”) then the collected `GVariant` pointer will be returned unmodified, without adding any additional references.

Note that the arguments in `app` must be of the correct width for their types specified in `format` when collected into the #va_list. See the [GVariant varargs documentation][gvariant-varargs].

In order to behave correctly in all cases it is necessary for the calling function to `g_variant_ref_sink()` the return result before returning control to the user that originally provided the pointer. At this point, the caller will have their own full reference to the result. This can also be done by adding the result to a container, or by passing it to another `g_variant_new()` call.

Available since: 2.24

This function is not directly available to language bindings.

#### Parameters

`format`

  Type: `const gchar*`

  A text format `GVariant`.

  The data is owned by the caller of the function.
  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 function.

#### Return value

Type: `GVariant`

A new, usually floating, `GVariant`.

The caller of the function takes ownership of the data, and is responsible for freeing it.