<?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:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GLib" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <include name="Utility" version="1.0"/>
  <package name="gobject-2.0"/>
  <c:include name="annotation.h"/>
  <namespace name="Annotation"
             version="1.0"
             shared-library="libannotation.so"
             c:identifier-prefixes="Annotation"
             c:symbol-prefixes="annotation">
    <bitfield name="Bitfield" c:type="AnnotationBitfield">
      <member name="foo" value="1" c:identifier="ANN_FLAG_FOO"/>
      <member name="bar" value="2" c:identifier="ANN_FLAG_BAR"/>
    </bitfield>
    <constant name="CALCULATED_DEFINE"
              value="100"
              c:type="ANNOTATION_CALCULATED_DEFINE">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="CALCULATED_LARGE"
              value="10000000000UL"
              c:type="ANNOTATION_CALCULATED_LARGE">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="CALCULATED_LARGE_DIV"
              value="1000000UL"
              c:type="ANNOTATION_CALCULATED_LARGE_DIV">
      <type name="gint" c:type="gint"/>
    </constant>
    <callback name="Callback" c:type="AnnotationCallback">
      <doc xml:whitespace="preserve">This is a callback.</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">array of ints</doc>
        <type name="gint" c:type="gint*"/>
      </return-value>
      <parameters>
        <parameter name="in" transfer-ownership="none">
          <doc xml:whitespace="preserve">array of ints</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ForeachFunc" c:type="AnnotationForeachFunc">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <type name="Object" c:type="AnnotationObject*"/>
        </parameter>
        <parameter name="item" transfer-ownership="none">
          <type name="utf8" c:type="char*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="2">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="ListCallback" c:type="AnnotationListCallback">
      <doc xml:whitespace="preserve">This is a callback taking a list.</doc>
      <return-value transfer-ownership="container">
        <doc xml:whitespace="preserve">list of strings</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="utf8"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="in" transfer-ownership="none">
          <doc xml:whitespace="preserve">list of strings</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </parameter>
      </parameters>
    </callback>
    <callback name="NotifyFunc" c:type="AnnotationNotifyFunc">
      <doc xml:whitespace="preserve">This is a callback with a 'closure' argument that is not named
'user_data' and hence has to be annotated.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none" closure="0">
          <doc xml:whitespace="preserve">The user data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="Object"
           c:symbol-prefix="object"
           c:type="AnnotationObject"
           parent="GObject.Object"
           glib:type-name="AnnotationObject"
           glib:get-type="annotation_object_get_type"
           glib:type-struct="ObjectClass">
      <attribute name="org.example.Test" value="cows"/>
      <doc xml:whitespace="preserve">This is an object used to test annotations.</doc>
      <method name="allow_none" c:identifier="annotation_object_allow_none">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%NULL always</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <parameter name="somearg" transfer-ownership="none" allow-none="1">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="calleeowns" c:identifier="annotation_object_calleeowns">
        <doc xml:whitespace="preserve">This is a test for out arguments; GObject defaults to transfer</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an int</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="toown"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">a #GObject</doc>
            <type name="GObject.Object" c:type="GObject**"/>
          </parameter>
        </parameters>
      </method>
      <method name="calleesowns" c:identifier="annotation_object_calleesowns">
        <doc xml:whitespace="preserve">This is a test for out arguments, one transferred, other not</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an int</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="toown1"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">a #GObject</doc>
            <type name="GObject.Object" c:type="GObject**"/>
          </parameter>
          <parameter name="toown2"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:whitespace="preserve">a #GObject</doc>
            <type name="GObject.Object" c:type="GObject**"/>
          </parameter>
        </parameters>
      </method>
      <method name="compute_sum" c:identifier="annotation_object_compute_sum">
        <doc xml:whitespace="preserve">Test taking a zero-terminated array</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="nums" transfer-ownership="none">
            <doc xml:whitespace="preserve">Sequence of numbers</doc>
            <array zero-terminated="0" c:type="int*">
              <type name="gint" c:type="int"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="compute_sum_n"
              c:identifier="annotation_object_compute_sum_n">
        <doc xml:whitespace="preserve">Test taking an array with length parameter</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="nums" transfer-ownership="none">
            <doc xml:whitespace="preserve">Sequence of numbers that are zero-terminated</doc>
            <array length="1" zero-terminated="0" c:type="int*">
              <type name="gint" c:type="int"/>
            </array>
          </parameter>
          <parameter name="n_nums" transfer-ownership="none">
            <doc xml:whitespace="preserve">Length of number array</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="compute_sum_nz"
              c:identifier="annotation_object_compute_sum_nz">
        <doc xml:whitespace="preserve">Test taking a zero-terminated array with length parameter</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="nums" transfer-ownership="none">
            <doc xml:whitespace="preserve">Sequence of numbers that are zero-terminated</doc>
            <array length="1" zero-terminated="1" c:type="int*">
              <type name="gint" c:type="int"/>
            </array>
          </parameter>
          <parameter name="n_nums" transfer-ownership="none">
            <doc xml:whitespace="preserve">Length of number array</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_object"
              c:identifier="annotation_object_create_object">
        <doc xml:whitespace="preserve">Test returning a caller-owned object</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">The object</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
      </method>
      <method name="do_not_use"
              c:identifier="annotation_object_do_not_use"
              deprecated="Use annotation_object_create_object() instead."
              deprecated-version="0.12">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">%NULL always</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
      </method>
      <method name="extra_annos" c:identifier="annotation_object_extra_annos">
        <attribute name="org.foobar" value="testvalue"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="foreach" c:identifier="annotation_object_foreach">
        <doc xml:whitespace="preserve">Test taking a call-scoped callback</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:whitespace="preserve">Callback to invoke</doc>
            <type name="ForeachFunc" c:type="AnnotationForeachFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">Callback user data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_hash" c:identifier="annotation_object_get_hash">
        <doc xml:whitespace="preserve">This is a test for returning a hash table mapping strings to
