<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:doc="http://www.gtk.org/introspection/doc/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GLib" version="2.0"/>
  <include name="GModule" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <package name="girepository-2.0"/>
  <c:include name="girepository/girepository.h"/>
  <doc:format name="gi-docgen"/>
  <namespace name="GIRepository"
             version="3.0"
             shared-library="libgirepository-2.0.so.0"
             c:identifier-prefixes="GI,GI"
             c:symbol-prefixes="gi,gi">
    <function-macro name="ARG_INFO"
                    c:identifier="GI_ARG_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giarginfo.h"
           line="37">Casts a [type@GIRepository.ArgInfo] or derived pointer into a
`(GIArgInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/giarginfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="ArgInfo"
           c:symbol-prefix="arg_info"
           c:type="GIArgInfo"
           version="2.80"
           parent="BaseInfo"
           glib:type-name="GIArgInfo"
           glib:get-type="gi_arg_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/giarginfo.c"
           line="37">`GIArgInfo` represents an argument of a callable.

An argument is always part of a [class@GIRepository.CallableInfo].</doc>
      <method name="get_closure_index"
              c:identifier="gi_arg_info_get_closure_index"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="262">Obtain the index of the user data argument. This is only valid
for arguments which are callbacks.</doc>
        <source-position filename="girepository/giarginfo.h" line="87"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.c"
               line="270">`TRUE` if the argument has a user data argument</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="264">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
          <parameter name="out_closure_index"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="265">return location for the closure index</doc>
            <type name="guint" c:type="unsigned int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_destroy_index"
              c:identifier="gi_arg_info_get_destroy_index"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="293">Obtains the index of the [type@GLib.DestroyNotify] argument. This is only
valid for arguments which are callbacks.</doc>
        <source-position filename="girepository/giarginfo.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.c"
               line="301">`TRUE` if the argument has a [type@GLib.DestroyNotify] argument</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="295">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
          <parameter name="out_destroy_index"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="296">return location for the destroy index</doc>
            <type name="guint" c:type="unsigned int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_direction"
              c:identifier="gi_arg_info_get_direction"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="47">Obtain the direction of the argument. Check [type@GIRepository.Direction]
for possible direction values.</doc>
        <source-position filename="girepository/giarginfo.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.c"
               line="54">The direction</doc>
          <type name="Direction" c:type="GIDirection"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="49">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ownership_transfer"
              c:identifier="gi_arg_info_get_ownership_transfer"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="205">Obtain the ownership transfer for this argument.
[type@GIRepository.Transfer] contains a list of possible values.</doc>
        <source-position filename="girepository/giarginfo.h" line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.c"
               line="212">The transfer</doc>
          <type name="Transfer" c:type="GITransfer"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="207">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_scope"
              c:identifier="gi_arg_info_get_scope"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="234">Obtain the scope type for this argument.

The scope type explains how a callback is going to be invoked, most
importantly when the resources required to invoke it can be freed.

[type@GIRepository.ScopeType] contains a list of possible values.</doc>
        <source-position filename="girepository/giarginfo.h" line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.c"
               line="245">The scope type</doc>
          <type name="ScopeType" c:type="GIScopeType"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="236">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_type_info"
              c:identifier="gi_arg_info_get_type_info"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="324">Obtain the type information for @info.</doc>
        <source-position filename="girepository/giarginfo.h" line="95"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.c"
               line="330">The [class@GIRepository.TypeInfo] holding the type
  information for @info, free it with [method@GIRepository.BaseInfo.unref]
  when done</doc>
          <type name="TypeInfo" c:type="GITypeInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="326">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_caller_allocates"
              c:identifier="gi_arg_info_is_caller_allocates"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="100">Obtain if the argument is a pointer to a struct or object that will
receive an output of a function.

The default assumption for `GI_DIRECTION_OUT` arguments which have allocation
is that the callee allocates; if this is `TRUE`, then the caller must
allocate.</doc>
        <source-position filename="girepository/giarginfo.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.c"
               line="111">`TRUE` if caller is required to have allocated the argument</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="102">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_optional"
              c:identifier="gi_arg_info_is_optional"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="128">Obtain if the argument is optional.

For ‘out’ arguments this means that you can pass `NULL` in order to ignore
the result.</doc>
        <source-position filename="girepository/giarginfo.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.c"
               line="137">`TRUE` if it is an optional argument</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="130">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_return_value"
              c:identifier="gi_arg_info_is_return_value"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="76">Obtain if the argument is a return value. It can either be a
parameter or a return value.</doc>
        <source-position filename="girepository/giarginfo.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.c"
               line="83">`TRUE` if it is a return value</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="78">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_skip" c:identifier="gi_arg_info_is_skip" version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="182">Obtain if an argument is only useful in C.</doc>
        <source-position filename="girepository/giarginfo.h" line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.c"
               line="188">`TRUE` if argument is only useful in C.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="184">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load_type_info"
              c:identifier="gi_arg_info_load_type_info"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="346">Obtain information about a the type of given argument @info; this
function is a variant of [method@GIRepository.ArgInfo.get_type_info] designed
for stack allocation.

The initialized @type must not be referenced after @info is deallocated.

Once you are done with @type, it must be cleared using
[method@GIRepository.BaseInfo.clear].</doc>
        <source-position filename="girepository/giarginfo.h" line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="348">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
          <parameter name="type"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="349">Initialized with information about type of @info</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </parameter>
        </parameters>
      </method>
      <method name="may_be_null"
              c:identifier="gi_arg_info_may_be_null"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giarginfo.c"
             line="154">Obtain if the type of the argument includes the possibility of `NULL`.

For ‘in’ values this means that `NULL` is a valid value.  For ‘out’
values, this means that `NULL` may be returned.

See also [method@GIRepository.ArgInfo.is_optional].</doc>
        <source-position filename="girepository/giarginfo.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.c"
               line="165">`TRUE` if the value may be `NULL`</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giarginfo.c"
                 line="156">a #GIArgInfo</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="BaseInfoStack" c:type="GIBaseInfoStack"/>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gpointer" c:type="void*"/>
        </array>
      </field>
    </class>
    <union name="Argument" c:type="GIArgument" version="2.80">
      <doc xml:space="preserve"
           filename="girepository/gitypes.h"
           line="168">Stores an argument of varying type.</doc>
      <source-position filename="girepository/gitypes.h" line="166"/>
      <field name="v_boolean" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="170">boolean value</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="v_int8" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="171">8-bit signed integer value</doc>
        <type name="gint8" c:type="int8_t"/>
      </field>
      <field name="v_uint8" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="172">8-bit unsigned integer value</doc>
        <type name="guint8" c:type="uint8_t"/>
      </field>
      <field name="v_int16" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="173">16-bit signed integer value</doc>
        <type name="gint16" c:type="int16_t"/>
      </field>
      <field name="v_uint16" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="174">16-bit unsigned integer value</doc>
        <type name="guint16" c:type="uint16_t"/>
      </field>
      <field name="v_int32" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="175">32-bit signed integer value</doc>
        <type name="gint32" c:type="int32_t"/>
      </field>
      <field name="v_uint32" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="176">32-bit unsigned integer value</doc>
        <type name="guint32" c:type="uint32_t"/>
      </field>
      <field name="v_int64" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="177">64-bit signed integer value</doc>
        <type name="gint64" c:type="int64_t"/>
      </field>
      <field name="v_uint64" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="178">64-bit unsigned integer value</doc>
        <type name="guint64" c:type="uint64_t"/>
      </field>
      <field name="v_float" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="179">single float value</doc>
        <type name="gfloat" c:type="float"/>
      </field>
      <field name="v_double" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="180">double float value</doc>
        <type name="gdouble" c:type="double"/>
      </field>
      <field name="v_short" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="181">signed short integer value</doc>
        <type name="gshort" c:type="short"/>
      </field>
      <field name="v_ushort" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="182">unsigned short integer value</doc>
        <type name="gushort" c:type="unsigned short"/>
      </field>
      <field name="v_int" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="183">signed integer value</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="v_uint" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="184">unsigned integer value</doc>
        <type name="guint" c:type="unsigned int"/>
      </field>
      <field name="v_long" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="185">signed long integer value</doc>
        <type name="glong" c:type="long"/>
      </field>
      <field name="v_ulong" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="186">unsigned long integer value</doc>
        <type name="gulong" c:type="unsigned long"/>
      </field>
      <field name="v_ssize" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="187">sized `size_t` value</doc>
        <type name="gssize" c:type="gssize"/>
      </field>
      <field name="v_size" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="188">unsigned `size_t` value</doc>
        <type name="gsize" c:type="size_t"/>
      </field>
      <field name="v_string" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="189">nul-terminated string value</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="v_pointer" writable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="190">arbitrary pointer value</doc>
        <type name="gpointer" c:type="void*"/>
      </field>
    </union>
    <enumeration name="ArrayType" version="2.80" c:type="GIArrayType">
      <doc xml:space="preserve"
           filename="girepository/gitypes.h"
           line="349">The type of array in a [class@GIRepository.TypeInfo].</doc>
      <source-position filename="girepository/gitypes.h" line="365"/>
      <member name="c" value="0" c:identifier="GI_ARRAY_TYPE_C">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="351">a C array, `char[]` for instance</doc>
      </member>
      <member name="array" value="1" c:identifier="GI_ARRAY_TYPE_ARRAY">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="352">a [type@GLib.Array] array</doc>
      </member>
      <member name="ptr_array"
              value="2"
              c:identifier="GI_ARRAY_TYPE_PTR_ARRAY">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="353">a [type@GLib.PtrArray] array</doc>
      </member>
      <member name="byte_array"
              value="3"
              c:identifier="GI_ARRAY_TYPE_BYTE_ARRAY">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="354">a [type@GLib.ByteArray] array</doc>
      </member>
    </enumeration>
    <record name="AttributeIter" c:type="GIAttributeIter" version="2.80">
      <doc xml:space="preserve"
           filename="girepository/gibaseinfo.h"
           line="37">An opaque structure used to iterate over attributes
in a [class@GIRepository.BaseInfo] struct.</doc>
      <source-position filename="girepository/gibaseinfo.h" line="49"/>
      <field name="data" readable="0" private="1">
        <type name="gpointer" c:type="void*"/>
      </field>
      <field name="_dummy" readable="0" private="1">
        <array zero-terminated="0" fixed-size="4">
          <type name="gpointer" c:type="void*"/>
        </array>
      </field>
    </record>
    <function-macro name="BASE_INFO"
                    c:identifier="GI_BASE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gibaseinfo.h"
           line="63">Casts a [type@GIRepository.BaseInfo] or derived pointer into a
`(GIBaseInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/gibaseinfo.h" line="75"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gibaseinfo.h"
               line="65">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="BaseInfo"
           c:symbol-prefix="base_info"
           c:type="GIBaseInfo"
           version="2.80"
           abstract="1"
           glib:type-name="GIBaseInfo"
           glib:get-type="gi_base_info_get_type"
           glib:type-struct="BaseInfoClass"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/gibaseinfo.c"
           line="558">`GIBaseInfo` is the common base struct of all other Info structs
accessible through the [class@GIRepository.Repository] API.

All info structures can be cast to a `GIBaseInfo`, for instance:

```c
   GIFunctionInfo *function_info = …;
   GIBaseInfo *info = (GIBaseInfo *) function_info;
```

Most [class@GIRepository.Repository] APIs returning a `GIBaseInfo` are
actually creating a new struct; in other words,
[method@GIRepository.BaseInfo.unref] has to be called when done accessing the
data.

`GIBaseInfo` structuress are normally accessed by calling either
[method@GIRepository.Repository.find_by_name],
[method@GIRepository.Repository.find_by_gtype] or
[method@GIRepository.get_info].

```c
GIBaseInfo *button_info =
  gi_repository_find_by_name (NULL, "Gtk", "Button");

// use button_info…

gi_base_info_unref (button_info);
```</doc>
      <source-position filename="girepository/gitypes.h" line="42"/>
      <method name="clear" c:identifier="gi_base_info_clear" version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gibaseinfo.c"
             line="442">Clears memory allocated internally by a stack-allocated
[type@GIRepository.BaseInfo].

This does not deallocate the [type@GIRepository.BaseInfo] struct itself. It
does clear the struct to zero so that calling this function subsequent times
on the same struct is a no-op.

This must only be called on stack-allocated [type@GIRepository.BaseInfo]s.
Use [method@GIRepository.BaseInfo.unref] for heap-allocated ones.</doc>
        <source-position filename="girepository/gibaseinfo.h" line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="444">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="void*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="gi_base_info_equal" version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gibaseinfo.c"
             line="1029">Compare two `GIBaseInfo`s.

Using pointer comparison is not practical since many functions return
different instances of `GIBaseInfo` that refers to the same part of the
TypeLib; use this function instead to do `GIBaseInfo` comparisons.</doc>
        <source-position filename="girepository/gibaseinfo.h" line="126"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gibaseinfo.c"
               line="1040">`TRUE` if and only if @info1 equals @info2.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="1031">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="GIBaseInfo*"/>
          </instance-parameter>
          <parameter name="info2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="1032">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="GIBaseInfo*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attribute"
              c:identifier="gi_base_info_get_attribute"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gibaseinfo.c"
             line="851">Retrieve an arbitrary attribute associated with this node.</doc>
        <source-position filename="girepository/gibaseinfo.h" line="110"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gibaseinfo.c"
               line="858">The value of the attribute, or `NULL` if no such
  attribute exists</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="853">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="GIBaseInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="854">a freeform string naming an attribute</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_container"
              c:identifier="gi_base_info_get_container"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gibaseinfo.c"
             line="995">Obtain the container of the @info.

The container is the parent `GIBaseInfo`. For instance, the parent of a
[class@GIRepository.FunctionInfo] is an [class@GIRepository.ObjectInfo] or
[class@GIRepository.InterfaceInfo].</doc>
        <source-position filename="girepository/gibaseinfo.h" line="120"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gibaseinfo.c"
               line="1005">the container</doc>
          <type name="BaseInfo" c:type="GIBaseInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="997">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="GIBaseInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="gi_base_info_get_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gibaseinfo.c"
             line="658">Obtain the name of the @info.

What the name represents depends on the type of the
@info. For instance for [class@GIRepository.FunctionInfo] it is the name of
the function.</doc>
        <source-position filename="girepository/gibaseinfo.h" line="101"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gibaseinfo.c"
               line="668">the name of @info or `NULL` if it lacks a name.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="660">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="GIBaseInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_namespace"
              c:identifier="gi_base_info_get_namespace"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gibaseinfo.c"
             line="758">Obtain the namespace of @info.</doc>
        <source-position filename="girepository/gibaseinfo.h" line="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gibaseinfo.c"
               line="764">the namespace</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="760">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="GIBaseInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_typelib"
              c:identifier="gi_base_info_get_typelib"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gibaseinfo.c"
             line="1014">Obtain the typelib this @info belongs to</doc>
        <source-position filename="girepository/gibaseinfo.h" line="123"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gibaseinfo.c"
               line="1020">the typelib</doc>
          <type name="Typelib" c:type="GITypelib*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="1016">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="GIBaseInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_deprecated"
              c:identifier="gi_base_info_is_deprecated"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gibaseinfo.c"
             line="785">Obtain whether the @info is represents a metadata which is
deprecated.</doc>
        <source-position filename="girepository/gibaseinfo.h" line="107"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gibaseinfo.c"
               line="792">`TRUE` if deprecated</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="787">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="GIBaseInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="iterate_attributes"
              c:identifier="gi_base_info_iterate_attributes"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gibaseinfo.c"
             line="931">Iterate over all attributes associated with this node.

The iterator structure is typically stack allocated, and must have its first
member initialized to `NULL`.  Attributes are arbitrary namespaced key–value
pairs which can be attached to almost any item.  They are intended for use
by software higher in the toolchain than bindings, and are distinct from
normal GIR annotations.

Both the @name and @value should be treated as constants
and must not be freed.

```c
void
print_attributes (GIBaseInfo *info)
{
  GIAttributeIter iter = GI_ATTRIBUTE_ITER_INIT;
  const char *name;
  const char *value;
  while (gi_base_info_iterate_attributes (info, &amp;iter, &amp;name, &amp;value))
    {
      g_print ("attribute name: %s value: %s", name, value);
    }
}
```</doc>
        <source-position filename="girepository/gibaseinfo.h" line="114"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gibaseinfo.c"
               line="964">`TRUE` if there are more attributes</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="933">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="GIBaseInfo*"/>
          </instance-parameter>
          <parameter name="iterator"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="934">a [type@GIRepository.AttributeIter] structure, must be
  initialized; see below</doc>
            <type name="AttributeIter" c:type="GIAttributeIter*"/>
          </parameter>
          <parameter name="name"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="936">Returned name, must not be freed</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="937">Returned name, must not be freed</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="gi_base_info_ref" version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gibaseinfo.c"
             line="593">Increases the reference count of @info.</doc>
        <source-position filename="girepository/gibaseinfo.h" line="92"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/gibaseinfo.c"
               line="599">the same @info.</doc>
          <type name="BaseInfo" c:type="GIBaseInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="595">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="void*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="gi_base_info_unref" version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gibaseinfo.c"
             line="615">Decreases the reference count of @info. When its reference count
drops to 0, the info is freed.

This must not be called on stack-allocated [type@GIRepository.BaseInfo]s —
use [method@GIRepository.BaseInfo.clear] for that.</doc>
        <source-position filename="girepository/gibaseinfo.h" line="95"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="girepository/gibaseinfo.c"
                 line="617">a #GIBaseInfo</doc>
            <type name="BaseInfo" c:type="void*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <record name="BaseInfoClass"
            c:type="GIBaseInfoClass"
            disguised="1"
            opaque="1"
            glib:is-gtype-struct-for="BaseInfo">
      <source-position filename="girepository/gitypes.h" line="42"/>
    </record>
    <record name="BaseInfoStack" c:type="GIBaseInfoStack">
      <source-position filename="girepository/gitypes.h" line="53"/>
      <field name="parent_instance" readable="0" private="1">
        <type name="GObject.TypeInstance" c:type="GTypeInstance"/>
      </field>
      <field name="dummy0" readable="0" private="1">
        <type name="gint" c:type="int"/>
      </field>
      <field name="dummy1" readable="0" private="1">
        <array zero-terminated="0" fixed-size="3">
          <type name="gpointer" c:type="void*"/>
        </array>
      </field>
      <field name="dummy2" readable="0" private="1">
        <array zero-terminated="0" fixed-size="2">
          <type name="guint32" c:type="uint32_t"/>
        </array>
      </field>
      <field name="dummy3" readable="0" private="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gpointer" c:type="void*"/>
        </array>
      </field>
    </record>
    <function-macro name="CALLABLE_INFO"
                    c:identifier="GI_CALLABLE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gicallableinfo.h"
           line="37">Casts a [type@GIRepository.CallableInfo] or derived pointer into a
`(GICallableInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/gicallableinfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CALLBACK_INFO"
                    c:identifier="GI_CALLBACK_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gicallbackinfo.h"
           line="36">Casts a [type@GIRepository.CallbackInfo] or derived pointer into a
`(GICallbackInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/gicallbackinfo.h" line="48"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gicallbackinfo.h"
               line="38">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CONSTANT_INFO"
                    c:identifier="GI_CONSTANT_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giconstantinfo.h"
           line="37">Casts a [type@GIRepository.ConstantInfo] or derived pointer into a
`(GIConstantInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/giconstantinfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giconstantinfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="CallableInfo"
           c:symbol-prefix="callable_info"
           c:type="GICallableInfo"
           version="2.80"
           parent="BaseInfo"
           abstract="1"
           glib:type-name="GICallableInfo"
           glib:get-type="gi_callable_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/gicallableinfo.c"
           line="42">`GICallableInfo` represents an entity which is callable.

Examples of callable are:

 - functions ([class@GIRepository.FunctionInfo])
 - virtual functions ([class@GIRepository.VFuncInfo])
 - callbacks ([class@GIRepository.CallbackInfo]).

A callable has a list of arguments ([class@GIRepository.ArgInfo]), a return
type, direction and a flag which decides if it returns `NULL`.</doc>
      <method name="can_throw_gerror"
              c:identifier="gi_callable_info_can_throw_gerror"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="87">Whether the callable can throw a [type@GLib.Error]</doc>
        <source-position filename="girepository/gicallableinfo.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="93">`TRUE` if this `GICallableInfo` can throw a [type@GLib.Error]</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="89">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_arg"
              c:identifier="gi_callable_info_get_arg"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="366">Obtain information about a particular argument of this callable.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="98"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="373">the [class@GIRepository.ArgInfo]. Free it with
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="ArgInfo" c:type="GIArgInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="368">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="369">the argument index to fetch</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_async_function"
              c:identifier="gi_callable_info_get_async_function"
              version="2.84">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="887">Gets the callable info for the callable's asynchronous version</doc>
        <source-position filename="girepository/gicallableinfo.h" line="120"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="893">a [class@GIRepository.CallableInfo] for the
  async function or `NULL` if not defined.</doc>
          <type name="CallableInfo" c:type="GICallableInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="889">a callable info structure</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_caller_owns"
              c:identifier="gi_callable_info_get_caller_owns"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="283">See whether the caller owns the return value of this callable.

[type@GIRepository.Transfer] contains a list of possible transfer values.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="291">the transfer mode for the return value of the callable</doc>
          <type name="Transfer" c:type="GITransfer"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="285">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_finish_function"
              c:identifier="gi_callable_info_get_finish_function"
              version="2.84">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="969">Gets the info for an async function's corresponding finish function</doc>
        <source-position filename="girepository/gicallableinfo.h" line="126"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="975">a [class@GIRepository.CallableInfo] for the
  finish function or `NULL` if not defined.</doc>
          <type name="CallableInfo" c:type="GICallableInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="971">a callable info structure</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_instance_ownership_transfer"
              c:identifier="gi_callable_info_get_instance_ownership_transfer"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="313">Obtains the ownership transfer for the instance argument.

[type@GIRepository.Transfer] contains a list of possible transfer values.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="117"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="321">the transfer mode of the instance argument</doc>
          <type name="Transfer" c:type="GITransfer"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="315">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_args"
              c:identifier="gi_callable_info_get_n_args"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="341">Obtain the number of arguments (both ‘in’ and ‘out’) for this callable.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="95"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="347">The number of arguments this callable expects.</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="343">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_return_attribute"
              c:identifier="gi_callable_info_get_return_attribute"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="433">Retrieve an arbitrary attribute associated with the return value.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="76"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="440">The value of the attribute, or `NULL` if no such
  attribute exists</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="435">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="436">a freeform string naming an attribute</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_return_type"
              c:identifier="gi_callable_info_get_return_type"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="179">Obtain the return type of a callable item as a [class@GIRepository.TypeInfo].

If the callable doesn’t return anything, a [class@GIRepository.TypeInfo] of
type [enum@GIRepository.TypeTag.VOID] will be returned.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="69"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="188">the [class@GIRepository.TypeInfo]. Free the struct
  by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="TypeInfo" c:type="GITypeInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="181">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_sync_function"
              c:identifier="gi_callable_info_get_sync_function"
              version="2.84">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="928">Gets the callable info for the callable's synchronous version</doc>
        <source-position filename="girepository/gicallableinfo.h" line="123"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="934">a [class@GIRepository.CallableInfo] for the
  sync function or `NULL` if not defined.</doc>
          <type name="CallableInfo" c:type="GICallableInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="930">a callable info structure</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="invoke"
              c:identifier="gi_callable_info_invoke"
              version="2.80"
              throws="1">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="623">Invoke the given `GICallableInfo` by calling the given @function pointer.

The set of arguments passed to @function will be constructed according to the
introspected type of the `GICallableInfo`, using @in_args, @out_args
and @error.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="107"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="643">`TRUE` if the callable was executed successfully and didn’t throw
  a [type@GLib.Error]; `FALSE` if @error is set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="625">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
          <parameter name="function"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="626">function pointer to call</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="in_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="627">array of ‘in’ arguments</doc>
            <array length="2" zero-terminated="0" c:type="const GIArgument*">
              <type name="Argument" c:type="GIArgument"/>
            </array>
          </parameter>
          <parameter name="n_in_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="628">number of arguments in @in_args</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="out_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="629">array of ‘out’ arguments allocated by
  the caller, to be populated with outputted values</doc>
            <array length="4" zero-terminated="0" c:type="GIArgument*">
              <type name="Argument" c:type="GIArgument"/>
            </array>
          </parameter>
          <parameter name="n_out_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="631">number of arguments in @out_args</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="return_value"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="632">return
  location for the return value from the callable; `NULL` may be returned if
  the callable returns that</doc>
            <type name="Argument" c:type="GIArgument*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_async"
              c:identifier="gi_callable_info_is_async"
              version="2.84">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="1010">Gets whether a callable is ‘async’. Async callables have a
[type@Gio.AsyncReadyCallback] parameter and user data.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="129"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="1017">true if the callable is async</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="1012">a callable info structure</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_method"
              c:identifier="gi_callable_info_is_method"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="132">Determines if the callable info is a method.

For [class@GIRepository.SignalInfo]s, this is always true, and for
[class@GIRepository.CallbackInfo]s always false.
For [class@GIRepository.FunctionInfo]s this looks at the
`GI_FUNCTION_IS_METHOD` flag on the [class@GIRepository.FunctionInfo].
For [class@GIRepository.VFuncInfo]s this is true when the virtual function
has an instance parameter.

Concretely, this function returns whether
[method@GIRepository.CallableInfo.get_n_args] matches the number of arguments
in the raw C method. For methods, there is one more C argument than is
exposed by introspection: the `self` or `this` object.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="150">`TRUE` if @info is a method, `FALSE` otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="134">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="iterate_return_attributes"
              c:identifier="gi_callable_info_iterate_return_attributes"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="459">Iterate over all attributes associated with the return value.

The iterator structure is typically stack allocated, and must have its
first member initialized to `NULL`.

Both the @name and @value should be treated as constants
and must not be freed.

See [method@GIRepository.BaseInfo.iterate_attributes] for an example of how
to use a similar API.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="478">`TRUE` if there are more attributes</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="461">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
          <parameter name="iterator"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="462">a [type@GIRepository.AttributeIter] structure, must be
  initialized; see below</doc>
            <type name="AttributeIter" c:type="GIAttributeIter*"/>
          </parameter>
          <parameter name="name"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="464">Returned name, must not be freed</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="465">Returned name, must not be freed</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_arg"
              c:identifier="gi_callable_info_load_arg"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="396">Obtain information about a particular argument of this callable; this
function is a variant of [method@GIRepository.CallableInfo.get_arg] designed
for stack allocation.

The initialized @arg must not be referenced after @info is deallocated.

Once you are done with @arg, it must be cleared using
[method@GIRepository.BaseInfo.clear].</doc>
        <source-position filename="girepository/gicallableinfo.h" line="102"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="398">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="399">the argument index to fetch</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
          <parameter name="arg"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="400">Initialize with argument number @n</doc>
            <type name="ArgInfo" c:type="GIArgInfo*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_return_type"
              c:identifier="gi_callable_info_load_return_type"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="206">Obtain information about a return value of callable; this
function is a variant of [method@GIRepository.CallableInfo.get_return_type]
designed for stack allocation.

The initialized @type must not be referenced after @info is deallocated.

Once you are done with @type, it must be cleared using
[method@GIRepository.BaseInfo.clear].</doc>
        <source-position filename="girepository/gicallableinfo.h" line="72"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="208">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
          <parameter name="type"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="209">Initialized with return type of @info</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </parameter>
        </parameters>
      </method>
      <method name="may_return_null"
              c:identifier="gi_callable_info_may_return_null"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="237">See if a callable could return `NULL`.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="89"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="243">`TRUE` if callable could return `NULL`</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="239">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="skip_return"
              c:identifier="gi_callable_info_skip_return"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gicallableinfo.c"
             line="260">See if a callable’s return value is only useful in C.</doc>
        <source-position filename="girepository/gicallableinfo.h" line="92"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.c"
               line="266">`TRUE` if return value is only useful in C.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gicallableinfo.c"
                 line="262">a #GICallableInfo</doc>
            <type name="CallableInfo" c:type="GICallableInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <class name="CallbackInfo"
           c:symbol-prefix="callback_info"
           c:type="GICallbackInfo"
           version="2.80"
           parent="CallableInfo"
           glib:type-name="GICallbackInfo"
           glib:get-type="gi_callback_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/gicallbackinfo.c"
           line="37">`GICallbackInfo` represents a callback.</doc>
    </class>
    <class name="ConstantInfo"
           c:symbol-prefix="constant_info"
           c:type="GIConstantInfo"
           version="2.80"
           parent="BaseInfo"
           glib:type-name="GIConstantInfo"
           glib:get-type="gi_constant_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/giconstantinfo.c"
           line="36">`GIConstantInfo` represents a constant.

A constant has a type associated – which can be obtained by calling
[method@GIRepository.ConstantInfo.get_type_info] – and a value – which can be
obtained by calling [method@GIRepository.ConstantInfo.get_value].</doc>
      <method name="free_value"
              c:identifier="gi_constant_info_free_value"
              version="2.80"
              introspectable="0">
        <doc xml:space="preserve"
             filename="girepository/giconstantinfo.c"
             line="72">Free the value returned from [method@GIRepository.ConstantInfo.get_value].</doc>
        <source-position filename="girepository/giconstantinfo.h" line="66"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giconstantinfo.c"
                 line="74">a #GIConstantInfo</doc>
            <type name="ConstantInfo" c:type="GIConstantInfo*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giconstantinfo.c"
                 line="75">the argument</doc>
            <type name="Argument" c:type="GIArgument*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_type_info"
              c:identifier="gi_constant_info_get_type_info"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giconstantinfo.c"
             line="48">Obtain the type of the constant as a [class@GIRepository.TypeInfo].</doc>
        <source-position filename="girepository/giconstantinfo.h" line="63"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giconstantinfo.c"
               line="54">The [class@GIRepository.TypeInfo]. Free the struct
  by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="TypeInfo" c:type="GITypeInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giconstantinfo.c"
                 line="50">a #GIConstantInfo</doc>
            <type name="ConstantInfo" c:type="GIConstantInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value"
              c:identifier="gi_constant_info_get_value"
              version="2.80"
              introspectable="0">
        <doc xml:space="preserve"
             filename="girepository/giconstantinfo.c"
             line="101">Obtain the value associated with the `GIConstantInfo` and store it in the
@value parameter.

@argument needs to be allocated before passing it in.

The size of the constant value (in bytes) stored in @argument will be
returned.

Free the value with [method@GIRepository.ConstantInfo.free_value].</doc>
        <source-position filename="girepository/giconstantinfo.h" line="70"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giconstantinfo.c"
               line="116">size of the constant, in bytes</doc>
          <type name="gsize" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giconstantinfo.c"
                 line="103">a #GIConstantInfo</doc>
            <type name="ConstantInfo" c:type="GIConstantInfo*"/>
          </instance-parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giconstantinfo.c"
                 line="104">an argument</doc>
            <type name="Argument" c:type="GIArgument*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_26_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_26_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="42"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_28_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_28_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="76"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_30_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_30_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="110"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_32_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_32_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="144"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_34_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_34_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="178"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_36_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_36_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="212"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_38_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_38_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="246"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_40_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_40_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="280"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_42_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_42_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="314"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_44_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_44_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="348"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_46_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_46_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="382"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_48_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_48_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="416"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_50_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_50_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="450"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_52_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_52_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="484"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_54_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_54_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="518"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_56_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_56_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="552"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_58_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_58_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="586"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_60_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_60_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="620"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_62_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_62_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="654"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_64_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_64_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="688"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_66_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_66_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="722"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_68_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_68_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="756"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_70_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_70_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="790"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_72_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_72_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="824"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_74_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_74_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="858"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_76_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_76_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="892"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_78_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_78_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="926"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_80_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_80_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="960"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_82_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_82_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="994"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_84_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_84_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="1028"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_ENUMERATOR_IN_2_86_FOR"
                    c:identifier="GI_DEPRECATED_ENUMERATOR_IN_2_86_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="1062"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_FOR"
                    c:identifier="GI_DEPRECATED_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="26"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_26_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_26_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="38"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_28_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_28_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="72"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_30_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_30_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="106"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_32_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_32_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="140"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_34_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_34_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="174"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_36_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_36_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="208"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_38_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_38_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="242"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_40_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_40_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="276"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_42_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_42_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="310"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_44_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_44_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="344"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_46_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_46_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="378"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_48_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_48_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="412"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_50_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_50_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="446"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_52_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_52_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="480"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_54_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_54_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="514"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_56_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_56_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="548"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_58_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_58_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="582"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_60_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_60_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="616"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_62_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_62_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="650"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_64_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_64_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="684"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_66_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_66_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="718"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_68_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_68_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="752"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_70_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_70_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="786"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_72_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_72_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="820"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_74_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_74_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="854"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_76_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_76_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="888"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_78_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_78_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="922"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_80_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_80_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="956"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_82_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_82_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="990"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_84_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_84_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="1024"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_IN_2_86_FOR"
                    c:identifier="GI_DEPRECATED_IN_2_86_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="1058"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_26_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_26_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="40"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_28_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_28_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="74"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_30_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_30_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="108"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_32_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_32_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="142"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_34_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_34_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="176"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_36_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_36_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="210"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_38_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_38_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="244"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_40_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_40_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="278"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_42_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_42_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="312"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_44_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_44_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="346"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_46_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_46_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="380"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_48_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_48_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="414"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_50_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_50_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="448"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_52_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_52_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="482"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_54_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_54_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="516"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_56_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_56_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="550"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_58_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_58_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="584"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_60_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_60_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="618"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_62_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_62_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="652"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_64_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_64_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="686"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_66_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_66_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="720"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_68_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_68_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="754"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_70_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_70_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="788"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_72_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_72_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="822"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_74_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_74_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="856"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_76_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_76_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="890"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_78_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_78_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="924"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_80_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_80_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="958"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_82_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_82_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="992"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_84_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_84_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="1026"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_MACRO_IN_2_86_FOR"
                    c:identifier="GI_DEPRECATED_MACRO_IN_2_86_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="1060"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_26_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_26_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="44"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_28_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_28_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="78"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_30_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_30_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="112"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_32_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_32_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="146"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_34_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_34_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="180"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_36_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_36_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="214"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_38_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_38_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="248"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_40_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_40_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="282"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_42_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_42_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="316"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_44_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_44_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="350"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_46_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_46_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="384"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_48_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_48_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="418"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_50_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_50_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="452"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_52_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_52_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="486"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_54_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_54_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="520"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_56_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_56_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="554"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_58_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_58_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="588"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_60_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_60_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="622"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_62_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_62_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="656"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_64_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_64_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="690"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_66_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_66_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="724"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_68_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_68_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="758"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_70_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_70_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="792"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_72_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_72_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="826"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_74_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_74_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="860"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_76_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_76_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="894"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_78_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_78_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="928"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_80_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_80_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="962"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_82_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_82_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="996"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_84_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_84_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="1030"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEPRECATED_TYPE_IN_2_86_FOR"
                    c:identifier="GI_DEPRECATED_TYPE_IN_2_86_FOR"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="1064"/>
      <parameters>
        <parameter name="f">
        </parameter>
      </parameters>
    </function-macro>
    <enumeration name="Direction" version="2.80" c:type="GIDirection">
      <doc xml:space="preserve"
           filename="girepository/gitypes.h"
           line="237">The direction of a [class@GIRepository.ArgInfo].</doc>
      <source-position filename="girepository/gitypes.h" line="251"/>
      <member name="in" value="0" c:identifier="GI_DIRECTION_IN">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="239">‘in’ argument.</doc>
      </member>
      <member name="out" value="1" c:identifier="GI_DIRECTION_OUT">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="240">‘out’ argument.</doc>
      </member>
      <member name="inout" value="2" c:identifier="GI_DIRECTION_INOUT">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="241">‘in and out’ argument.</doc>
      </member>
    </enumeration>
    <function-macro name="ENUM_INFO"
                    c:identifier="GI_ENUM_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gienuminfo.h"
           line="37">Casts a [type@GIRepository.EnumInfo] or derived pointer into a
`(GIEnumInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/gienuminfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gienuminfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="EnumInfo"
           c:symbol-prefix="enum_info"
           c:type="GIEnumInfo"
           version="2.80"
           parent="RegisteredTypeInfo"
           glib:type-name="GIEnumInfo"
           glib:get-type="gi_enum_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/gienuminfo.c"
           line="35">A `GIEnumInfo` represents an enumeration.

The `GIEnumInfo` contains a set of values (each a
[class@GIRepository.ValueInfo]) and a type.

The [class@GIRepository.ValueInfo] for a value is fetched by calling
[method@GIRepository.EnumInfo.get_value] on a `GIEnumInfo`.</doc>
      <method name="get_error_domain"
              c:identifier="gi_enum_info_get_error_domain"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gienuminfo.c"
             line="72">Obtain the string form of the quark for the error domain associated with
this enum, if any.</doc>
        <source-position filename="girepository/gienuminfo.h" line="80"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gienuminfo.c"
               line="79">the string form of the error domain
  associated with this enum, or `NULL`.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gienuminfo.c"
                 line="74">a #GIEnumInfo</doc>
            <type name="EnumInfo" c:type="GIEnumInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_method"
              c:identifier="gi_enum_info_get_method"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gienuminfo.c"
             line="153">Obtain an enum type method at index @n.</doc>
        <source-position filename="girepository/gienuminfo.h" line="73"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/gienuminfo.c"
               line="160">the [class@GIRepository.FunctionInfo]. Free the
  struct by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gienuminfo.c"
                 line="155">a #GIEnumInfo</doc>
            <type name="EnumInfo" c:type="GIEnumInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gienuminfo.c"
                 line="156">index of method to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_methods"
              c:identifier="gi_enum_info_get_n_methods"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gienuminfo.c"
             line="130">Obtain the number of methods that this enum type has.</doc>
        <source-position filename="girepository/gienuminfo.h" line="70"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gienuminfo.c"
               line="136">number of methods</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gienuminfo.c"
                 line="132">a #GIEnumInfo</doc>
            <type name="EnumInfo" c:type="GIEnumInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_values"
              c:identifier="gi_enum_info_get_n_values"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gienuminfo.c"
             line="49">Obtain the number of values this enumeration contains.</doc>
        <source-position filename="girepository/gienuminfo.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gienuminfo.c"
               line="55">the number of enumeration values</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gienuminfo.c"
                 line="51">a #GIEnumInfo</doc>
            <type name="EnumInfo" c:type="GIEnumInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_storage_type"
              c:identifier="gi_enum_info_get_storage_type"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gienuminfo.c"
             line="188">Obtain the tag of the type used for the enum in the C ABI. This will
will be a signed or unsigned integral type.

Note that in the current implementation the width of the type is
computed correctly, but the signed or unsigned nature of the type
may not match the sign of the type used by the C compiler.</doc>
        <source-position filename="girepository/gienuminfo.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gienuminfo.c"
               line="199">the storage type for the enumeration</doc>
          <type name="TypeTag" c:type="GITypeTag"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gienuminfo.c"
                 line="190">a #GIEnumInfo</doc>
            <type name="EnumInfo" c:type="GIEnumInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value"
              c:identifier="gi_enum_info_get_value"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gienuminfo.c"
             line="100">Obtain a value for this enumeration.</doc>
        <source-position filename="girepository/gienuminfo.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/gienuminfo.c"
               line="107">the enumeration value, free the struct with
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="ValueInfo" c:type="GIValueInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gienuminfo.c"
                 line="102">a #GIEnumInfo</doc>
            <type name="EnumInfo" c:type="GIEnumInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gienuminfo.c"
                 line="103">index of value to fetch</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <function-macro name="FIELD_INFO"
                    c:identifier="GI_FIELD_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gifieldinfo.h"
           line="37">Casts a [type@GIRepository.FieldInfo] or derived pointer into a
`(GIFieldInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/gifieldinfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gifieldinfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FLAGS_INFO"
                    c:identifier="GI_FLAGS_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giflagsinfo.h"
           line="36">Casts a [type@GIRepository.FlagsInfo] or derived pointer into a
`(GIFlagsInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/giflagsinfo.h" line="48"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giflagsinfo.h"
               line="38">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FUNCTION_INFO"
                    c:identifier="GI_FUNCTION_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gifunctioninfo.h"
           line="37">Casts a [type@GIRepository.FunctionInfo] or derived pointer into a
`(GIFunctionInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/gifunctioninfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gifunctioninfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="FieldInfo"
           c:symbol-prefix="field_info"
           c:type="GIFieldInfo"
           version="2.80"
           parent="BaseInfo"
           glib:type-name="GIFieldInfo"
           glib:get-type="gi_field_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/gifieldinfo.c"
           line="36">A `GIFieldInfo` struct represents a field of a struct, union, or object.

The `GIFieldInfo` is fetched by calling
[method@GIRepository.StructInfo.get_field],
[method@GIRepository.UnionInfo.get_field] or
[method@GIRepository.ObjectInfo.get_field].

A field has a size, type and a struct offset associated and a set of flags,
which are currently `GI_FIELD_IS_READABLE` or `GI_FIELD_IS_WRITABLE`.

See also: [type@GIRepository.StructInfo], [type@GIRepository.UnionInfo],
[type@GIRepository.ObjectInfo]</doc>
      <method name="get_field"
              c:identifier="gi_field_info_get_field"
              version="2.80"
              introspectable="0">
        <doc xml:space="preserve"
             filename="girepository/gifieldinfo.c"
             line="172">Reads a field identified by a `GIFieldInfo` from a C structure or
union.

This only handles fields of simple C types. It will fail for a field of a
composite type like a nested structure or union even if that is actually
readable.</doc>
        <source-position filename="girepository/gifieldinfo.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gifieldinfo.c"
               line="185">`TRUE` if reading the field succeeded, `FALSE` otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="field_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifieldinfo.c"
                 line="174">a #GIFieldInfo</doc>
            <type name="FieldInfo" c:type="GIFieldInfo*"/>
          </instance-parameter>
          <parameter name="mem"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/gifieldinfo.c"
                 line="175">pointer to a block of memory representing a C structure or union</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifieldinfo.c"
                 line="176">a [type@GIRepository.Argument] into which to store the value retrieved</doc>
            <type name="Argument" c:type="GIArgument*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_flags"
              c:identifier="gi_field_info_get_flags"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gifieldinfo.c"
             line="55">Obtain the flags for this `GIFieldInfo`. See
[flags@GIRepository.FieldInfoFlags] for possible flag values.</doc>
        <source-position filename="girepository/gifieldinfo.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gifieldinfo.c"
               line="62">the flags</doc>
          <type name="FieldInfoFlags" c:type="GIFieldInfoFlags"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifieldinfo.c"
                 line="57">a #GIFieldInfo</doc>
            <type name="FieldInfo" c:type="GIFieldInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_offset"
              c:identifier="gi_field_info_get_offset"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gifieldinfo.c"
             line="112">Obtain the offset of the field member, in bytes. This is relative
to the beginning of the struct or union.</doc>
        <source-position filename="girepository/gifieldinfo.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gifieldinfo.c"
               line="119">the field offset, in bytes</doc>
          <type name="gsize" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifieldinfo.c"
                 line="114">a #GIFieldInfo</doc>
            <type name="FieldInfo" c:type="GIFieldInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size"
              c:identifier="gi_field_info_get_size"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gifieldinfo.c"
             line="88">Obtain the size of the field member, in bits. This is how
much space you need to allocate to store the field.</doc>
        <source-position filename="girepository/gifieldinfo.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gifieldinfo.c"
               line="95">the field size, in bits</doc>
          <type name="gsize" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifieldinfo.c"
                 line="90">a #GIFieldInfo</doc>
            <type name="FieldInfo" c:type="GIFieldInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_type_info"
              c:identifier="gi_field_info_get_type_info"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gifieldinfo.c"
             line="136">Obtain the type of a field as a [type@GIRepository.TypeInfo].</doc>
        <source-position filename="girepository/gifieldinfo.h" line="72"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/gifieldinfo.c"
               line="142">the [type@GIRepository.TypeInfo]. Free the struct
  by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="TypeInfo" c:type="GITypeInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifieldinfo.c"
                 line="138">a #GIFieldInfo</doc>
            <type name="FieldInfo" c:type="GIFieldInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_field"
              c:identifier="gi_field_info_set_field"
              version="2.80"
              introspectable="0">
        <doc xml:space="preserve"
             filename="girepository/gifieldinfo.c"
             line="365">Writes a field identified by a `GIFieldInfo` to a C structure or
union.

This only handles fields of simple C types. It will fail for a field of a
composite type like a nested structure or union even if that is actually
writable. Note also that that it will refuse to write fields where memory
management would by required. A field with a type such as `char *` must be
set with a setter function.</doc>
        <source-position filename="girepository/gifieldinfo.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gifieldinfo.c"
               line="380">`TRUE` if writing the field succeeded, `FALSE` otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="field_info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifieldinfo.c"
                 line="367">a #GIFieldInfo</doc>
            <type name="FieldInfo" c:type="GIFieldInfo*"/>
          </instance-parameter>
          <parameter name="mem"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/gifieldinfo.c"
                 line="368">pointer to a block of memory representing a C structure or union</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifieldinfo.c"
                 line="369">a [type@GIRepository.Argument] holding the value to store</doc>
            <type name="Argument" c:type="const GIArgument*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <bitfield name="FieldInfoFlags" version="2.80" c:type="GIFieldInfoFlags">
      <doc xml:space="preserve"
           filename="girepository/gitypes.h"
           line="367">Flags for a [class@GIRepository.FieldInfo].</doc>
      <source-position filename="girepository/gitypes.h" line="383"/>
      <member name="info_flags_none"
              value="0"
              c:identifier="GI_FIELD_INFO_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="369">no flags set (since: 2.86)</doc>
      </member>
      <member name="is_readable" value="1" c:identifier="GI_FIELD_IS_READABLE">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="370">field is readable.</doc>
      </member>
      <member name="is_writable" value="2" c:identifier="GI_FIELD_IS_WRITABLE">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="371">field is writable.</doc>
      </member>
    </bitfield>
    <class name="FlagsInfo"
           c:symbol-prefix="flags_info"
           c:type="GIFlagsInfo"
           version="2.80"
           parent="EnumInfo"
           glib:type-name="GIFlagsInfo"
           glib:get-type="gi_flags_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/giflagsinfo.c"
           line="34">A `GIFlagsInfo` represents an enumeration which defines flag values
(independently set bits).

The `GIFlagsInfo` contains a set of values (each a
[class@GIRepository.ValueInfo]) and a type.

The [class@GIRepository.ValueInfo] for a value is fetched by calling
[method@GIRepository.EnumInfo.get_value] on a `GIFlagsInfo`.</doc>
    </class>
    <class name="FunctionInfo"
           c:symbol-prefix="function_info"
           c:type="GIFunctionInfo"
           version="2.80"
           parent="CallableInfo"
           glib:type-name="GIFunctionInfo"
           glib:get-type="gi_function_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/gifunctioninfo.c"
           line="37">`GIFunctionInfo` represents a function, method or constructor.

To find out what kind of entity a `GIFunctionInfo` represents, call
[method@GIRepository.FunctionInfo.get_flags].

See also [class@GIRepository.CallableInfo] for information on how to retrieve
arguments and other metadata.</doc>
      <method name="get_flags"
              c:identifier="gi_function_info_get_flags"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gifunctioninfo.c"
             line="103">Obtain the [type@GIRepository.FunctionInfoFlags] for the @info.</doc>
        <source-position filename="girepository/gifunctioninfo.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gifunctioninfo.c"
               line="109">the flags</doc>
          <type name="FunctionInfoFlags" c:type="GIFunctionInfoFlags"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifunctioninfo.c"
                 line="105">a #GIFunctionInfo</doc>
            <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_property"
              c:identifier="gi_function_info_get_property"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gifunctioninfo.c"
             line="149">Obtain the property associated with this `GIFunctionInfo`.

Only `GIFunctionInfo`s with the flag `GI_FUNCTION_IS_GETTER` or
`GI_FUNCTION_IS_SETTER` have a property set. For other cases,
`NULL` will be returned.</doc>
        <source-position filename="girepository/gifunctioninfo.h" line="69"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gifunctioninfo.c"
               line="159">The property or `NULL` if not set. Free
  it with [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="PropertyInfo" c:type="GIPropertyInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifunctioninfo.c"
                 line="151">a #GIFunctionInfo</doc>
            <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_symbol"
              c:identifier="gi_function_info_get_symbol"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gifunctioninfo.c"
             line="76">Obtain the symbol of the function.

The symbol is the name of the exported function, suitable to be used as an
argument to [method@GModule.Module.symbol].</doc>
        <source-position filename="girepository/gifunctioninfo.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gifunctioninfo.c"
               line="85">the symbol</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifunctioninfo.c"
                 line="78">a #GIFunctionInfo</doc>
            <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_vfunc"
              c:identifier="gi_function_info_get_vfunc"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gifunctioninfo.c"
             line="191">Obtain the virtual function associated with this `GIFunctionInfo`.

Only `GIFunctionInfo`s with the flag `GI_FUNCTION_WRAPS_VFUNC` have
a virtual function set. For other cases, `NULL` will be returned.</doc>
        <source-position filename="girepository/gifunctioninfo.h" line="72"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gifunctioninfo.c"
               line="200">The virtual function or `NULL` if not
  set. Free it by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifunctioninfo.c"
                 line="193">a #GIFunctionInfo</doc>
            <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="invoke"
              c:identifier="gi_function_info_invoke"
              version="2.80"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve"
             filename="girepository/gifunctioninfo.c"
             line="238">Invokes the function described in @info with the given
arguments.

Note that ‘inout’ parameters must appear in both argument lists. This
function uses [`dlsym()`](man:dlsym(3)) to obtain a pointer to the function,
so the library or shared object containing the described function must either
be linked to the caller, or must have been loaded with
[method@GModule.Module.symbol] before calling this function.</doc>
        <source-position filename="girepository/gifunctioninfo.h" line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gifunctioninfo.c"
               line="262">`TRUE` if the function has been invoked, `FALSE` if an
  error occurred.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifunctioninfo.c"
                 line="240">a #GIFunctionInfo describing the function to invoke</doc>
            <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
          </instance-parameter>
          <parameter name="in_args"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/gifunctioninfo.c"
                 line="241">An array of
  [type@GIRepository.Argument]s, one for each ‘in’ parameter of @info. If
  there are no ‘in’ parameters, @in_args can be `NULL`.</doc>
            <array length="1" zero-terminated="0" c:type="const GIArgument*">
              <type name="Argument" c:type="GIArgument"/>
            </array>
          </parameter>
          <parameter name="n_in_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifunctioninfo.c"
                 line="244">the length of the @in_args array</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="out_args"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/gifunctioninfo.c"
                 line="245">An array of
  [type@GIRepository.Argument]s, one for each ‘out’ parameter of @info. If
  there are no ‘out’ parameters, @out_args may be `NULL`.</doc>
            <array length="3" zero-terminated="0" c:type="GIArgument*">
              <type name="Argument" c:type="GIArgument"/>
            </array>
          </parameter>
          <parameter name="n_out_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifunctioninfo.c"
                 line="248">the length of the @out_args array</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="return_value"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gifunctioninfo.c"
                 line="249">return location for the
  return value of the function.</doc>
            <type name="Argument" c:type="GIArgument*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <bitfield name="FunctionInfoFlags"
              version="2.80"
              c:type="GIFunctionInfoFlags">
      <doc xml:space="preserve"
           filename="girepository/gitypes.h"
           line="404">Flags for a [class@GIRepository.FunctionInfo] struct.</doc>
      <source-position filename="girepository/gitypes.h" line="426"/>
      <member name="info_flags_none"
              value="0"
              c:identifier="GI_FUNCTION_INFO_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="406">no flags set (since: 2.86)</doc>
      </member>
      <member name="is_method" value="1" c:identifier="GI_FUNCTION_IS_METHOD">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="407">is a method.</doc>
      </member>
      <member name="is_constructor"
              value="2"
              c:identifier="GI_FUNCTION_IS_CONSTRUCTOR">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="408">is a constructor.</doc>
      </member>
      <member name="is_getter" value="4" c:identifier="GI_FUNCTION_IS_GETTER">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="409">is a getter of a [class@GIRepository.PropertyInfo].</doc>
      </member>
      <member name="is_setter" value="8" c:identifier="GI_FUNCTION_IS_SETTER">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="410">is a setter of a [class@GIRepository.PropertyInfo].</doc>
      </member>
      <member name="wraps_vfunc"
              value="16"
              c:identifier="GI_FUNCTION_WRAPS_VFUNC">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="411">represents a virtual function.</doc>
      </member>
      <member name="is_async" value="32" c:identifier="GI_FUNCTION_IS_ASYNC">
      </member>
    </bitfield>
    <function-macro name="INTERFACE_INFO"
                    c:identifier="GI_INTERFACE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giinterfaceinfo.h"
           line="37">Casts a [type@GIRepository.InterfaceInfo] or derived pointer into a
`(GIInterfaceInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/giinterfaceinfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ARG_INFO"
                    c:identifier="GI_IS_ARG_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giarginfo.h"
           line="51">Checks if @info is a [class@GIRepository.ArgInfo] (or a derived type).</doc>
      <source-position filename="girepository/giarginfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giarginfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BASE_INFO"
                    c:identifier="GI_IS_BASE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gibaseinfo.h"
           line="77">Checks whether a valid [type@GObject.TypeInstance] pointer is of type
`GI_TYPE_BASE_INFO` (or a derived type).</doc>
      <source-position filename="girepository/gibaseinfo.h" line="86"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gibaseinfo.h"
               line="79">Instance to check for being a `GI_TYPE_BASE_INFO`.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CALLABLE_INFO"
                    c:identifier="GI_IS_CALLABLE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gicallableinfo.h"
           line="51">Checks if @info is a [class@GIRepository.CallableInfo] or derived from it.</doc>
      <source-position filename="girepository/gicallableinfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gicallableinfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CALLBACK_INFO"
                    c:identifier="GI_IS_CALLBACK_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gicallbackinfo.h"
           line="50">Checks if @info is a [class@GIRepository.CallbackInfo] or derived from it.</doc>
      <source-position filename="girepository/gicallbackinfo.h" line="58"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gicallbackinfo.h"
               line="52">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CONSTANT_INFO"
                    c:identifier="GI_IS_CONSTANT_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giconstantinfo.h"
           line="51">Checks if @info is a [class@GIRepository.ConstantInfo] (or a derived type).</doc>
      <source-position filename="girepository/giconstantinfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giconstantinfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ENUM_INFO"
                    c:identifier="GI_IS_ENUM_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gienuminfo.h"
           line="51">Checks if @info is a [class@GIRepository.EnumInfo] (or a derived type).</doc>
      <source-position filename="girepository/gienuminfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gienuminfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FIELD_INFO"
                    c:identifier="GI_IS_FIELD_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gifieldinfo.h"
           line="51">Checks if @info is a [class@GIRepository.FieldInfo] (or a derived type).</doc>
      <source-position filename="girepository/gifieldinfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gifieldinfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FLAGS_INFO"
                    c:identifier="GI_IS_FLAGS_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giflagsinfo.h"
           line="50">Checks if @info is a [class@GIRepository.FlagsInfo] (or a derived type).</doc>
      <source-position filename="girepository/giflagsinfo.h" line="58"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giflagsinfo.h"
               line="52">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FUNCTION_INFO"
                    c:identifier="GI_IS_FUNCTION_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gifunctioninfo.h"
           line="51">Checks if @info is a [class@GIRepository.FunctionInfo] (or a derived type).</doc>
      <source-position filename="girepository/gifunctioninfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gifunctioninfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_INTERFACE_INFO"
                    c:identifier="GI_IS_INTERFACE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giinterfaceinfo.h"
           line="51">Checks if @info is a [class@GIRepository.InterfaceInfo] (or a derived type).</doc>
      <source-position filename="girepository/giinterfaceinfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_OBJECT_INFO"
                    c:identifier="GI_IS_OBJECT_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giobjectinfo.h"
           line="94">Checks if @info is a [class@GIRepository.ObjectInfo] (or a derived type).</doc>
      <source-position filename="girepository/giobjectinfo.h" line="102"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.h"
               line="96">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PROPERTY_INFO"
                    c:identifier="GI_IS_PROPERTY_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gipropertyinfo.h"
           line="51">Checks if @info is a [class@GIRepository.PropertyInfo] (or a derived type).</doc>
      <source-position filename="girepository/gipropertyinfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gipropertyinfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_REGISTERED_TYPE_INFO"
                    c:identifier="GI_IS_REGISTERED_TYPE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giregisteredtypeinfo.h"
           line="52">Checks if @info is a [class@GIRepository.RegisteredTypeInfo] or derived from
it.</doc>
      <source-position filename="girepository/giregisteredtypeinfo.h"
                       line="61"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giregisteredtypeinfo.h"
               line="54">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SIGNAL_INFO"
                    c:identifier="GI_IS_SIGNAL_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gisignalinfo.h"
           line="52">Checks if @info is a [class@GIRepository.SignalInfo] (or a derived type).</doc>
      <source-position filename="girepository/gisignalinfo.h" line="60"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gisignalinfo.h"
               line="54">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_STRUCT_INFO"
                    c:identifier="GI_IS_STRUCT_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gistructinfo.h"
           line="51">Checks if @info is a [class@GIRepository.StructInfo] (or a derived type).</doc>
      <source-position filename="girepository/gistructinfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_TYPE_INFO"
                    c:identifier="GI_IS_TYPE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gitypeinfo.h"
           line="51">Checks if @info is a [alias@GIRepository.TypeInfo] (or a derived type).</doc>
      <source-position filename="girepository/gitypeinfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_UNION_INFO"
                    c:identifier="GI_IS_UNION_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giunioninfo.h"
           line="51">Checks if @info is a [struct@GIRepository.UnionInfo] (or a derived type).</doc>
      <source-position filename="girepository/giunioninfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_UNRESOLVED_INFO"
                    c:identifier="GI_IS_UNRESOLVED_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giunresolvedinfo.h"
           line="50">Checks if @info is a [class@GIRepository.UnresolvedInfo] or derived from it.</doc>
      <source-position filename="girepository/giunresolvedinfo.h" line="58"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giunresolvedinfo.h"
               line="52">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_VALUE_INFO"
                    c:identifier="GI_IS_VALUE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/givalueinfo.h"
           line="51">Checks if @info is a [class@GIRepository.ValueInfo] (or a derived type).</doc>
      <source-position filename="girepository/givalueinfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/givalueinfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_VFUNC_INFO"
                    c:identifier="GI_IS_VFUNC_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/givfuncinfo.h"
           line="51">Checks if @info is a [struct@GIRepository.VFuncInfo] (or a derived type).</doc>
      <source-position filename="girepository/givfuncinfo.h" line="59"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/givfuncinfo.h"
               line="53">an info structure</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="InterfaceInfo"
           c:symbol-prefix="interface_info"
           c:type="GIInterfaceInfo"
           version="2.80"
           parent="RegisteredTypeInfo"
           glib:type-name="GIInterfaceInfo"
           glib:get-type="gi_interface_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/giinterfaceinfo.c"
           line="35">`GIInterfaceInfo` represents a `GInterface` type.

A `GInterface` has methods, fields, properties, signals,
interfaces, constants, virtual functions and prerequisites.</doc>
      <method name="find_method"
              c:identifier="gi_interface_info_find_method"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="218">Obtain a method of the interface type given a @name.

`NULL` will be returned if there’s no method available with that name.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="84"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="227">The [class@GIRepository.FunctionInfo] or
  `NULL` if none found. Free the struct by calling
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="220">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="221">name of method to obtain</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_signal"
              c:identifier="gi_interface_info_find_signal"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="308">Obtain a signal of the interface type given a @name.

`NULL` will be returned if there’s no signal available with that name.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="95"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="317">The [class@GIRepository.SignalInfo] or
  `NULL` if none found. Free the struct by calling
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="SignalInfo" c:type="GISignalInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="310">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="311">name of signal to find</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_vfunc"
              c:identifier="gi_interface_info_find_vfunc"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="405">Locate a virtual function slot with name @name.

See the documentation for [method@GIRepository.ObjectInfo.find_vfunc] for
more information on virtuals.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="106"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="415">The [class@GIRepository.VFuncInfo], or
  `NULL` if none found. Free it with [method@GIRepository.BaseInfo.unref]
  when done.</doc>
          <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="407">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="408">The name of a virtual function to find.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_constant"
              c:identifier="gi_interface_info_get_constant"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="467">Obtain an interface type constant at index @n.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="113"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="474">The [class@GIRepository.ConstantInfo]. Free the
  struct by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="ConstantInfo" c:type="GIConstantInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="469">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="470">index of constant to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_iface_struct"
              c:identifier="gi_interface_info_get_iface_struct"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="506">Returns the layout C structure associated with this `GInterface`.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="118"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="512">The [class@GIRepository.StructInfo] or
  `NULL` if unknown. Free it with [method@GIRepository.BaseInfo.unref] when
  done.</doc>
          <type name="StructInfo" c:type="GIStructInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="508">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_method"
              c:identifier="gi_interface_info_get_method"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="182">Obtain an interface type method at index @n.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="80"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="189">The [class@GIRepository.FunctionInfo]. Free the
  struct by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="184">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="185">index of method to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_constants"
              c:identifier="gi_interface_info_get_n_constants"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="444">Obtain the number of constants that this interface type has.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="450">number of constants</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="446">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_methods"
              c:identifier="gi_interface_info_get_n_methods"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="159">Obtain the number of methods that this interface type has.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="165">number of methods</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="161">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_prerequisites"
              c:identifier="gi_interface_info_get_n_prerequisites"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="46">Obtain the number of prerequisites for this interface type.

A prerequisite is another interface that needs to be implemented for
interface, similar to a base class for [class@GObject.Object]s.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="55">number of prerequisites</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="48">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_properties"
              c:identifier="gi_interface_info_get_n_properties"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="101">Obtain the number of properties that this interface type has.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="70"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="107">number of properties</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="103">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_signals"
              c:identifier="gi_interface_info_get_n_signals"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="248">Obtain the number of signals that this interface type has.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="88"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="254">number of signals</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="250">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_vfuncs"
              c:identifier="gi_interface_info_get_n_vfuncs"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="344">Obtain the number of virtual functions that this interface type has.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="99"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="350">number of virtual functions</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="346">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_prerequisite"
              c:identifier="gi_interface_info_get_prerequisite"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="72">Obtain an interface type’s prerequisite at index @n.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="79">The prerequisite as a [class@GIRepository.BaseInfo].
  Free the struct by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="BaseInfo" c:type="GIBaseInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="74">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="75">index of prerequisite to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_property"
              c:identifier="gi_interface_info_get_property"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="124">Obtain an interface type property at index @n.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="73"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="131">The [class@GIRepository.PropertyInfo]. Free the
  struct by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="PropertyInfo" c:type="GIPropertyInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="126">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="127">index of property to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_signal"
              c:identifier="gi_interface_info_get_signal"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="271">Obtain an interface type signal at index @n.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="91"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="278">The [class@GIRepository.SignalInfo]. Free the
  struct by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="SignalInfo" c:type="GISignalInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="273">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="274">index of signal to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_vfunc"
              c:identifier="gi_interface_info_get_vfunc"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giinterfaceinfo.c"
             line="367">Obtain an interface type virtual function at index @n.</doc>
        <source-position filename="girepository/giinterfaceinfo.h" line="102"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giinterfaceinfo.c"
               line="374">the [class@GIRepository.VFuncInfo]. Free the struct
  by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="369">a #GIInterfaceInfo</doc>
            <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giinterfaceinfo.c"
                 line="370">index of virtual function to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <enumeration name="InvokeError"
                 version="2.80"
                 c:type="GIInvokeError"
                 glib:error-domain="gi-invoke-error-quark">
      <doc xml:space="preserve"
           filename="girepository/gifunctioninfo.h"
           line="86">An error occurring while invoking a function via
[method@GIRepository.FunctionInfo.invoke].</doc>
      <source-position filename="girepository/gifunctioninfo.h" line="104"/>
      <member name="failed" value="0" c:identifier="GI_INVOKE_ERROR_FAILED">
        <doc xml:space="preserve"
             filename="girepository/gifunctioninfo.h"
             line="88">invocation failed, unknown error.</doc>
      </member>
      <member name="symbol_not_found"
              value="1"
              c:identifier="GI_INVOKE_ERROR_SYMBOL_NOT_FOUND">
        <doc xml:space="preserve"
             filename="girepository/gifunctioninfo.h"
             line="89">symbol couldn’t be found in any of the
  libraries associated with the typelib of the function.</doc>
      </member>
      <member name="argument_mismatch"
              value="2"
              c:identifier="GI_INVOKE_ERROR_ARGUMENT_MISMATCH">
        <doc xml:space="preserve"
             filename="girepository/gifunctioninfo.h"
             line="91">the arguments provided didn’t match
  the expected arguments for the function’s type signature.</doc>
      </member>
    </enumeration>
    <function-macro name="OBJECT_INFO"
                    c:identifier="GI_OBJECT_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giobjectinfo.h"
           line="80">Casts a [type@GIRepository.ObjectInfo] or derived pointer into a
`(GIObjectInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/giobjectinfo.h" line="92"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.h"
               line="82">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="ObjectInfo"
           c:symbol-prefix="object_info"
           c:type="GIObjectInfo"
           version="2.80"
           parent="RegisteredTypeInfo"
           glib:type-name="GIObjectInfo"
           glib:get-type="gi_object_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/giobjectinfo.c"
           line="35">`GIObjectInfo` represents a classed type.

Classed types in [type@GObject.Type] inherit from
[type@GObject.TypeInstance]; the most common type is [class@GObject.Object].

A `GIObjectInfo` doesn’t represent a specific instance of a classed type,
instead this represent the object type (i.e. the class).

A `GIObjectInfo` has methods, fields, properties, signals, interfaces,
constants and virtual functions.</doc>
      <method name="find_method"
              c:identifier="gi_object_info_find_method"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="457">Obtain a method of the object type given a @name.

`NULL` will be returned if there’s no method available with that name.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="152"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="466">The [class@GIRepository.FunctionInfo],
  or `NULL` if no method could be found. Free the struct by calling
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="459">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="460">name of method to obtain</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_method_using_interfaces"
              c:identifier="gi_object_info_find_method_using_interfaces"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="495">Obtain a method of the object given a @name, searching both the
object @info and any interfaces it implements.

`NULL` will be returned if there’s no method available with that name.

Note that this function does *not* search parent classes; you will have
to chain up if that’s desired.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="157"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="512">The [class@GIRepository.FunctionInfo],
  or `NULL` if none was found. Free the struct by calling
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="497">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="498">name of method to obtain</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="declarer"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="499">The
  [class@GIRepository.ObjectInfo] or [class@GIRepository.InterfaceInfo] which
  declares the method, or `NULL` to ignore. If no method is found, this will
  return `NULL`.</doc>
            <type name="BaseInfo" c:type="GIBaseInfo**"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_signal"
              c:identifier="gi_object_info_find_signal"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="646">Obtain a signal of the object type given a @name.

`NULL` will be returned if there’s no signal available with that name.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="171"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="655">The [class@GIRepository.SignalInfo],
  or `NULL` if no signal could be found. Free the struct by calling
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="SignalInfo" c:type="GISignalInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="648">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="649">name of signal</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_vfunc"
              c:identifier="gi_object_info_find_vfunc"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="737">Locate a virtual function slot with name @name.

Note that the namespace for virtuals is distinct from that of methods; there
may or may not be a concrete method associated for a virtual. If there is
one, it may be retrieved using [method@GIRepository.VFuncInfo.get_invoker],
otherwise that method will return `NULL`.

See the documentation for [method@GIRepository.VFuncInfo.get_invoker] for
more information on invoking virtuals.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="183"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="752">The [class@GIRepository.VFuncInfo], or
  `NULL` if none is found. Free it with [method@GIRepository.BaseInfo.unref]
  when done.</doc>
          <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="739">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="740">the name of a virtual function to find.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_vfunc_using_interfaces"
              c:identifier="gi_object_info_find_vfunc_using_interfaces"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="783">Locate a virtual function slot with name @name, searching both the object
@info and any interfaces it implements.

`NULL` will be returned if there’s no vfunc available with that name.

Note that the namespace for virtuals is distinct from that of methods; there
may or may not be a concrete method associated for a virtual. If there is
one, it may be retrieved using [method@GIRepository.VFuncInfo.get_invoker],
otherwise that method will return `NULL`.

Note that this function does *not* search parent classes; you will have
to chain up if that’s desired.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="187"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="805">The [class@GIRepository.VFuncInfo],
  or `NULL` if none was found. Free the struct by calling
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="785">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="786">name of vfunc to obtain</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="declarer"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="787">The
  [class@GIRepository.ObjectInfo] or [class@GIRepository.InterfaceInfo] which
  declares the vfunc, or `NULL` to ignore. If no vfunc is found, this will
  return `NULL`.</doc>
            <type name="BaseInfo" c:type="GIBaseInfo**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_abstract"
              c:identifier="gi_object_info_get_abstract"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="114">Obtain if the object type is an abstract type, i.e. if it cannot be
instantiated.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="112"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="121">`TRUE` if the object type is abstract</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="116">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_class_struct"
              c:identifier="gi_object_info_get_class_struct"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="916">Every [class@GObject.Object] has two structures; an instance structure and a
class structure.  This function returns the metadata for the class structure.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="199"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="923">The [class@GIRepository.StructInfo] or
  `NULL` if it’s unknown. Free with [method@GIRepository.BaseInfo.unref] when
  done.</doc>
          <type name="StructInfo" c:type="GIStructInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="918">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_constant"
              c:identifier="gi_object_info_get_constant"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="875">Obtain an object type constant at index @n.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="195"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="882">The [class@GIRepository.ConstantInfo]. Free the
  struct by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="ConstantInfo" c:type="GIConstantInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="877">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="878">index of constant to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_field"
              c:identifier="gi_object_info_get_field"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="309">Obtain an object type field at index @n.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="134"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="316">The [class@GIRepository.FieldInfo]. Free the struct
  by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FieldInfo" c:type="GIFieldInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="311">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="312">index of field to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_final"
              c:identifier="gi_object_info_get_final"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="138">Checks whether the object type is a final type, i.e. if it cannot
be derived.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="145">`TRUE` if the object type is final</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="140">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_fundamental"
              c:identifier="gi_object_info_get_fundamental"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="162">Obtain if the object type is of a fundamental type which is not
`G_TYPE_OBJECT`.

This is mostly for supporting `GstMiniObject`.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="171">`TRUE` if the object type is a fundamental type</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="164">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_get_value_function_name"
              c:identifier="gi_object_info_get_get_value_function_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="1146">Obtain the symbol name of the function that should be called to convert
an object instance pointer of this object type to a [type@GObject.Value].

It’s mainly used for fundamental types. The type signature for the symbol
is [type@GIRepository.ObjectInfoGetValueFunction]. To fetch the function
pointer see [method@GIRepository.ObjectInfo.get_get_value_function_pointer].</doc>
        <source-position filename="girepository/giobjectinfo.h" line="224"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="1157">the symbol, or `NULL` if the object type has no
  get-value function</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="1148">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_get_value_function_pointer"
              c:identifier="gi_object_info_get_get_value_function_pointer"
              version="2.80"
              introspectable="0">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="1178">Obtain a pointer to a function which can be used to extract an instance of
this object type out of a [type@GObject.Value].

This takes derivation into account and will reversely traverse
the base classes of this type, starting at the top type.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="227"/>
        <return-value nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="1188">the function pointer, or `NULL` if the object type has
  no get-value function</doc>
          <type name="ObjectInfoGetValueFunction"
                c:type="GIObjectInfoGetValueFunction"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="1180">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_interface"
              c:identifier="gi_object_info_get_interface"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="258">Obtain an object type interface at index @n.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="127"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="265">The [class@GIRepository.InterfaceInfo]. Free the
  struct by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="InterfaceInfo" c:type="GIInterfaceInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="260">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="261">index of interface to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_method"
              c:identifier="gi_object_info_get_method"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="418">Obtain an object type method at index @n.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="148"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="425">The [class@GIRepository.FunctionInfo]. Free the
  struct by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="420">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="421">index of method to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_constants"
              c:identifier="gi_object_info_get_n_constants"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="852">Obtain the number of constants that this object type has.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="192"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="858">number of constants</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="854">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_fields"
              c:identifier="gi_object_info_get_n_fields"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="286">Obtain the number of fields that this object type has.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="292">number of fields</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="288">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_interfaces"
              c:identifier="gi_object_info_get_n_interfaces"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="235">Obtain the number of interfaces that this object type has.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="124"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="241">number of interfaces</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="237">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_methods"
              c:identifier="gi_object_info_get_n_methods"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="395">Obtain the number of methods that this object type has.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="145"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="401">number of methods</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="397">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_properties"
              c:identifier="gi_object_info_get_n_properties"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="336">Obtain the number of properties that this object type has.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="138"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="342">number of properties</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="338">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_signals"
              c:identifier="gi_object_info_get_n_signals"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="559">Obtain the number of signals that this object type has.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="163"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="565">number of signals</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="561">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_vfuncs"
              c:identifier="gi_object_info_get_n_vfuncs"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="674">Obtain the number of virtual functions that this object type has.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="176"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="680">number of virtual functions</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="676">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent"
              c:identifier="gi_object_info_get_parent"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="86">Obtain the parent of the object type.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="121"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="92">The `GIObjectInfo`. Free the struct by
  calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="ObjectInfo" c:type="GIObjectInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="88">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_property"
              c:identifier="gi_object_info_get_property"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="358">Obtain an object type property at index @n.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="141"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="365">The [class@GIRepository.PropertyInfo]. Free the
  struct by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="PropertyInfo" c:type="GIPropertyInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="360">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="361">index of property to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_ref_function_name"
              c:identifier="gi_object_info_get_ref_function_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="980">Obtain the symbol name of the function that should be called to ref this
object type.

It’s mainly used for fundamental types. The type signature for
the symbol is [type@GIRepository.ObjectInfoRefFunction]. To fetch the
function pointer see
[method@GIRepository.ObjectInfo.get_ref_function_pointer].</doc>
        <source-position filename="girepository/giobjectinfo.h" line="203"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="992">the symbol, or `NULL` if the object type has no ref
  function</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="982">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ref_function_pointer"
              c:identifier="gi_object_info_get_ref_function_pointer"
              version="2.80"
              introspectable="0">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="1013">Obtain a pointer to a function which can be used to
increase the reference count an instance of this object type.

This takes derivation into account and will reversely traverse
the base classes of this type, starting at the top type.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="206"/>
        <return-value nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="1023">the function pointer, or `NULL` if the object type has
  no ref function</doc>
          <type name="ObjectInfoRefFunction" c:type="GIObjectInfoRefFunction"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="1015">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_set_value_function_name"
              c:identifier="gi_object_info_get_set_value_function_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="1091">Obtain the symbol name of the function that should be called to set a
[type@GObject.Value], given an object instance pointer of this object type.

It’s mainly used for fundamental types. The type signature for the symbol
is [type@GIRepository.ObjectInfoSetValueFunction]. To fetch the function
pointer see [method@GIRepository.ObjectInfo.get_set_value_function_pointer].</doc>
        <source-position filename="girepository/giobjectinfo.h" line="217"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="1102">the symbol, or `NULL` if the object type has no
  set-value function</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="1093">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_set_value_function_pointer"
              c:identifier="gi_object_info_get_set_value_function_pointer"
              version="2.80"
              introspectable="0">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="1123">Obtain a pointer to a function which can be used to set a
[type@GObject.Value], given an instance of this object type.

This takes derivation into account and will reversely traverse
the base classes of this type, starting at the top type.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="220"/>
        <return-value nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="1133">the function pointer, or `NULL` if the object type has
  no set-value function</doc>
          <type name="ObjectInfoSetValueFunction"
                c:type="GIObjectInfoSetValueFunction"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="1125">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_signal"
              c:identifier="gi_object_info_get_signal"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="598">Obtain an object type signal at index @n.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="166"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="605">The [class@GIRepository.SignalInfo]. Free the
  struct by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="SignalInfo" c:type="GISignalInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="600">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="601">index of signal to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_type_init_function_name"
              c:identifier="gi_object_info_get_type_init_function_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="211">Obtain the name of the function which, when called, will return the
[type@GObject.Type] for this object type.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="109"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="218">the type init function name</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="213">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_type_name"
              c:identifier="gi_object_info_get_type_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="188">Obtain the name of the object’s class/type.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="106"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="194">name of the object’s type</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="190">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_unref_function_name"
              c:identifier="gi_object_info_get_unref_function_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="1036">Obtain the symbol name of the function that should be called to unref this
object type.

It’s mainly used for fundamental types. The type signature for the symbol is
[type@GIRepository.ObjectInfoUnrefFunction]. To fetch the function pointer
see [method@GIRepository.ObjectInfo.get_unref_function_pointer].</doc>
        <source-position filename="girepository/giobjectinfo.h" line="210"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="1047">the symbol, or `NULL` if the object type has no unref
  function</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="1038">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_unref_function_pointer"
              c:identifier="gi_object_info_get_unref_function_pointer"
              version="2.80"
              introspectable="0">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="1068">Obtain a pointer to a function which can be used to
decrease the reference count an instance of this object type.

This takes derivation into account and will reversely traverse
the base classes of this type, starting at the top type.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="213"/>
        <return-value nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="1078">the function pointer, or `NULL` if the object type has
  no unref function</doc>
          <type name="ObjectInfoUnrefFunction"
                c:type="GIObjectInfoUnrefFunction"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="1070">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_vfunc"
              c:identifier="gi_object_info_get_vfunc"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.c"
             line="697">Obtain an object type virtual function at index @n.</doc>
        <source-position filename="girepository/giobjectinfo.h" line="179"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.c"
               line="704">The [class@GIRepository.VFuncInfo]. Free the struct
  by calling [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="699">a #GIObjectInfo</doc>
            <type name="ObjectInfo" c:type="GIObjectInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giobjectinfo.c"
                 line="700">index of virtual function to get</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <callback name="ObjectInfoGetValueFunction"
              c:type="GIObjectInfoGetValueFunction"
              version="2.80"
              introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giobjectinfo.h"
           line="67">Extract an object instance out of @value.</doc>
      <source-position filename="girepository/giobjectinfo.h" line="76"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.h"
             line="73">the object instance</doc>
        <type name="gpointer" c:type="void*"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.h"
               line="69">a [type@GObject.Value]</doc>
          <type name="GObject.Value" c:type="const GValue*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ObjectInfoRefFunction"
              c:type="GIObjectInfoRefFunction"
              version="2.80"
              introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giobjectinfo.h"
           line="35">Increases the reference count of an object instance.</doc>
      <source-position filename="girepository/giobjectinfo.h" line="44"/>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve"
             filename="girepository/giobjectinfo.h"
             line="41">the object instance</doc>
        <type name="gpointer" c:type="void*"/>
      </return-value>
      <parameters>
        <parameter name="object"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.h"
               line="37">object instance pointer</doc>
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ObjectInfoSetValueFunction"
              c:type="GIObjectInfoSetValueFunction"
              version="2.80"
              introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giobjectinfo.h"
           line="56">Update @value and attach the object instance pointer @object to it.</doc>
      <source-position filename="girepository/giobjectinfo.h" line="65"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.h"
               line="58">a [type@GObject.Value]</doc>
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="object"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.h"
               line="59">object instance pointer</doc>
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ObjectInfoUnrefFunction"
              c:type="GIObjectInfoUnrefFunction"
              version="2.80"
              introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giobjectinfo.h"
           line="46">Decreases the reference count of an object instance.</doc>
      <source-position filename="girepository/giobjectinfo.h" line="54"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="object"
                   transfer-ownership="full"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="girepository/giobjectinfo.h"
               line="48">object instance pointer</doc>
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </callback>
    <function-macro name="PROPERTY_INFO"
                    c:identifier="GI_PROPERTY_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gipropertyinfo.h"
           line="37">Casts a [type@GIRepository.PropertyInfo] or derived pointer into a
`(GIPropertyInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/gipropertyinfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gipropertyinfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="PropertyInfo"
           c:symbol-prefix="property_info"
           c:type="GIPropertyInfo"
           version="2.80"
           parent="BaseInfo"
           glib:type-name="GIPropertyInfo"
           glib:get-type="gi_property_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/gipropertyinfo.c"
           line="35">`GIPropertyInfo` represents a property in a [class@GObject.Object].

A property belongs to either a [class@GIRepository.ObjectInfo] or a
[class@GIRepository.InterfaceInfo].</doc>
      <method name="get_flags"
              c:identifier="gi_property_info_get_flags"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gipropertyinfo.c"
             line="46">Obtain the flags for this property info.

See [type@GObject.ParamFlags] for more information about possible flag
values.</doc>
        <source-position filename="girepository/gipropertyinfo.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gipropertyinfo.c"
               line="55">the flags</doc>
          <type name="GObject.ParamFlags" c:type="GParamFlags"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gipropertyinfo.c"
                 line="48">a #GIPropertyInfo</doc>
            <type name="PropertyInfo" c:type="GIPropertyInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_getter"
              c:identifier="gi_property_info_get_getter"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gipropertyinfo.c"
             line="181">Obtains the getter function associated with this `GIPropertyInfo`.

The setter is only available for `G_PARAM_READABLE` properties.</doc>
        <source-position filename="girepository/gipropertyinfo.h" line="75"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gipropertyinfo.c"
               line="189">The function info, or `NULL` if not set.
  Free it with [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gipropertyinfo.c"
                 line="183">a #GIPropertyInfo</doc>
            <type name="PropertyInfo" c:type="GIPropertyInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ownership_transfer"
              c:identifier="gi_property_info_get_ownership_transfer"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gipropertyinfo.c"
             line="110">Obtain the ownership transfer for this property.

See [type@GIRepository.Transfer] for more information about transfer values.</doc>
        <source-position filename="girepository/gipropertyinfo.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gipropertyinfo.c"
               line="118">the transfer</doc>
          <type name="Transfer" c:type="GITransfer"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gipropertyinfo.c"
                 line="112">a #GIPropertyInfo</doc>
            <type name="PropertyInfo" c:type="GIPropertyInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_setter"
              c:identifier="gi_property_info_get_setter"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gipropertyinfo.c"
             line="140">Obtains the setter function associated with this `GIPropertyInfo`.

The setter is only available for `G_PARAM_WRITABLE` properties that
are also not `G_PARAM_CONSTRUCT_ONLY`.</doc>
        <source-position filename="girepository/gipropertyinfo.h" line="72"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gipropertyinfo.c"
               line="149">The function info, or `NULL` if not set.
  Free it with [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gipropertyinfo.c"
                 line="142">a #GIPropertyInfo</doc>
            <type name="PropertyInfo" c:type="GIPropertyInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_type_info"
              c:identifier="gi_property_info_get_type_info"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gipropertyinfo.c"
             line="87">Obtain the type information for the property @info.</doc>
        <source-position filename="girepository/gipropertyinfo.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/gipropertyinfo.c"
               line="93">The [class@GIRepository.TypeInfo]. Free it with
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="TypeInfo" c:type="GITypeInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gipropertyinfo.c"
                 line="89">a #GIPropertyInfo</doc>
            <type name="PropertyInfo" c:type="GIPropertyInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <function-macro name="REGISTERED_TYPE_INFO"
                    c:identifier="GI_REGISTERED_TYPE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giregisteredtypeinfo.h"
           line="38">Casts a [type@GIRepository.RegisteredTypeInfo] or derived pointer into a
`(GIRegisteredTypeInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/giregisteredtypeinfo.h"
                       line="50"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giregisteredtypeinfo.h"
               line="40">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="RegisteredTypeInfo"
           c:symbol-prefix="registered_type_info"
           c:type="GIRegisteredTypeInfo"
           version="2.80"
           parent="BaseInfo"
           abstract="1"
           glib:type-name="GIRegisteredTypeInfo"
           glib:get-type="gi_registered_type_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/giregisteredtypeinfo.c"
           line="37">`GIRegisteredTypeInfo` represents an entity with a [type@GObject.Type]
associated.

Could be either a [class@GIRepository.EnumInfo],
[class@GIRepository.InterfaceInfo], [class@GIRepository.ObjectInfo],
[class@GIRepository.StructInfo] or a [class@GIRepository.UnionInfo].

A registered type info struct has a name and a type function.

To get the name call [method@GIRepository.RegisteredTypeInfo.get_type_name].
Most users want to call [method@GIRepository.RegisteredTypeInfo.get_g_type]
and don’t worry about the rest of the details.

If the registered type is a subtype of `G_TYPE_BOXED`,
[method@GIRepository.RegisteredTypeInfo.is_boxed] will return true, and
[method@GIRepository.RegisteredTypeInfo.get_type_name] is guaranteed to
return a non-`NULL` value. This is relevant for the
[class@GIRepository.StructInfo] and [class@GIRepository.UnionInfo]
subclasses.</doc>
      <method name="get_g_type"
              c:identifier="gi_registered_type_info_get_g_type"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giregisteredtypeinfo.c"
             line="124">Obtain the [type@GObject.Type] for this registered type.

If there is no type information associated with @info, or the shared library
which provides the `type_init` function for @info cannot be called, then
`G_TYPE_NONE` is returned.</doc>
        <source-position filename="girepository/giregisteredtypeinfo.h"
                         line="70"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giregisteredtypeinfo.c"
               line="134">the [type@GObject.Type], or `G_TYPE_NONE` if unknown</doc>
          <type name="GType" c:type="GType"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giregisteredtypeinfo.c"
                 line="126">a #GIRegisteredTypeInfo</doc>
            <type name="RegisteredTypeInfo" c:type="GIRegisteredTypeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_type_init_function_name"
              c:identifier="gi_registered_type_info_get_type_init_function_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giregisteredtypeinfo.c"
             line="92">Obtain the type init function for @info.

The type init function is the function which will register the
[type@GObject.Type] within the GObject type system. Usually this is not
called by language bindings or applications — use
[method@GIRepository.RegisteredTypeInfo.get_g_type] directly instead.</doc>
        <source-position filename="girepository/giregisteredtypeinfo.h"
                         line="67"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giregisteredtypeinfo.c"
               line="103">the symbol name of the type init function, suitable for
  passing into [method@GModule.Module.symbol], or `NULL` if unknown</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giregisteredtypeinfo.c"
                 line="94">a #GIRegisteredTypeInfo</doc>
            <type name="RegisteredTypeInfo" c:type="GIRegisteredTypeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_type_name"
              c:identifier="gi_registered_type_info_get_type_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giregisteredtypeinfo.c"
             line="63">Obtain the type name of the struct within the GObject type system.

This type can be passed to [func@GObject.type_name] to get a
[type@GObject.Type].</doc>
        <source-position filename="girepository/giregisteredtypeinfo.h"
                         line="64"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giregisteredtypeinfo.c"
               line="72">the type name, or `NULL` if unknown</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giregisteredtypeinfo.c"
                 line="65">a #GIRegisteredTypeInfo</doc>
            <type name="RegisteredTypeInfo" c:type="GIRegisteredTypeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_boxed"
              c:identifier="gi_registered_type_info_is_boxed"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giregisteredtypeinfo.c"
             line="165">Get whether the registered type is a boxed type.

A boxed type is a subtype of the fundamental `G_TYPE_BOXED` type.
It’s a type which has registered a [type@GObject.Type], and which has
associated copy and free functions.

Most boxed types are `struct`s; some are `union`s; and it’s possible for a
boxed type to be neither, but that is currently unsupported by
libgirepository. It’s also possible for a `struct` or `union` to have
associated copy and/or free functions *without* being a boxed type, by virtue
of not having registered a [type@GObject.Type].

This function will return false for [type@GObject.Type]s which are not boxed,
such as classes or interfaces. It will also return false for the `struct`s
associated with a class or interface, which return true from
[method@GIRepository.StructInfo.is_gtype_struct].</doc>
        <source-position filename="girepository/giregisteredtypeinfo.h"
                         line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giregisteredtypeinfo.c"
               line="186">true if @info is a boxed type</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giregisteredtypeinfo.c"
                 line="167">a #GIRegisteredTypeInfo</doc>
            <type name="RegisteredTypeInfo" c:type="GIRegisteredTypeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <class name="Repository"
           c:symbol-prefix="repository"
           c:type="GIRepository"
           version="2.80"
           parent="GObject.Object"
           glib:type-name="GIRepository"
           glib:get-type="gi_repository_get_type"
           glib:type-struct="RepositoryClass">
      <doc xml:space="preserve"
           filename="girepository/girepository.c"
           line="41">`GIRepository` is used to manage repositories of namespaces. Namespaces
are represented on disk by type libraries (`.typelib` files).

The individual pieces of API within a type library are represented by
subclasses of [class@GIRepository.BaseInfo]. These can be found using
methods like [method@GIRepository.Repository.find_by_name] or
[method@GIRepository.Repository.get_info].

You are responsible for ensuring that the lifetime of the
[class@GIRepository.Repository] exceeds that of the lifetime of any of its
[class@GIRepository.BaseInfo]s. This cannot be guaranteed by using internal
references within libgirepository as that would affect performance.

### Discovery of type libraries

`GIRepository` will typically look for a `girepository-1.0` directory
under the library directory used when compiling gobject-introspection. On a
standard Linux system this will end up being `/usr/lib/girepository-1.0`.

It is possible to control the search paths programmatically, using
[method@GIRepository.Repository.prepend_search_path]. It is also possible to
modify the search paths by using the `GI_TYPELIB_PATH` environment variable.
The environment variable takes precedence over the default search path
and the [method@GIRepository.Repository.prepend_search_path] calls.

### Namespace ordering

In situations where namespaces may be searched in order, or returned in a
list, the namespaces will be returned in alphabetical order, with all fully
loaded namespaces being returned before any lazily loaded ones (those loaded
with `GI_REPOSITORY_LOAD_FLAG_LAZY`). This allows for deterministic and
reproducible results.

Similarly, if a symbol (such as a `GType` or error domain) is being searched
for in the set of loaded namespaces, the namespaces will be searched in that
order. In particular, this means that a symbol which exists in two namespaces
will always be returned from the alphabetically-higher namespace. This should
only happen in the case of `Gio` and `GioUnix`/`GioWin32`, which all refer to
the same `.so` file and expose overlapping sets of symbols. Symbols should
always end up being resolved to `GioUnix` or `GioWin32` if they are platform
dependent, rather than `Gio` itself.</doc>
      <source-position filename="girepository/girepository.h" line="61"/>
      <constructor name="new" c:identifier="gi_repository_new" version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="961">Create a new [class@GIRepository.Repository].</doc>
        <source-position filename="girepository/girepository.h" line="81"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="966">a new [class@GIRepository.Repository]</doc>
          <type name="Repository" c:type="GIRepository*"/>
        </return-value>
      </constructor>
      <function name="dump"
                c:identifier="gi_repository_dump"
                version="2.80"
                throws="1">
        <doc xml:space="preserve"
             filename="girepository/gdump.c"
             line="588">Dump the introspection data from the types specified in @input_filename to
@output_filename.

The input file should be a
UTF-8 Unix-line-ending text file, with each line containing either
`get-type:` followed by the name of a [type@GObject.Type] `_get_type`
function, or `error-quark:` followed by the name of an error quark function.
No extra whitespace is allowed.

This function will overwrite the contents of the output file.</doc>
        <source-position filename="girepository/girepository.h" line="192"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gdump.c"
               line="605">true on success, false on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="input_filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gdump.c"
                 line="590">Input filename (for example `input.txt`)</doc>
            <type name="filename" c:type="const char*"/>
          </parameter>
          <parameter name="output_filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gdump.c"
                 line="591">Output filename (for example `output.xml`)</doc>
            <type name="filename" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <function name="dup_default"
                c:identifier="gi_repository_dup_default"
                version="2.86">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="2349">Gets the singleton process-global default `GIRepository`.

The singleton is needed for situations where you must coordinate between
bindings and libraries which also need to interact with introspection which
could affect the bindings. For example, a Python application using a
GObject-based library through `GIRepository` to load plugins also written in
Python.</doc>
        <source-position filename="girepository/girepository.h" line="246"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="2360">the global singleton repository</doc>
          <type name="Repository" c:type="GIRepository*"/>
        </return-value>
      </function>
      <function name="error_quark" c:identifier="gi_repository_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="get_option_group"
                c:identifier="gi_repository_get_option_group"
                version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="2183">Obtain the option group for girepository.

It’s used by the dumper and for programs that want to provide introspection
information</doc>
        <source-position filename="girepository/girepository.h" line="188"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="2191">the option group</doc>
          <type name="GLib.OptionGroup" c:type="GOptionGroup*"/>
        </return-value>
      </function>
      <method name="enumerate_versions"
              c:identifier="gi_repository_enumerate_versions"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="1844">Obtain an unordered list of versions (either currently loaded or
available) for @namespace_ in this @repository.

The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not
counted in @n_versions_out.</doc>
        <source-position filename="girepository/girepository.h" line="116"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="1856">the array of versions.</doc>
          <array length="1" zero-terminated="0" c:type="char**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1846">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1847">GI namespace, e.g. `Gtk`</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="n_versions_out"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1848">The number of versions returned.</doc>
            <type name="gsize" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_by_error_domain"
              c:identifier="gi_repository_find_by_error_domain"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="1218">Searches for the enum type corresponding to the given [type@GLib.Error]
domain.

Before calling this function for a particular namespace, you must call
[method@GIRepository.Repository.require] to load the namespace, or otherwise
ensure the namespace has already been loaded.</doc>
        <source-position filename="girepository/girepository.h" line="169"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="1230">[class@GIRepository.EnumInfo]
  representing metadata about @domain’s enum type, or `NULL` if none found</doc>
          <type name="EnumInfo" c:type="GIEnumInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1220">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="domain" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1221">a [type@GLib.Error] domain</doc>
            <type name="GLib.Quark" c:type="GQuark"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_by_gtype"
              c:identifier="gi_repository_find_by_gtype"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="1078">Searches all loaded namespaces for a particular [type@GObject.Type].

Note that in order to locate the metadata, the namespace corresponding to
the type must first have been loaded.  There is currently no
mechanism for determining the namespace which corresponds to an
arbitrary [type@GObject.Type] — thus, this function will operate most
reliably when you know the [type@GObject.Type] is from a loaded namespace.</doc>
        <source-position filename="girepository/girepository.h" line="150"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="1091">[class@GIRepository.BaseInfo]
  representing metadata about @type, or `NULL` if none found</doc>
          <type name="BaseInfo" c:type="GIBaseInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1080">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1081">[type@GObject.Type] to search for</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_by_name"
              c:identifier="gi_repository_find_by_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="1157">Searches for a particular entry in a namespace.

Before calling this function for a particular namespace, you must call
[method@GIRepository.Repository.require] to load the namespace, or otherwise
ensure the namespace has already been loaded.</doc>
        <source-position filename="girepository/girepository.h" line="111"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="1169">[class@GIRepository.BaseInfo]
  representing metadata about @name, or `NULL` if none found</doc>
          <type name="BaseInfo" c:type="GIBaseInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1159">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1160">Namespace which will be searched</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1161">Entry name to find</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_c_prefix"
              c:identifier="gi_repository_get_c_prefix"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="1500">This function returns the ‘C prefix’, or the C level namespace
associated with the given introspection namespace.

Each C symbol starts with this prefix, as well each [type@GObject.Type] in
the library.

Note: The namespace must have already been loaded using a function
such as [method@GIRepository.Repository.require] before calling this
function.</doc>
        <source-position filename="girepository/girepository.h" line="180"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="1515">C namespace prefix, or `NULL` if none associated</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1502">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1503">Namespace to inspect</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_dependencies"
              c:identifier="gi_repository_get_dependencies"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="817">Retrieves all (transitive) versioned dependencies for
@namespace_.

The returned strings are of the form `namespace-version`.

Note: @namespace_ must have already been loaded using a function
such as [method@GIRepository.Repository.require] before calling this
function.

To get only the immediate dependencies for @namespace_, use
[method@GIRepository.Repository.get_immediate_dependencies].

The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not
counted in @n_dependencies_out.</doc>
        <source-position filename="girepository/girepository.h" line="141"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="839">String array of
  all versioned dependencies</doc>
          <array length="1" zero-terminated="0" c:type="char**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="819">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="820">Namespace of interest</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="n_dependencies_out"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="821">Return location for the number of
  dependencies</doc>
            <type name="gsize" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_immediate_dependencies"
              c:identifier="gi_repository_get_immediate_dependencies"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="727">Return an array of the immediate versioned dependencies for @namespace_.
Returned strings are of the form `namespace-version`.

Note: @namespace_ must have already been loaded using a function
such as [method@GIRepository.Repository.require] before calling this
function.

To get the transitive closure of dependencies for @namespace_, use
[method@GIRepository.Repository.get_dependencies].

The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not
counted in @n_dependencies_out.</doc>
        <source-position filename="girepository/girepository.h" line="136"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="747">String array of
  immediate versioned dependencies</doc>
          <array length="1" zero-terminated="0" c:type="char**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="729">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="730">Namespace of interest</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="n_dependencies_out"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="731">Return location for the number of
  dependencies</doc>
            <type name="gsize" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_info"
              c:identifier="gi_repository_get_info"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="1007">This function returns a particular metadata entry in the
given namespace @namespace_.

The namespace must have already been loaded before calling this function.
See [method@GIRepository.Repository.get_n_infos] to find the maximum number
of entries. It is an error to pass an invalid @idx to this function.</doc>
        <source-position filename="girepository/girepository.h" line="164"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="1020">[class@GIRepository.BaseInfo]
  containing metadata</doc>
          <type name="BaseInfo" c:type="GIBaseInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1009">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1010">Namespace to inspect</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1011">0-based offset into namespace metadata for entry</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_library_path"
              c:identifier="gi_repository_get_library_path"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="465">Returns the current search path [class@GIRepository.Repository] will use when
loading shared libraries referenced by imported namespaces.

The list is internal to [class@GIRepository.Repository] and should not be
freed, nor should its string elements.

The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not
counted in @n_paths_out.</doc>
        <source-position filename="girepository/girepository.h" line="96"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="479">list of search paths, most
  important first</doc>
          <array length="0" zero-terminated="0" c:type="const char* const*">
            <type name="filename"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="467">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="n_paths_out"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="468">The number of library paths returned.</doc>
            <type name="gsize" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_loaded_namespaces"
              c:identifier="gi_repository_get_loaded_namespaces"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="1361">Return the list of currently loaded namespaces.

The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not
counted in @n_namespaces_out.</doc>
        <source-position filename="girepository/girepository.h" line="146"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="1372">
  list of namespaces</doc>
          <array length="0" zero-terminated="0" c:type="char**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1363">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="n_namespaces_out"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1364">Return location for the number of
  namespaces</doc>
            <type name="gsize" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_infos"
              c:identifier="gi_repository_get_n_infos"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="975">This function returns the number of metadata entries in
given namespace @namespace_.

The namespace must have already been loaded before calling this function.</doc>
        <source-position filename="girepository/girepository.h" line="160"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="985">number of metadata entries</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="977">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="978">Namespace to inspect</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_object_gtype_interfaces"
              c:identifier="gi_repository_get_object_gtype_interfaces"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="1268">Look up the implemented interfaces for @gtype.

This function cannot fail per se; but for a totally ‘unknown’
[type@GObject.Type], it may return 0 implemented interfaces.

The semantics of this function are designed for a dynamic binding,
where in certain cases (such as a function which returns an
interface which may have ‘hidden’ implementation classes), not all
data may be statically known, and will have to be determined from
the [type@GObject.Type] of the object.  An example is
[func@Gio.File.new_for_path] returning a concrete class of
`GLocalFile`, which is a [type@GObject.Type] we see at runtime, but
not statically.</doc>
        <source-position filename="girepository/girepository.h" line="154"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1270">a #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1271">a [type@GObject.Type] whose fundamental type is `G_TYPE_OBJECT`</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="n_interfaces_out"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1272">Number of interfaces</doc>
            <type name="gsize" c:type="size_t*"/>
          </parameter>
          <parameter name="interfaces_out"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1273">Interfaces for @gtype</doc>
            <array length="1" zero-terminated="0" c:type="GIInterfaceInfo***">
              <type name="InterfaceInfo" c:type="GIInterfaceInfo**"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="get_search_path"
              c:identifier="gi_repository_get_search_path"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="393">Returns the current search path [class@GIRepository.Repository] will use when
loading typelib files.

The list is internal to [class@GIRepository.Repository] and should not be
freed, nor should its string elements.

The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not
counted in @n_paths_out.</doc>
        <source-position filename="girepository/girepository.h" line="92"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="407">list of search paths, most
  important first</doc>
          <array length="0" zero-terminated="0" c:type="const char* const*">
            <type name="filename"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="395">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="n_paths_out"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="396">The number of search paths returned.</doc>
            <type name="gsize" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_shared_libraries"
              c:identifier="gi_repository_get_shared_libraries"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="1432">This function returns an array of paths to the
shared C libraries associated with the given namespace @namespace_.

There may be no shared library path associated, in which case this
function will return `NULL`.

Note: The namespace must have already been loaded using a function
such as [method@GIRepository.Repository.require] before calling this
function.

The list is internal to [class@GIRepository.Repository] and should not be
freed, nor should its string elements.

The list is guaranteed to be `NULL` terminated. The `NULL` terminator is not
counted in @out_n_elements.</doc>
        <source-position filename="girepository/girepository.h" line="176"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="1455">Array of
  paths to shared libraries, or `NULL` if none are associated</doc>
          <array length="1" zero-terminated="0" c:type="const char* const*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1434">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1435">Namespace to inspect</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="out_n_elements"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1436">Return location for the number of elements
  in the returned array</doc>
            <type name="gsize" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_typelib_path"
              c:identifier="gi_repository_get_typelib_path"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="1539">If namespace @namespace_ is loaded, return the full path to the
.typelib file it was loaded from.

If the typelib for namespace @namespace_ was included in a shared library,
return the special string `&lt;builtin&gt;`.</doc>
        <source-position filename="girepository/girepository.h" line="173"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="1550">Filesystem path (or `&lt;builtin&gt;`) if
  successful, `NULL` if namespace is not loaded</doc>
          <type name="filename" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1541">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1542">GI namespace to use, e.g. `Gtk`</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_version"
              c:identifier="gi_repository_get_version"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="1399">This function returns the loaded version associated with the given
namespace @namespace_.

Note: The namespace must have already been loaded using a function
such as [method@GIRepository.Repository.require] before calling this
function.</doc>
        <source-position filename="girepository/girepository.h" line="183"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="1411">Loaded version</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1401">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="1402">Namespace to inspect</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_registered"
              c:identifier="gi_repository_is_registered"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="933">Check whether a particular namespace (and optionally, a specific
version thereof) is currently loaded.

This function is likely to only be useful in unusual circumstances; in order
to act upon metadata in the namespace, you should call
[method@GIRepository.Repository.require] instead which will ensure the
namespace is loaded, and return as quickly as this function will if it has
already been loaded.</doc>
        <source-position filename="girepository/girepository.h" line="106"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="948">`TRUE` if namespace-version is loaded, `FALSE` otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="935">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="936">Namespace of interest</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="version"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="937">Required version, may be `NULL` for latest</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_typelib"
              c:identifier="gi_repository_load_typelib"
              version="2.80"
              throws="1">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="885">Load the given @typelib into the repository.</doc>
        <source-position filename="girepository/girepository.h" line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="894">namespace of the loaded typelib</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="887">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="typelib" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="888">the typelib to load</doc>
            <type name="Typelib" c:type="GITypelib*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="889">flags affecting the loading operation</doc>
            <type name="RepositoryLoadFlags" c:type="GIRepositoryLoadFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepend_library_path"
              c:identifier="gi_repository_prepend_library_path"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="434">Prepends @directory to the search path that is used to
search shared libraries referenced by imported namespaces.

Multiple calls to this function all contribute to the final
list of paths.

The list of paths is unique to @repository. When a typelib is loaded by the
repository, the list of paths from the @repository at that instant is used
by the typelib for loading its modules.

If the library is not found in the directories configured
in this way, loading will fall back to the system library
path (i.e. `LD_LIBRARY_PATH` and `DT_RPATH` in ELF systems).
See the documentation of your dynamic linker for full details.</doc>
        <source-position filename="girepository/girepository.h" line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="436">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="directory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="437">a single directory to scan for shared libraries</doc>
            <type name="filename" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepend_search_path"
              c:identifier="gi_repository_prepend_search_path"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="372">Prepends @directory to the typelib search path.

See also: gi_repository_get_search_path().</doc>
        <source-position filename="girepository/girepository.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="374">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="directory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="375">directory name to prepend to the typelib
  search path</doc>
            <type name="filename" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="require"
              c:identifier="gi_repository_require"
              version="2.80"
              throws="1">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="2077">Force the namespace @namespace_ to be loaded if it isn’t already.

If @namespace_ is not loaded, this function will search for a
`.typelib` file using the repository search path.  In addition, a
version @version of namespace may be specified.  If @version is
not specified, the latest will be used.</doc>
        <source-position filename="girepository/girepository.h" line="121"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="2092">a pointer to the [type@GIRepository.Typelib] if
  successful, `NULL` otherwise</doc>
          <type name="Typelib" c:type="GITypelib*"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="2079">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="2080">GI namespace to use, e.g. `Gtk`</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="version"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="2081">Version of namespace, may be `NULL` for latest</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="2082">Set of [flags@GIRepository.RepositoryLoadFlags], may be 0</doc>
            <type name="RepositoryLoadFlags" c:type="GIRepositoryLoadFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="require_private"
              c:identifier="gi_repository_require_private"
              version="2.80"
              throws="1">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="2117">Force the namespace @namespace_ to be loaded if it isn’t already.

If @namespace_ is not loaded, this function will search for a
`.typelib` file within the private directory only. In addition, a
version @version of namespace should be specified.  If @version is
not specified, the latest will be used.</doc>
        <source-position filename="girepository/girepository.h" line="128"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="2134">a pointer to the [type@GIRepository.Typelib] if
  successful, `NULL` otherwise</doc>
          <type name="Typelib" c:type="GITypelib*"/>
        </return-value>
        <parameters>
          <instance-parameter name="repository" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="2119">A #GIRepository</doc>
            <type name="Repository" c:type="GIRepository*"/>
          </instance-parameter>
          <parameter name="typelib_dir" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="2120">Private directory where to find the requested
  typelib</doc>
            <type name="filename" c:type="const char*"/>
          </parameter>
          <parameter name="namespace_" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="2122">GI namespace to use, e.g. `Gtk`</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="version"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="2123">Version of namespace, may be `NULL` for latest</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/girepository.c"
                 line="2124">Set of [flags@GIRepository.RepositoryLoadFlags], may be 0</doc>
            <type name="RepositoryLoadFlags" c:type="GIRepositoryLoadFlags"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="RepositoryClass"
            c:type="GIRepositoryClass"
            glib:is-gtype-struct-for="Repository">
      <source-position filename="girepository/girepository.h" line="61"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="RepositoryError"
                 version="2.80"
                 c:type="GIRepositoryError">
      <doc xml:space="preserve"
           filename="girepository/girepository.h"
           line="196">An error code used with `GI_REPOSITORY_ERROR` in a [type@GLib.Error]
returned from a [class@GIRepository.Repository] routine.</doc>
      <source-position filename="girepository/girepository.h" line="217"/>
      <member name="typelib_not_found"
              value="0"
              c:identifier="GI_REPOSITORY_ERROR_TYPELIB_NOT_FOUND">
        <doc xml:space="preserve"
             filename="girepository/girepository.h"
             line="198">the typelib could not be found.</doc>
      </member>
      <member name="namespace_mismatch"
              value="1"
              c:identifier="GI_REPOSITORY_ERROR_NAMESPACE_MISMATCH">
        <doc xml:space="preserve"
             filename="girepository/girepository.h"
             line="199">the namespace does not match the
  requested namespace.</doc>
      </member>
      <member name="namespace_version_conflict"
              value="2"
              c:identifier="GI_REPOSITORY_ERROR_NAMESPACE_VERSION_CONFLICT">
        <doc xml:space="preserve"
             filename="girepository/girepository.h"
             line="201">the version of the
  typelib does not match the requested version.</doc>
      </member>
      <member name="library_not_found"
              value="3"
              c:identifier="GI_REPOSITORY_ERROR_LIBRARY_NOT_FOUND">
        <doc xml:space="preserve"
             filename="girepository/girepository.h"
             line="203">the library used by the typelib
  could not be found.</doc>
      </member>
    </enumeration>
    <bitfield name="RepositoryLoadFlags"
              version="2.80"
              c:type="GIRepositoryLoadFlags">
      <doc xml:space="preserve"
           filename="girepository/girepository.h"
           line="63">Flags that control how a typelib is loaded.</doc>
      <source-position filename="girepository/girepository.h" line="76"/>
      <member name="none"
              value="0"
              c:identifier="GI_REPOSITORY_LOAD_FLAG_NONE">
        <doc xml:space="preserve"
             filename="girepository/girepository.h"
             line="65">No flags set.</doc>
      </member>
      <member name="lazy"
              value="1"
              c:identifier="GI_REPOSITORY_LOAD_FLAG_LAZY">
        <doc xml:space="preserve"
             filename="girepository/girepository.h"
             line="66">Lazily load the typelib.</doc>
      </member>
    </bitfield>
    <function-macro name="SIGNAL_INFO"
                    c:identifier="GI_SIGNAL_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gisignalinfo.h"
           line="38">Casts a [type@GIRepository.SignalInfo] or derived pointer into a
`(GISignalInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/gisignalinfo.h" line="50"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gisignalinfo.h"
               line="40">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="STRUCT_INFO"
                    c:identifier="GI_STRUCT_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gistructinfo.h"
           line="37">Casts a [type@GIRepository.StructInfo] or derived pointer into a
`(GIStructInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/gistructinfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <enumeration name="ScopeType" version="2.80" c:type="GIScopeType">
      <doc xml:space="preserve"
           filename="girepository/gitypes.h"
           line="253">Scope type of a [class@GIRepository.ArgInfo] representing callback,
determines how the callback is invoked and is used to decided when the invoke
structs can be freed.</doc>
      <source-position filename="girepository/gitypes.h" line="279"/>
      <member name="invalid" value="0" c:identifier="GI_SCOPE_TYPE_INVALID">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="255">The argument is not of callback type.</doc>
      </member>
      <member name="call" value="1" c:identifier="GI_SCOPE_TYPE_CALL">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="256">The callback and associated `user_data` is only
  used during the call to this function.</doc>
      </member>
      <member name="async" value="2" c:identifier="GI_SCOPE_TYPE_ASYNC">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="258">The callback and associated `user_data` is
  only used until the callback is invoked, and the callback.
  is invoked always exactly once.</doc>
      </member>
      <member name="notified" value="3" c:identifier="GI_SCOPE_TYPE_NOTIFIED">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="261">The callback and associated
  `user_data` is used until the caller is notified via the
  [type@GLib.DestroyNotify].</doc>
      </member>
      <member name="forever" value="4" c:identifier="GI_SCOPE_TYPE_FOREVER">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="264">The callback and associated `user_data` is
  used until the process terminates</doc>
      </member>
    </enumeration>
    <class name="SignalInfo"
           c:symbol-prefix="signal_info"
           c:type="GISignalInfo"
           version="2.80"
           parent="CallableInfo"
           glib:type-name="GISignalInfo"
           glib:get-type="gi_signal_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/gisignalinfo.c"
           line="35">`GISignalInfo` represents a signal.

It’s a sub-struct of [class@GIRepository.CallableInfo] and contains a set of
flags and a class closure.

See [class@GIRepository.CallableInfo] for information on how to retrieve
arguments and other metadata from the signal.</doc>
      <method name="get_class_closure"
              c:identifier="gi_signal_info_get_class_closure"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gisignalinfo.c"
             line="98">Obtain the class closure for this signal if one is set.

The class closure is a virtual function on the type that the signal belongs
to. If the signal lacks a closure, `NULL` will be returned.</doc>
        <source-position filename="girepository/gisignalinfo.h" line="67"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gisignalinfo.c"
               line="107">the class closure, or `NULL` if none is
  set</doc>
          <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gisignalinfo.c"
                 line="100">a #GISignalInfo</doc>
            <type name="SignalInfo" c:type="GISignalInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_flags"
              c:identifier="gi_signal_info_get_flags"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gisignalinfo.c"
             line="49">Obtain the flags for this signal info.

See [flags@GObject.SignalFlags] for more information about possible flag
values.</doc>
        <source-position filename="girepository/gisignalinfo.h" line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gisignalinfo.c"
               line="58">the flags</doc>
          <type name="GObject.SignalFlags" c:type="GSignalFlags"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gisignalinfo.c"
                 line="51">a #GISignalInfo</doc>
            <type name="SignalInfo" c:type="GISignalInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="true_stops_emit"
              c:identifier="gi_signal_info_true_stops_emit"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gisignalinfo.c"
             line="128">Obtain if the returning `TRUE` in the signal handler will stop the emission
of the signal.</doc>
        <source-position filename="girepository/gisignalinfo.h" line="70"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gisignalinfo.c"
               line="135">`TRUE` if returning `TRUE` stops the signal emission</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gisignalinfo.c"
                 line="130">a #GISignalInfo</doc>
            <type name="SignalInfo" c:type="GISignalInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <class name="StructInfo"
           c:symbol-prefix="struct_info"
           c:type="GIStructInfo"
           version="2.80"
           parent="RegisteredTypeInfo"
           glib:type-name="GIStructInfo"
           glib:get-type="gi_struct_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/gistructinfo.c"
           line="37">`GIStructInfo` represents a generic C structure type.

A structure has methods and fields.</doc>
      <method name="find_field"
              c:identifier="gi_struct_info_find_field"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="118">Obtain the type information for field named @name.</doc>
        <source-position filename="girepository/gistructinfo.h" line="70"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="125">The [class@GIRepository.FieldInfo], or
  `NULL` if not found. Free it with [method@GIRepository.BaseInfo.unref] when
  done.</doc>
          <type name="FieldInfo" c:type="GIFieldInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="120">a #GIStructInfo</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="121">a field name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_method"
              c:identifier="gi_struct_info_find_method"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="205">Obtain the type information for method named @name.</doc>
        <source-position filename="girepository/gistructinfo.h" line="81"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="212">The [class@GIRepository.FunctionInfo],
  or `NULL` if none was found. Free it with
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="207">a #GIStructInfo</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="208">a method name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_alignment"
              c:identifier="gi_struct_info_get_alignment"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="247">Obtain the required alignment of the structure.</doc>
        <source-position filename="girepository/gistructinfo.h" line="88"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="253">required alignment, in bytes</doc>
          <type name="gsize" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="249">a #GIStructInfo</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_copy_function_name"
              c:identifier="gi_struct_info_get_copy_function_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="306">Retrieves the name of the copy function for @info, if any is set.</doc>
        <source-position filename="girepository/gistructinfo.h" line="97"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="312">the name of the copy function, or `NULL`
  if the structure has no copy function</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="308">a struct information blob</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_field"
              c:identifier="gi_struct_info_get_field"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="95">Obtain the type information for field with specified index.</doc>
        <source-position filename="girepository/gistructinfo.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="102">The [class@GIRepository.FieldInfo]. Free it with
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FieldInfo" c:type="GIFieldInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="97">a #GIStructInfo</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="98">a field index</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_free_function_name"
              c:identifier="gi_struct_info_get_free_function_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="333">Retrieves the name of the free function for @info, if any is set.</doc>
        <source-position filename="girepository/gistructinfo.h" line="100"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="339">the name of the free function, or `NULL`
  if the structure has no free function</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="335">a struct information blob</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_method"
              c:identifier="gi_struct_info_get_method"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="178">Obtain the type information for method with specified index.</doc>
        <source-position filename="girepository/gistructinfo.h" line="77"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="185">The [class@GIRepository.FunctionInfo]. Free it with
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="180">a #GIStructInfo</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="181">a method index</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_fields"
              c:identifier="gi_struct_info_get_n_fields"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="47">Obtain the number of fields this structure has.</doc>
        <source-position filename="girepository/gistructinfo.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="53">number of fields</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="49">a #GIStructInfo</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_methods"
              c:identifier="gi_struct_info_get_n_methods"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="160">Obtain the number of methods this structure has.</doc>
        <source-position filename="girepository/gistructinfo.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="166">number of methods</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="162">a #GIStructInfo</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size"
              c:identifier="gi_struct_info_get_size"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="229">Obtain the total size of the structure.</doc>
        <source-position filename="girepository/gistructinfo.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="235">size of the structure, in bytes</doc>
          <type name="gsize" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="231">a #GIStructInfo</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_foreign"
              c:identifier="gi_struct_info_is_foreign"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="265">Gets whether the structure is foreign, i.e. if it’s expected to be overridden
by a native language binding instead of relying of introspected bindings.</doc>
        <source-position filename="girepository/gistructinfo.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="272">`TRUE` if the structure is foreign</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="267">a #GIStructInfo</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_gtype_struct"
              c:identifier="gi_struct_info_is_gtype_struct"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gistructinfo.c"
             line="284">Return true if this structure represents the ‘class structure’ for some
[class@GObject.Object] or `GInterface`.

This function is mainly useful to hide this kind of structure from generated
public APIs.</doc>
        <source-position filename="girepository/gistructinfo.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gistructinfo.c"
               line="294">`TRUE` if this is a class struct, `FALSE` otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gistructinfo.c"
                 line="286">a #GIStructInfo</doc>
            <type name="StructInfo" c:type="GIStructInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <function-macro name="TYPE_INFO"
                    c:identifier="GI_TYPE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gitypeinfo.h"
           line="37">Casts a [type@GIRepository.TypeInfo] or derived pointer into a
`(GITypeInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/gitypeinfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TYPE_TAG_IS_BASIC"
                    c:identifier="GI_TYPE_TAG_IS_BASIC"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gitypeinfo.h"
           line="61">Checks if @tag is a basic type.</doc>
      <source-position filename="girepository/gitypeinfo.h" line="69"/>
      <parameters>
        <parameter name="tag">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.h"
               line="63">a type tag</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TYPE_TAG_IS_CONTAINER"
                    c:identifier="GI_TYPE_TAG_IS_CONTAINER"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gitypeinfo.h"
           line="81">Checks if @tag is a container type. That is, a type which may have a nonnull
return from [method@GIRepository.TypeInfo.get_param_type].</doc>
      <source-position filename="girepository/gitypeinfo.h" line="90"/>
      <parameters>
        <parameter name="tag">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.h"
               line="83">a type tag</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TYPE_TAG_IS_NUMERIC"
                    c:identifier="GI_TYPE_TAG_IS_NUMERIC"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/gitypeinfo.h"
           line="71">Checks if @tag is a numeric type. That is, integer or floating point.</doc>
      <source-position filename="girepository/gitypeinfo.h" line="79"/>
      <parameters>
        <parameter name="tag">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.h"
               line="73">a type tag</doc>
        </parameter>
      </parameters>
    </function-macro>
    <constant name="TYPE_TAG_N_TYPES"
              value="22"
              c:type="GI_TYPE_TAG_N_TYPES"
              version="2.80">
      <doc xml:space="preserve"
           filename="girepository/gitypes.h"
           line="340">Number of entries in [enum@GIRepository.TypeTag].</doc>
      <source-position filename="girepository/gitypes.h" line="347"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <enumeration name="Transfer" version="2.80" c:type="GITransfer">
      <doc xml:space="preserve"
           filename="girepository/gitypes.h"
           line="198">`GITransfer` specifies who’s responsible for freeing the resources after an
ownership transfer is complete.

The transfer is the exchange of data between two parts, from the callee to
the caller.

The callee is either a function/method/signal or an object/interface where a
property is defined. The caller is the side accessing a property or calling a
function.

In the case of a containing type such as a list, an array or a hash table the
container itself is specified differently from the items within the
container. Each container is freed differently, check the documentation for
the types themselves for information on how to free them.</doc>
      <source-position filename="girepository/gitypes.h" line="235"/>
      <member name="nothing" value="0" c:identifier="GI_TRANSFER_NOTHING">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="200">Transfer nothing from the callee (function or the type
  instance the property belongs to) to the caller. The callee retains the
  ownership of the transfer and the caller doesn’t need to do anything to
  free up the resources of this transfer.</doc>
      </member>
      <member name="container" value="1" c:identifier="GI_TRANSFER_CONTAINER">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="204">Transfer the container (list, array, hash table) from
  the callee to the caller. The callee retains the ownership of the
  individual items in the container and the caller has to free up the
  container resources ([func@GLib.List.free],
  [func@GLib.HashTable.destroy], etc) of this transfer.</doc>
      </member>
      <member name="everything"
              value="2"
              c:identifier="GI_TRANSFER_EVERYTHING">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="209">Transfer everything, e.g. the container and its
  contents from the callee to the caller. This is the case when the callee
  creates a copy of all the data it returns. The caller is responsible for
  cleaning up the container and item resources of this transfer.</doc>
      </member>
    </enumeration>
    <class name="TypeInfo"
           c:symbol-prefix="type_info"
           c:type="GITypeInfo"
           version="2.80"
           parent="BaseInfo"
           glib:type-name="GITypeInfo"
           glib:get-type="gi_type_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/gitypeinfo.c"
           line="35">`GITypeInfo` represents a type, including information about direction and
transfer.

You can retrieve a type info from an argument (see
[class@GIRepository.ArgInfo]), a function’s return value (see
[class@GIRepository.FunctionInfo]), a field (see
[class@GIRepository.FieldInfo]), a property (see
[class@GIRepository.PropertyInfo]), a constant (see
[class@GIRepository.ConstantInfo]) or for a union discriminator (see
[class@GIRepository.UnionInfo]).

A type can either be a of a basic type which is a standard C primitive
type or an interface type. For interface types you need to call
[method@GIRepository.TypeInfo.get_interface] to get a reference to the base
info for that interface.</doc>
      <method name="argument_from_hash_pointer"
              c:identifier="gi_type_info_argument_from_hash_pointer"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="501">Convert a data pointer from a GLib data structure to a
[type@GIRepository.Argument].

GLib data structures, such as [type@GLib.List], [type@GLib.SList], and
[type@GLib.HashTable], all store data pointers.

In the case where the list or hash table is storing single types rather than
structs, these data pointers may have values stuffed into them via macros
such as `GPOINTER_TO_INT`.

Use this function to ensure that all values are correctly extracted from
stuffed pointers, regardless of the machine’s architecture or endianness.

This function fills in the appropriate field of @arg with the value extracted
from @hash_pointer, depending on the storage type of @info.</doc>
        <source-position filename="girepository/gitypeinfo.h" line="127"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="503">a #GITypeInfo</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </instance-parameter>
          <parameter name="hash_pointer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="504">a pointer, such as a [struct@GLib.HashTable] data pointer</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="arg"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="505">a [type@GIRepository.Argument] to fill in</doc>
            <type name="Argument" c:type="GIArgument*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_array_fixed_size"
              c:identifier="gi_type_info_get_array_fixed_size"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="278">Obtain the fixed array size of the type, in number of elements (not bytes).

The type tag must be a `GI_TYPE_TAG_ARRAY` with a fixed size, or `FALSE` will
be returned.</doc>
        <source-position filename="girepository/gitypeinfo.h" line="114"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="288">`TRUE` if the type is an array and has a fixed size</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="280">a #GITypeInfo</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </instance-parameter>
          <parameter name="out_size"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="281">return location for the array size</doc>
            <type name="gsize" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_array_length_index"
              c:identifier="gi_type_info_get_array_length_index"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="233">Obtain the position of the argument which gives the array length of the type.

The type tag must be a `GI_TYPE_TAG_ARRAY` with a length argument, or `FALSE`
will be returned.</doc>
        <source-position filename="girepository/gitypeinfo.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="243">`TRUE` if the type is an array and has a length argument</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="235">a #GITypeInfo</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </instance-parameter>
          <parameter name="out_length_index"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="236">return location for the length argument</doc>
            <type name="guint" c:type="unsigned int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_array_type"
              c:identifier="gi_type_info_get_array_type"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="356">Obtain the array type for this type.

See [enum@GIRepository.ArrayType] for a list of possible values.

It is an error to call this on an @info which is not an array type. Use
[method@GIRepository.TypeInfo.get_tag] to check.</doc>
        <source-position filename="girepository/gitypeinfo.h" line="121"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="367">the array type</doc>
          <type name="ArrayType" c:type="GIArrayType"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="358">a #GITypeInfo</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_interface"
              c:identifier="gi_type_info_get_interface"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="171">For types which have `GI_TYPE_TAG_INTERFACE` such as [class@GObject.Object]s
and boxed values, this function returns full information about the referenced
type.

You can then inspect the type of the returned [class@GIRepository.BaseInfo]
to further query whether it is a concrete [class@GObject.Object], an
interface, a structure, etc., using the type checking macros like
[func@GIRepository.IS_OBJECT_INFO], or raw [type@GObject.Type]s with
[func@GObject.TYPE_FROM_INSTANCE].</doc>
        <source-position filename="girepository/gitypeinfo.h" line="107"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="185">The [class@GIRepository.BaseInfo], or
  `NULL`. Free it with gi_base_info_unref() when done.</doc>
          <type name="BaseInfo" c:type="GIBaseInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="173">a #GITypeInfo</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_param_type"
              c:identifier="gi_type_info_get_param_type"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="126">Obtain the parameter type @n, or `NULL` if the type is not an array.</doc>
        <source-position filename="girepository/gitypeinfo.h" line="103"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="133">the param type info, or `NULL` if the
  type is not an array</doc>
          <type name="TypeInfo" c:type="GITypeInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="128">a #GITypeInfo</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="129">index of the parameter</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_storage_type"
              c:identifier="gi_type_info_get_storage_type"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="393">Obtain the type tag corresponding to the underlying storage type in C for
the type.

See [type@GIRepository.TypeTag] for a list of type tags.</doc>
        <source-position filename="girepository/gitypeinfo.h" line="124"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="402">the type tag</doc>
          <type name="TypeTag" c:type="GITypeTag"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="395">a #GITypeInfo</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tag"
              c:identifier="gi_type_info_get_tag"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="92">Obtain the type tag for the type.

See [type@GIRepository.TypeTag] for a list of type tags.</doc>
        <source-position filename="girepository/gitypeinfo.h" line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="100">the type tag</doc>
          <type name="TypeTag" c:type="GITypeTag"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="94">a #GITypeInfo</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="hash_pointer_from_argument"
              c:identifier="gi_type_info_hash_pointer_from_argument"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="604">Convert a [type@GIRepository.Argument] to data pointer for use in a GLib
data structure.

GLib data structures, such as [type@GLib.List], [type@GLib.SList], and
[type@GLib.HashTable], all store data pointers.

In the case where the list or hash table is storing single types rather than
structs, these data pointers may have values stuffed into them via macros
such as `GPOINTER_TO_INT`.

Use this function to ensure that all values are correctly stuffed into
pointers, regardless of the machine’s architecture or endianness.

This function returns a pointer stuffed with the appropriate field of @arg,
depending on the storage type of @info.</doc>
        <source-position filename="girepository/gitypeinfo.h" line="132"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="625">A stuffed pointer, that can be stored in a [struct@GLib.HashTable],
  for example</doc>
          <type name="gpointer" c:type="void*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="606">a #GITypeInfo</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </instance-parameter>
          <parameter name="arg" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="607">a [struct@GIRepository.Argument] with the value to stuff into a pointer</doc>
            <type name="Argument" c:type="GIArgument*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_pointer"
              c:identifier="gi_type_info_is_pointer"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="57">Obtain if the type is passed as a reference.

Note that the types of `GI_DIRECTION_OUT` and `GI_DIRECTION_INOUT` parameters
will only be pointers if the underlying type being transferred is a pointer
(i.e. only if the type of the C function’s formal parameter is a pointer to a
pointer).</doc>
        <source-position filename="girepository/gitypeinfo.h" line="97"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="68">`TRUE` if it is a pointer</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="59">a #GITypeInfo</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_zero_terminated"
              c:identifier="gi_type_info_is_zero_terminated"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="323">Obtain if the last element of the array is `NULL`.

The type tag must be a `GI_TYPE_TAG_ARRAY` or `FALSE` will be returned.</doc>
        <source-position filename="girepository/gitypeinfo.h" line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="331">`TRUE` if zero terminated</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypeinfo.c"
                 line="325">a #GITypeInfo</doc>
            <type name="TypeInfo" c:type="GITypeInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="BaseInfoStack" c:type="GIBaseInfoStack"/>
      </field>
      <field name="padding" readable="0" private="1">
        <array zero-terminated="0" fixed-size="6">
          <type name="gpointer" c:type="void*"/>
        </array>
      </field>
    </class>
    <enumeration name="TypeTag" version="2.80" c:type="GITypeTag">
      <doc xml:space="preserve"
           filename="girepository/gitypes.h"
           line="281">The type tag of a [class@GIRepository.TypeInfo].</doc>
      <source-position filename="girepository/gitypes.h" line="338"/>
      <member name="void" value="0" c:identifier="GI_TYPE_TAG_VOID">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="283">void</doc>
      </member>
      <member name="boolean" value="1" c:identifier="GI_TYPE_TAG_BOOLEAN">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="284">boolean</doc>
      </member>
      <member name="int8" value="2" c:identifier="GI_TYPE_TAG_INT8">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="285">8-bit signed integer</doc>
      </member>
      <member name="uint8" value="3" c:identifier="GI_TYPE_TAG_UINT8">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="286">8-bit unsigned integer</doc>
      </member>
      <member name="int16" value="4" c:identifier="GI_TYPE_TAG_INT16">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="287">16-bit signed integer</doc>
      </member>
      <member name="uint16" value="5" c:identifier="GI_TYPE_TAG_UINT16">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="288">16-bit unsigned integer</doc>
      </member>
      <member name="int32" value="6" c:identifier="GI_TYPE_TAG_INT32">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="289">32-bit signed integer</doc>
      </member>
      <member name="uint32" value="7" c:identifier="GI_TYPE_TAG_UINT32">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="290">32-bit unsigned integer</doc>
      </member>
      <member name="int64" value="8" c:identifier="GI_TYPE_TAG_INT64">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="291">64-bit signed integer</doc>
      </member>
      <member name="uint64" value="9" c:identifier="GI_TYPE_TAG_UINT64">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="292">64-bit unsigned integer</doc>
      </member>
      <member name="float" value="10" c:identifier="GI_TYPE_TAG_FLOAT">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="293">float</doc>
      </member>
      <member name="double" value="11" c:identifier="GI_TYPE_TAG_DOUBLE">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="294">double floating point</doc>
      </member>
      <member name="gtype" value="12" c:identifier="GI_TYPE_TAG_GTYPE">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="295">a [type@GObject.Type]</doc>
      </member>
      <member name="utf8" value="13" c:identifier="GI_TYPE_TAG_UTF8">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="296">a UTF-8 encoded string</doc>
      </member>
      <member name="filename" value="14" c:identifier="GI_TYPE_TAG_FILENAME">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="297">a filename, encoded in the same encoding
  as the native filesystem is using.</doc>
      </member>
      <member name="array" value="15" c:identifier="GI_TYPE_TAG_ARRAY">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="299">an array</doc>
      </member>
      <member name="interface" value="16" c:identifier="GI_TYPE_TAG_INTERFACE">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="300">an extended interface object</doc>
      </member>
      <member name="glist" value="17" c:identifier="GI_TYPE_TAG_GLIST">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="301">a [type@GLib.List]</doc>
      </member>
      <member name="gslist" value="18" c:identifier="GI_TYPE_TAG_GSLIST">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="302">a [type@GLib.SList]</doc>
      </member>
      <member name="ghash" value="19" c:identifier="GI_TYPE_TAG_GHASH">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="303">a [type@GLib.HashTable]</doc>
      </member>
      <member name="error" value="20" c:identifier="GI_TYPE_TAG_ERROR">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="304">a [type@GLib.Error]</doc>
      </member>
      <member name="unichar" value="21" c:identifier="GI_TYPE_TAG_UNICHAR">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="305">Unicode character</doc>
      </member>
    </enumeration>
    <record name="Typelib"
            c:type="GITypelib"
            opaque="1"
            version="2.80"
            glib:type-name="GITypelib"
            glib:get-type="gi_typelib_get_type"
            c:symbol-prefix="typelib">
      <doc xml:space="preserve"
           filename="girepository/gitypelib.c"
           line="35">`GITypelib` represents a loaded `.typelib` file, which contains a description
of a single module’s API.</doc>
      <source-position filename="girepository/gitypelib.h" line="37"/>
      <constructor name="new_from_bytes"
                   c:identifier="gi_typelib_new_from_bytes"
                   version="2.80"
                   throws="1">
        <doc xml:space="preserve"
             filename="girepository/gitypelib.c"
             line="2335">Creates a new [type@GIRepository.Typelib] from a [type@GLib.Bytes].

The [type@GLib.Bytes] can point to a memory location or a mapped file, and
the typelib will hold a reference to it until the repository is destroyed.</doc>
        <source-position filename="girepository/gitypelib.h" line="44"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/gitypelib.c"
               line="2345">the new [type@GIRepository.Typelib]</doc>
          <type name="Typelib" c:type="GITypelib*"/>
        </return-value>
        <parameters>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypelib.c"
                 line="2337">memory chunk containing the typelib</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_namespace"
              c:identifier="gi_typelib_get_namespace"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypelib.c"
             line="2418">Get the name of the namespace represented by @typelib.</doc>
        <source-position filename="girepository/gitypelib.h" line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypelib.c"
               line="2424">name of the namespace represented by @typelib</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="typelib" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypelib.c"
                 line="2420">a #GITypelib</doc>
            <type name="Typelib" c:type="GITypelib*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="gi_typelib_ref" version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypelib.c"
             line="2369">Increment the reference count of a [type@GIRepository.Typelib].</doc>
        <source-position filename="girepository/gitypelib.h" line="48"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/gitypelib.c"
               line="2375">the same @typelib pointer</doc>
          <type name="Typelib" c:type="GITypelib*"/>
        </return-value>
        <parameters>
          <instance-parameter name="typelib" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypelib.c"
                 line="2371">a #GITypelib</doc>
            <type name="Typelib" c:type="GITypelib*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="symbol" c:identifier="gi_typelib_symbol" version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypelib.c"
             line="2433">Loads a symbol from a `GITypelib`.</doc>
        <source-position filename="girepository/gitypelib.h" line="53"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypelib.c"
               line="2442">`TRUE` on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="typelib" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypelib.c"
                 line="2435">the typelib</doc>
            <type name="Typelib" c:type="GITypelib*"/>
          </instance-parameter>
          <parameter name="symbol_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/gitypelib.c"
                 line="2436">name of symbol to be loaded</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="symbol"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="girepository/gitypelib.c"
                 line="2437">returns a pointer to the symbol value, or `NULL`
  on failure</doc>
            <type name="gpointer" c:type="void**"/>
          </parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="gi_typelib_unref" version="2.80">
        <doc xml:space="preserve"
             filename="girepository/gitypelib.c"
             line="2388">Decrement the reference count of a [type@GIRepository.Typelib].

Once the reference count reaches zero, the typelib is freed.</doc>
        <source-position filename="girepository/gitypelib.h" line="50"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="typelib" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="girepository/gitypelib.c"
                 line="2390">a #GITypelib</doc>
            <type name="Typelib" c:type="GITypelib*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <function-macro name="UNAVAILABLE"
                    c:identifier="GI_UNAVAILABLE"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="27"/>
      <parameters>
        <parameter name="maj">
        </parameter>
        <parameter name="min">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="UNAVAILABLE_STATIC_INLINE"
                    c:identifier="GI_UNAVAILABLE_STATIC_INLINE"
                    introspectable="0">
      <source-position filename="girepository/gi-visibility.h" line="28"/>
      <parameters>
        <parameter name="maj">
        </parameter>
        <parameter name="min">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="UNION_INFO"
                    c:identifier="GI_UNION_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giunioninfo.h"
           line="37">Casts a [type@GIRepository.UnionInfo] or derived pointer into a
`(GIUnionInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/giunioninfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="UNRESOLVED_INFO"
                    c:identifier="GI_UNRESOLVED_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/giunresolvedinfo.h"
           line="36">Casts a [type@GIRepository.UnresolvedInfo] or derived pointer into a
`(GIUnresolvedInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/giunresolvedinfo.h" line="48"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/giunresolvedinfo.h"
               line="38">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="UnionInfo"
           c:symbol-prefix="union_info"
           c:type="GIUnionInfo"
           version="2.80"
           parent="RegisteredTypeInfo"
           glib:type-name="GIUnionInfo"
           glib:get-type="gi_union_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/giunioninfo.c"
           line="35">`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.</doc>
      <method name="find_method"
              c:identifier="gi_union_info_find_method"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="243">Obtain the type information for the method named @name.</doc>
        <source-position filename="girepository/giunioninfo.h" line="90"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="250">The [type@GIRepository.FunctionInfo], or
  `NULL` if none was found. Free it with [method@GIRepository.BaseInfo.unref]
  when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="245">a #GIUnionInfo</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="246">a method name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_alignment"
              c:identifier="gi_union_info_get_alignment"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="288">Obtain the required alignment of the union.</doc>
        <source-position filename="girepository/giunioninfo.h" line="97"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="294">required alignment, in bytes</doc>
          <type name="gsize" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="290">a #GIUnionInfo</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_copy_function_name"
              c:identifier="gi_union_info_get_copy_function_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="306">Retrieves the name of the copy function for @info, if any is set.</doc>
        <source-position filename="girepository/giunioninfo.h" line="100"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="312">the name of the copy function, or `NULL`
  if none is set</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="308">a union information blob</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_discriminator"
              c:identifier="gi_union_info_get_discriminator"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="203">Obtain the discriminator value assigned for n-th union field, i.e. the n-th
union field is the active one if the discriminator contains this
constant.

If the union is not discriminated, `NULL` is returned.</doc>
        <source-position filename="girepository/giunioninfo.h" line="86"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="214">The [type@GIRepository.ConstantInfo], or
  `NULL` if the union is not discriminated. Free it with
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="ConstantInfo" c:type="GIConstantInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="205">a #GIUnionInfo</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="206">a union field index</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_discriminator_offset"
              c:identifier="gi_union_info_get_discriminator_offset"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="151">Obtain the offset of the discriminator field within the structure.

The union must be discriminated, or `FALSE` will be returned.</doc>
        <source-position filename="girepository/giunioninfo.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="161">`TRUE` if the union is discriminated</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="153">a #GIUnionInfo</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
          <parameter name="out_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="154">return location for the offset, in bytes, of
  the discriminator</doc>
            <type name="gsize" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_discriminator_type"
              c:identifier="gi_union_info_get_discriminator_type"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="180">Obtain the type information of the union discriminator.</doc>
        <source-position filename="girepository/giunioninfo.h" line="83"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="186">the [type@GIRepository.TypeInfo], or
  `NULL` if the union is not discriminated. Free it with
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="TypeInfo" c:type="GITypeInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="182">a #GIUnionInfo</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_field"
              c:identifier="gi_union_info_get_field"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="65">Obtain the type information for the field with the specified index.</doc>
        <source-position filename="girepository/giunioninfo.h" line="65"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="72">the [type@GIRepository.FieldInfo], free it with
  [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FieldInfo" c:type="GIFieldInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="67">a #GIUnionInfo</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="68">a field index</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_free_function_name"
              c:identifier="gi_union_info_get_free_function_name"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="333">Retrieves the name of the free function for @info, if any is set.</doc>
        <source-position filename="girepository/giunioninfo.h" line="103"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="339">the name of the free function, or `NULL`
  if none is set</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="335">a union information blob</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_method"
              c:identifier="gi_union_info_get_method"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="106">Obtain the type information for the method with the specified index.</doc>
        <source-position filename="girepository/giunioninfo.h" line="72"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="113">the [type@GIRepository.FunctionInfo], free it
  with [method@GIRepository.BaseInfo.unref] when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="108">a #GIUnionInfo</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="109">a method index</doc>
            <type name="guint" c:type="unsigned int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_fields"
              c:identifier="gi_union_info_get_n_fields"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="47">Obtain the number of fields this union has.</doc>
        <source-position filename="girepository/giunioninfo.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="53">number of fields</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="49">a #GIUnionInfo</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_methods"
              c:identifier="gi_union_info_get_n_methods"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="88">Obtain the number of methods this union has.</doc>
        <source-position filename="girepository/giunioninfo.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="94">number of methods</doc>
          <type name="guint" c:type="unsigned int"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="90">a #GIUnionInfo</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size"
              c:identifier="gi_union_info_get_size"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="270">Obtain the total size of the union.</doc>
        <source-position filename="girepository/giunioninfo.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="276">size of the union, in bytes</doc>
          <type name="gsize" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="272">a #GIUnionInfo</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_discriminated"
              c:identifier="gi_union_info_is_discriminated"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/giunioninfo.c"
             line="133">Return `TRUE` if this union contains a discriminator field.</doc>
        <source-position filename="girepository/giunioninfo.h" line="76"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/giunioninfo.c"
               line="139">`TRUE` if this is a discriminated union, `FALSE` otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/giunioninfo.c"
                 line="135">a #GIUnionInfo</doc>
            <type name="UnionInfo" c:type="GIUnionInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <class name="UnresolvedInfo"
           c:symbol-prefix="unresolved_info"
           c:type="GIUnresolvedInfo"
           version="2.80"
           parent="BaseInfo"
           glib:type-name="GIUnresolvedInfo"
           glib:get-type="gi_unresolved_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/giunresolvedinfo.c"
           line="37">`GIUnresolvedInfo` represents an unresolved symbol.</doc>
    </class>
    <function-macro name="VALUE_INFO"
                    c:identifier="GI_VALUE_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/givalueinfo.h"
           line="37">Casts a [type@GIRepository.ValueInfo] or derived pointer into a
`(GIValueInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/givalueinfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/givalueinfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="VFUNC_INFO"
                    c:identifier="GI_VFUNC_INFO"
                    version="2.80"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/givfuncinfo.h"
           line="37">Casts a [type@GIRepository.VFuncInfo] or derived pointer into a
`(GIVFuncInfo*)` pointer.

Depending on the current debugging level, this function may invoke
certain runtime checks to identify invalid casts.</doc>
      <source-position filename="girepository/givfuncinfo.h" line="49"/>
      <parameters>
        <parameter name="info">
          <doc xml:space="preserve"
               filename="girepository/givfuncinfo.h"
               line="39">Info object which is subject to casting.</doc>
        </parameter>
      </parameters>
    </function-macro>
    <class name="VFuncInfo"
           c:symbol-prefix="vfunc_info"
           c:type="GIVFuncInfo"
           version="2.80"
           parent="CallableInfo"
           glib:type-name="GIVFuncInfo"
           glib:get-type="gi_vfunc_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/givfuncinfo.c"
           line="37">`GIVFuncInfo` represents a virtual function.

A virtual function is a callable object that belongs to either a
[type@GIRepository.ObjectInfo] or a [type@GIRepository.InterfaceInfo].</doc>
      <method name="get_address"
              c:identifier="gi_vfunc_info_get_address"
              version="2.80"
              throws="1">
        <doc xml:space="preserve"
             filename="girepository/givfuncinfo.c"
             line="205">Looks up where the implementation for @info is inside the type struct of
@implementor_gtype.</doc>
        <source-position filename="girepository/givfuncinfo.h" line="74"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/givfuncinfo.c"
               line="214">address to a function</doc>
          <type name="gpointer" c:type="void*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="207">a #GIVFuncInfo</doc>
            <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
          </instance-parameter>
          <parameter name="implementor_gtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="208">[type@GObject.Type] implementing this virtual function</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_flags"
              c:identifier="gi_vfunc_info_get_flags"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/givfuncinfo.c"
             line="72">Obtain the flags for this virtual function info.

See [flags@GIRepository.VFuncInfoFlags] for more information about possible
flag values.</doc>
        <source-position filename="girepository/givfuncinfo.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/givfuncinfo.c"
               line="81">the flags</doc>
          <type name="VFuncInfoFlags" c:type="GIVFuncInfoFlags"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="74">a #GIVFuncInfo</doc>
            <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_invoker"
              c:identifier="gi_vfunc_info_get_invoker"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/givfuncinfo.c"
             line="164">If this virtual function has an associated invoker method, this
method will return it.  An invoker method is a C entry point.

Not all virtuals will have invokers.</doc>
        <source-position filename="girepository/givfuncinfo.h" line="71"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/givfuncinfo.c"
               line="173">The [type@GIRepository.FunctionInfo] or
  `NULL` if none is set. Free it with [method@GIRepository.BaseInfo.unref]
  when done.</doc>
          <type name="FunctionInfo" c:type="GIFunctionInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="166">a #GIVFuncInfo</doc>
            <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_offset"
              c:identifier="gi_vfunc_info_get_offset"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/givfuncinfo.c"
             line="110">Obtain the offset of the function pointer in the class struct.

The value `0xFFFF` indicates that the struct offset is unknown.</doc>
        <source-position filename="girepository/givfuncinfo.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/givfuncinfo.c"
               line="118">the struct offset or `0xFFFF` if it’s unknown</doc>
          <type name="gsize" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="112">a #GIVFuncInfo</doc>
            <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_signal"
              c:identifier="gi_vfunc_info_get_signal"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/givfuncinfo.c"
             line="135">Obtain the signal for the virtual function if one is set.

The signal comes from the object or interface to which
this virtual function belongs.</doc>
        <source-position filename="girepository/givfuncinfo.h" line="68"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="girepository/givfuncinfo.c"
               line="144">the signal, or `NULL` if none is set</doc>
          <type name="SignalInfo" c:type="GISignalInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="137">a #GIVFuncInfo</doc>
            <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="invoke"
              c:identifier="gi_vfunc_info_invoke"
              version="2.80"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve"
             filename="girepository/givfuncinfo.c"
             line="310">Invokes the function described in @info with the given
arguments.

Note that ‘inout’ parameters must appear in both argument lists.</doc>
        <source-position filename="girepository/givfuncinfo.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/givfuncinfo.c"
               line="334">`TRUE` if the vfunc was executed successfully and didn’t throw
  a [type@GLib.Error]; `FALSE` if @error is set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="312">a #GIVFuncInfo describing the virtual function to invoke</doc>
            <type name="VFuncInfo" c:type="GIVFuncInfo*"/>
          </instance-parameter>
          <parameter name="implementor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="313">[type@GObject.Type] of the type that implements this virtual
  function</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="in_args"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="315">an array of
  [struct@GIRepository.Argument]s, one for each ‘in’ parameter of @info. If
  there are no ‘in’ parameters, @in_args can be `NULL`</doc>
            <array length="2" zero-terminated="0" c:type="const GIArgument*">
              <type name="Argument" c:type="GIArgument"/>
            </array>
          </parameter>
          <parameter name="n_in_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="318">the length of the @in_args array</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="out_args"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="319">an array of
  [struct@GIRepository.Argument]s allocated by the caller, one for each
  ‘out’ parameter of @info. If there are no ‘out’ parameters, @out_args may
  be `NULL`</doc>
            <array length="4" zero-terminated="0" c:type="GIArgument*">
              <type name="Argument" c:type="GIArgument"/>
            </array>
          </parameter>
          <parameter name="n_out_args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="323">the length of the @out_args array</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="return_value"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givfuncinfo.c"
                 line="324">return
  location for the return value from the vfunc; `NULL` may be returned if
  the vfunc returns that</doc>
            <type name="Argument" c:type="GIArgument*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <bitfield name="VFuncInfoFlags" version="2.80" c:type="GIVFuncInfoFlags">
      <doc xml:space="preserve"
           filename="girepository/gitypes.h"
           line="385">Flags of a [class@GIRepository.VFuncInfo] struct.</doc>
      <source-position filename="girepository/gitypes.h" line="402"/>
      <member name="info_flags_none"
              value="0"
              c:identifier="GI_VFUNC_INFO_FLAGS_NONE">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="387">no flags set (since: 2.86)</doc>
      </member>
      <member name="must_chain_up"
              value="1"
              c:identifier="GI_VFUNC_MUST_CHAIN_UP">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="388">chains up to the parent type</doc>
      </member>
      <member name="must_override"
              value="2"
              c:identifier="GI_VFUNC_MUST_OVERRIDE">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="389">overrides</doc>
      </member>
      <member name="must_not_override"
              value="4"
              c:identifier="GI_VFUNC_MUST_NOT_OVERRIDE">
        <doc xml:space="preserve"
             filename="girepository/gitypes.h"
             line="390">does not override</doc>
      </member>
    </bitfield>
    <class name="ValueInfo"
           c:symbol-prefix="value_info"
           c:type="GIValueInfo"
           version="2.80"
           parent="BaseInfo"
           glib:type-name="GIValueInfo"
           glib:get-type="gi_value_info_get_type"
           glib:fundamental="1">
      <doc xml:space="preserve"
           filename="girepository/givalueinfo.c"
           line="35">A `GIValueInfo` represents a value in an enumeration.

The `GIValueInfo` is fetched by calling
[method@GIRepository.EnumInfo.get_value] on a [class@GIRepository.EnumInfo].</doc>
      <method name="get_value"
              c:identifier="gi_value_info_get_value"
              version="2.80">
        <doc xml:space="preserve"
             filename="girepository/givalueinfo.c"
             line="46">Obtain the enumeration value of the `GIValueInfo`.</doc>
        <source-position filename="girepository/givalueinfo.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/givalueinfo.c"
               line="52">the enumeration value. This will always be representable
  as a 32-bit signed or unsigned value. The use of `int64_t` as the
  return type is to allow both.</doc>
          <type name="gint64" c:type="int64_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="girepository/givalueinfo.c"
                 line="48">a #GIValueInfo</doc>
            <type name="ValueInfo" c:type="GIValueInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </class>
    <function name="cclosure_marshal_generic"
              c:identifier="gi_cclosure_marshal_generic"
              version="2.80"
              introspectable="0">
      <doc xml:space="preserve"
           filename="girepository/ginvoke.c"
           line="254">A generic C closure marshal function using ffi and
[type@GIRepository.Argument].</doc>
      <source-position filename="girepository/girepository.h" line="238"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="closure" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/ginvoke.c"
               line="256">a [type@GObject.Closure]</doc>
          <type name="GObject.Closure" c:type="GClosure*"/>
        </parameter>
        <parameter name="return_gvalue"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="girepository/ginvoke.c"
               line="257">return location for the
  return value from the closure, or `NULL` to ignore</doc>
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="n_param_values" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/ginvoke.c"
               line="259">number of param values</doc>
          <type name="guint" c:type="unsigned int"/>
        </parameter>
        <parameter name="param_values" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/ginvoke.c"
               line="260">values to pass to the closure
  parameters</doc>
          <array length="2" zero-terminated="0" c:type="const GValue*">
            <type name="GObject.Value" c:type="GValue"/>
          </array>
        </parameter>
        <parameter name="invocation_hint"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="girepository/ginvoke.c"
               line="262">invocation hint</doc>
          <type name="gpointer" c:type="void*"/>
        </parameter>
        <parameter name="marshal_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="girepository/ginvoke.c"
               line="263">marshal data</doc>
          <type name="gpointer" c:type="void*"/>
        </parameter>
      </parameters>
    </function>
    <function name="invoke_error_quark"
              c:identifier="gi_invoke_error_quark"
              version="2.80">
      <doc xml:space="preserve"
           filename="girepository/gifunctioninfo.c"
           line="221">Get the error quark which represents [type@GIRepository.InvokeError].</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="girepository/gifunctioninfo.c"
             line="226">error quark</doc>
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="type_tag_argument_from_hash_pointer"
              c:identifier="gi_type_tag_argument_from_hash_pointer"
              version="2.80">
      <doc xml:space="preserve"
           filename="girepository/gitypeinfo.c"
           line="422">Convert a data pointer from a GLib data structure to a
[type@GIRepository.Argument].

GLib data structures, such as [type@GLib.List], [type@GLib.SList], and
[type@GLib.HashTable], all store data pointers.

In the case where the list or hash table is storing single types rather than
structs, these data pointers may have values stuffed into them via macros
such as `GPOINTER_TO_INT`.

Use this function to ensure that all values are correctly extracted from
stuffed pointers, regardless of the machine’s architecture or endianness.

This function fills in the appropriate field of @arg with the value extracted
from @hash_pointer, depending on @storage_type.</doc>
      <source-position filename="girepository/gitypeinfo.h" line="136"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="storage_type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="424">a [type@GIRepository.TypeTag] obtained from
  [method@GIRepository.TypeInfo.get_storage_type]</doc>
          <type name="TypeTag" c:type="GITypeTag"/>
        </parameter>
        <parameter name="hash_pointer"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="426">a pointer, such as a [struct@GLib.HashTable] data pointer</doc>
          <type name="gpointer" c:type="void*"/>
        </parameter>
        <parameter name="arg"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="427">a [type@GIRepository.Argument]
  to fill in</doc>
          <type name="Argument" c:type="GIArgument*"/>
        </parameter>
      </parameters>
    </function>
    <function name="type_tag_hash_pointer_from_argument"
              c:identifier="gi_type_tag_hash_pointer_from_argument"
              version="2.80">
      <doc xml:space="preserve"
           filename="girepository/gitypeinfo.c"
           line="535">Convert a [type@GIRepository.Argument] to data pointer for use in a GLib
data structure.

GLib data structures, such as [type@GLib.List], [type@GLib.SList], and
[type@GLib.HashTable], all store data pointers.

In the case where the list or hash table is storing single types rather than
structs, these data pointers may have values stuffed into them via macros
such as `GPOINTER_TO_INT`.

Use this function to ensure that all values are correctly stuffed into
pointers, regardless of the machine’s architecture or endianness.

This function returns a pointer stuffed with the appropriate field of @arg,
depending on @storage_type.</doc>
      <source-position filename="girepository/gitypeinfo.h" line="141"/>
      <return-value transfer-ownership="none" nullable="1">
        <doc xml:space="preserve"
             filename="girepository/gitypeinfo.c"
             line="557">A stuffed pointer, that can be stored in a [struct@GLib.HashTable],
  for example</doc>
        <type name="gpointer" c:type="void*"/>
      </return-value>
      <parameters>
        <parameter name="storage_type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="537">a [type@GIRepository.TypeTag] obtained from
  [method@GIRepository.TypeInfo.get_storage_type]</doc>
          <type name="TypeTag" c:type="GITypeTag"/>
        </parameter>
        <parameter name="arg" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/gitypeinfo.c"
               line="539">a [type@GIRepository.Argument] with the value to stuff into a pointer</doc>
          <type name="Argument" c:type="GIArgument*"/>
        </parameter>
      </parameters>
    </function>
    <function name="type_tag_to_string"
              c:identifier="gi_type_tag_to_string"
              version="2.80">
      <doc xml:space="preserve"
           filename="girepository/girepository.c"
           line="2213">Obtain a string representation of @type</doc>
      <source-position filename="girepository/gitypeinfo.h" line="94"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="girepository/girepository.c"
             line="2219">the string</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="girepository/girepository.c"
               line="2215">the type_tag</doc>
          <type name="TypeTag" c:type="GITypeTag"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