objects.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">hash table</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="GObject.Object"/>
          </type>
        </return-value>
      </method>
      <method name="get_objects" c:identifier="annotation_object_get_objects">
        <doc xml:whitespace="preserve">This is a test for returning a list of objects.
The list itself should be freed, but not the internal objects,
intentionally similar example to gtk_container_get_children</doc>
        <return-value transfer-ownership="container">
          <doc xml:whitespace="preserve">list of objects</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="Object"/>
          </type>
        </return-value>
      </method>
      <method name="get_strings" c:identifier="annotation_object_get_strings">
        <doc xml:whitespace="preserve">This is a test for returning a list of strings, where
each string needs to be freed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:whitespace="preserve">list of strings</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
      </method>
      <method name="hidden_self" c:identifier="annotation_object_hidden_self">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </method>
      <method name="in" c:identifier="annotation_object_in">
        <doc xml:whitespace="preserve">This is a test for in arguments</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an int</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="inarg" transfer-ownership="none">
            <doc xml:whitespace="preserve">This is an argument test</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="inout" c:identifier="annotation_object_inout">
        <doc xml:whitespace="preserve">This is a test for out arguments</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an int</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="inoutarg"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">This is an argument test</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="inout2" c:identifier="annotation_object_inout2">
        <doc xml:whitespace="preserve">This is a second test for out arguments</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an int</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="inoutarg"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">This is an argument test</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="inout3" c:identifier="annotation_object_inout3">
        <doc xml:whitespace="preserve">This is a 3th test for out arguments</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an int</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="inoutarg"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full"
                     allow-none="1">
            <doc xml:whitespace="preserve">This is an argument test</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="method" c:identifier="annotation_object_method">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an int</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
      </method>
      <method name="notrans" c:identifier="annotation_object_notrans">
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">An object, not referenced</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
      </method>
      <method name="out" c:identifier="annotation_object_out">
        <doc xml:whitespace="preserve">This is a test for out arguments</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">an int</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="outarg"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">This is an argument test</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_args" c:identifier="annotation_object_parse_args">
        <doc xml:whitespace="preserve">Test taking a zero-terminated array with length parameter</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="argc"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">Length of the argument vector</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="argv"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">Argument vector</doc>
            <array length="0" zero-terminated="1" c:type="char***">
              <type name="utf8" c:type="char**"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="set_data" c:identifier="annotation_object_set_data">
        <doc xml:whitespace="preserve">Test taking a guchar * with a length.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:whitespace="preserve">The data</doc>
            <array length="1" zero-terminated="0" c:type="guchar*">
              <type name="guint8" c:type="guchar"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:whitespace="preserve">Length of the data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_data2" c:identifier="annotation_object_set_data2">
        <doc xml:whitespace="preserve">Test taking a gchar * with a length.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:whitespace="preserve">The data</doc>
            <array length="1" zero-terminated="0" c:type="gchar*">
              <type name="gint8"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:whitespace="preserve">Length of the data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_data3" c:identifier="annotation_object_set_data3">
        <doc xml:whitespace="preserve">Test taking a gchar * with a length, overriding the array element
type.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:whitespace="preserve">The data</doc>
            <array length="1" zero-terminated="0" c:type="gpointer">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:whitespace="preserve">Length of the data</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="string_out" c:identifier="annotation_object_string_out">
        <doc xml:whitespace="preserve">Test returning a string as an out parameter</doc>
        <return-value transfer-ownership="none">
          <doc xml:whitespace="preserve">some boolean</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="str_out"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:whitespace="preserve">string return value</doc>
            <type name="utf8" c:type="char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="use_buffer" c:identifier="annotation_object_use_buffer">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="bytes" transfer-ownership="none">
            <type name="guint8" c:type="guchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="watch"
              c:identifier="annotation_object_watch"
              shadowed-by="watch_full"
              introspectable="0">
        <doc xml:whitespace="preserve">This is here just for the sake of being overriden by its
annotation_object_watch_full().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="func" transfer-ownership="none" closure="1">
            <doc xml:whitespace="preserve">The callback</doc>
            <type name="ForeachFunc" c:type="AnnotationForeachFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">The callback data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="watch_full"
              c:identifier="annotation_object_watch_full"
              shadows="watch">
        <doc xml:whitespace="preserve">Test overriding via the "Rename To" annotation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:whitespace="preserve">The callback</doc>
            <type name="ForeachFunc" c:type="AnnotationForeachFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:whitespace="preserve">The callback data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy" transfer-ownership="none" scope="async">
            <doc xml:whitespace="preserve">Destroy notification</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="with_voidp" c:identifier="annotation_object_with_voidp">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:whitespace="preserve">Opaque pointer handle</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
        </parameters>
      </method>
      <property name="function-property"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Callback"/>
      </property>
      <property name="string-property"
                version="1.0"
                deprecated="Use better-string-property instead"
                deprecated-version="1.2"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:whitespace="preserve">This is a property which is a string</doc>
        <type name="utf8"/>
      </property>
      <property name="tab-property"
                version="1.2"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <doc xml:whitespace="preserve">This is a property annotation intentionally indented with a mix
of tabs and strings to test the tab handling capabilities of the scanner.</doc>
        <type name="utf8"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <glib:signal name="attribute-signal" when="last">
        <doc xml:whitespace="preserve">This signal tests a signal with attributes.</doc>
        <return-value transfer-ownership="full">
          <attribute name="some.annotation.foo3" value="val3"/>
          <doc xml:whitespace="preserve">the return value</doc>
          <type name="utf8"/>
        </return-value>
        <parameters>
          <parameter name="arg1" transfer-ownership="none">
            <attribute name="some.annotation.foo1" value="val1"/>
            <doc xml:whitespace="preserve">a value</doc>
            <type name="utf8"/>
          </parameter>
          <parameter name="arg2" transfer-ownership="none">
            <attribute name="some.annotation.foo2" value="val2"/>
            <doc xml:whitespace="preserve">another value</doc>
            <type name="utf8"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="doc-empty-arg-parsing" when="last">
        <doc xml:whitespace="preserve">This signal tests an empty document argument (@arg1)</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="list-signal" when="last">
        <doc xml:whitespace="preserve">This is a signal which takes a list of strings, but it's not
known by GObject as it's only marked as G_TYPE_POINTER</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="list" transfer-ownership="container">
            <doc xml:whitespace="preserve">a list of strings</doc>
            <type name="GLib.List">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="string-signal"
                   when="last"
                   version="1.0"
                   deprecated="Use other-signal instead"
                   deprecated-version="1.2">
        <doc xml:whitespace="preserve">This is a signal which has a broken signal handler,
it says it's pointer but it's actually a string.</doc>
        <return-value transfer-ownership="none">
          <type name="none"/>
        </return-value>
        <parameters>
          <parameter name="string" transfer-ownership="none">
            <doc xml:whitespace="preserve">a string</doc>
            <type name="utf8"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ObjectClass"
            c:type="AnnotationObjectClass"
            glib:is-gtype-struct-for="Object">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="Struct" c:type="AnnotationStruct">
      <doc xml:whitespace="preserve">This is a test of an array of object in an field of a struct.</doc>
      <field name="objects" writable="1">
        <array zero-terminated="0" c:type="AnnotationObject" fixed-size="10">
          <type name="Object" c:type="AnnotationObject*"/>
        </array>
      </field>
    </record>
    <function name="attribute_func" c:identifier="annotation_attribute_func">
      <return-value transfer-ownership="none">
        <attribute name="some.other.annotation" value="value2"/>
        <attribute name="yet.another.annotation" value="another_value"/>
        <doc xml:whitespace="preserve">The return value.</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none">
          <doc xml:whitespace="preserve">A #AnnotationObject.</doc>
          <type name="Object" c:type="AnnotationObject*"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <attribute name="some.annotation" value="value"/>
          <attribute name="another.annotation" value="blahvalue"/>
          <doc xml:whitespace="preserve">Some data.</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="custom_destroy" c:identifier="annotation_custom_destroy">
      <doc xml:whitespace="preserve">Test messing up the heuristic of closure/destroy-notification
detection, and fixing it via annotations.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="callback"
                   transfer-ownership="none"
                   scope="notified"
                   closure="2"
                   destroy="1">
          <doc xml:whitespace="preserve">Destroy notification</doc>
          <type name="Callback" c:type="AnnotationCallback"/>
        </parameter>
        <parameter name="destroy"
                   transfer-ownership="none"
                   scope="notified"
                   closure="2">
          <type name="NotifyFunc" c:type="AnnotationNotifyFunc"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_source_file" c:identifier="annotation_get_source_file">
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">Source file</doc>
        <type name="filename" c:type="char*"/>
      </return-value>
    </function>
    <function name="init" c:identifier="annotation_init">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="argc"
                   direction="inout"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:whitespace="preserve">The number of args.</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="argv"
                   direction="inout"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:whitespace="preserve">The arguments.</doc>
          <array length="0" zero-terminated="0" c:type="char***">
            <type name="utf8" c:type="char**"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="invalid_annotation"
              c:identifier="annotation_invalid_annotation">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="foo" transfer-ownership="none">
          <doc xml:whitespace="preserve">some text (e.g. example) or else</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="ptr_array"
              c:identifier="annotation_ptr_array"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="array" transfer-ownership="none">
          <doc xml:whitespace="preserve">the array</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="GLib.Value"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="return_array" c:identifier="annotation_return_array">
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">The return value</doc>
        <array length="0" zero-terminated="0" c:type="char**">
          <type name="utf8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="length"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:whitespace="preserve">Number of return values</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
      </parameters>
    </function>
    <function name="return_filename" c:identifier="annotation_return_filename">
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">An annotated filename</doc>
        <type name="filename" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="set_source_file" c:identifier="annotation_set_source_file">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="fname" transfer-ownership="none">
          <doc xml:whitespace="preserve">Source file</doc>
          <type name="filename" c:type="char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="space_after_comment_bug631690"
              c:identifier="annotation_space_after_comment_bug631690">
      <doc xml:whitespace="preserve">Explicitly test having a space after the ** here.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="string_array_length"
              c:identifier="annotation_string_array_length">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="n_properties" transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="properties" transfer-ownership="none">
          <array length="0" zero-terminated="0" c:type="gchar*">
            <type name="utf8"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="string_zero_terminated"
              c:identifier="annotation_string_zero_terminated">
      <return-value transfer-ownership="full">
        <doc xml:whitespace="preserve">The return value</doc>
        <array c:type="char**">
          <type name="utf8"/>
        </array>
      </return-value>
    </function>
    <function name="string_zero_terminated_out"
              c:identifier="annotation_string_zero_terminated_out">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="out"
                   direction="inout"
                   caller-allocates="0"
                   transfer-ownership="full">
          <array c:type="char***">
            <type name="utf8" c:type="char**"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="test_parsing_bug630862"
              c:identifier="annotation_test_parsing_bug630862">
      <doc xml:whitespace="preserve">See https://bugzilla.gnome.org/show_bug.cgi?id=630862</doc>
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">An object, note the colon:in here</doc>
        <type name="GObject.Object" c:type="GObject*"/>
      </return-value>
    </function>
    <function name="transfer_floating"
              c:identifier="annotation_transfer_floating">
      <return-value transfer-ownership="none">
        <doc xml:whitespace="preserve">A floating object</doc>
        <type name="GObject.Object" c:type="GObject*"/>
      </return-value>
    </function>
    <function name="versioned"
              c:identifier="annotation_versioned"
              version="0.6">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
  </namespace>
</repository>
