<?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="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <package name="appstream"/>
  <c:include name="appstream.h"/>
  <namespace name="AppStream"
             version="0.8"
             shared-library="libappstream.so.2"
             c:identifier-prefixes="As"
             c:symbol-prefixes="as">
    <enumeration name="BundleKind" c:type="AsBundleKind">
      <doc xml:space="preserve">The bundle type.</doc>
      <member name="unknown" value="0" c:identifier="AS_BUNDLE_KIND_UNKNOWN">
        <doc xml:space="preserve">Type invalid or not known</doc>
      </member>
      <member name="limba" value="1" c:identifier="AS_BUNDLE_KIND_LIMBA">
        <doc xml:space="preserve">A Limba bundle</doc>
      </member>
      <member name="xdg_app" value="2" c:identifier="AS_BUNDLE_KIND_XDG_APP">
        <doc xml:space="preserve">An xdg-app bundle</doc>
      </member>
    </enumeration>
    <class name="Category"
           c:symbol-prefix="category"
           c:type="AsCategory"
           parent="GObject.Object"
           glib:type-name="AsCategory"
           glib:get-type="as_category_get_type"
           glib:type-struct="CategoryClass">
      <constructor name="new" c:identifier="as_category_new">
        <doc xml:space="preserve">Creates a new #AsCategory.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #AsCategory</doc>
          <type name="Category" c:type="AsCategory*"/>
        </return-value>
      </constructor>
      <function name="construct" c:identifier="as_category_construct">
        <doc xml:space="preserve">Construct a new #AsCategory.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #AsCategory</doc>
          <type name="Category" c:type="AsCategory*"/>
        </return-value>
        <parameters>
          <parameter name="object_type" transfer-ownership="none">
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </function>
      <method name="add_subcategory"
              c:identifier="as_category_add_subcategory">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
          <parameter name="cat" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </parameter>
        </parameters>
      </method>
      <method name="complete" c:identifier="as_category_complete">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_directory" c:identifier="as_category_get_directory">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_excluded" c:identifier="as_category_get_excluded">
        <doc xml:space="preserve">@self a valid #AsCategory instance</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an array of category names</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_icon" c:identifier="as_category_get_icon">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_included" c:identifier="as_category_get_included">
        <doc xml:space="preserve">@self a valid #AsCategory instance</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an array of category names</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_level" c:identifier="as_category_get_level">
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="as_category_get_name">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subcategories"
              c:identifier="as_category_get_subcategories">
        <doc xml:space="preserve">@self a valid #AsCategory instance</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an array of category names</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_summary" c:identifier="as_category_get_summary">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_subcategory"
              c:identifier="as_category_has_subcategory">
        <doc xml:space="preserve">Test for sub-categories.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if this category has any subcategory</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_subcategory"
              c:identifier="as_category_remove_subcategory">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
          <parameter name="cat" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_directory" c:identifier="as_category_set_directory">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_icon" c:identifier="as_category_set_icon">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_level" c:identifier="as_category_set_level">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name" c:identifier="as_category_set_name">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="directory" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="excluded" transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="icon" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="included" transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="level" writable="1" transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="name" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="subcategories" transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="summary" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="CategoryPrivate" c:type="AsCategoryPrivate*"/>
      </field>
    </class>
    <record name="CategoryClass"
            c:type="AsCategoryClass"
            glib:is-gtype-struct-for="Category">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="CategoryPrivate" c:type="AsCategoryPrivate" disguised="1">
    </record>
    <enumeration name="ChecksumKind" c:type="AsChecksumKind">
      <doc xml:space="preserve">Checksums supported by #AsRelease</doc>
      <member name="none" value="0" c:identifier="AS_CHECKSUM_KIND_NONE">
        <doc xml:space="preserve">No checksum</doc>
      </member>
      <member name="sha1" value="1" c:identifier="AS_CHECKSUM_KIND_SHA1">
        <doc xml:space="preserve">SHA1</doc>
      </member>
      <member name="sha256" value="2" c:identifier="AS_CHECKSUM_KIND_SHA256">
        <doc xml:space="preserve">SHA256</doc>
      </member>
      <member name="last" value="3" c:identifier="AS_CHECKSUM_KIND_LAST">
      </member>
    </enumeration>
    <class name="Component"
           c:symbol-prefix="component"
           c:type="AsComponent"
           parent="GObject.Object"
           glib:type-name="AsComponent"
           glib:get-type="as_component_get_type"
           glib:type-struct="ComponentClass">
      <constructor name="new" c:identifier="as_component_new">
        <doc xml:space="preserve">Creates a new #AsComponent.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #AsComponent</doc>
          <type name="Component" c:type="AsComponent*"/>
        </return-value>
      </constructor>
      <method name="add_bundle_id"
              c:identifier="as_component_add_bundle_id"
              version="0.8.0">
        <doc xml:space="preserve">Adds a bundle identifier to the component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="bundle_kind" transfer-ownership="none">
            <doc xml:space="preserve">the URL kind, e.g. %AS_BUNDLE_KIND_LIMBA</doc>
            <type name="BundleKind" c:type="AsBundleKind"/>
          </parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve">The bundle identification string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_extends" c:identifier="as_component_add_extends">
        <doc xml:space="preserve">Add a reference to the extended component</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="cpt_id" transfer-ownership="none">
            <doc xml:space="preserve">The id of a component which is extended by this component</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_icon" c:identifier="as_component_add_icon">
        <doc xml:space="preserve">Add an icon of the given type to this component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponent instance</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <type name="IconKind" c:type="AsIconKind"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_icon_url"
              c:identifier="as_component_add_icon_url"
              version="0.7.4">
        <doc xml:space="preserve">Set an icon url for this component, which can be a remote
or local location.

The icon_url does not end up in XML generated for this component,
it is mereley designed to be a fast way to get icon information
for a component.
If you want to set an icon which gets serialized to AppStream xml,
use the as_component_add_icon() method instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponent instance</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">An icon width</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">An icon height</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The full icon url</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_language"
              c:identifier="as_component_add_language"
              version="0.7.0">
        <doc xml:space="preserve">Adds a language to the component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve">the locale, or %NULL. e.g. "en_GB"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="percentage" transfer-ownership="none">
            <doc xml:space="preserve">the percentage completion of the translation, 0 for locales with unknown amount of translation</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_provided_item"
              c:identifier="as_component_add_provided_item"
              version="0.6.2">
        <doc xml:space="preserve">Adds a provided item to the component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the kind of the provided item (e.g. %AS_PROVIDES_KIND_MIMETYPE)</doc>
            <type name="ProvidesKind" c:type="AsProvidesKind"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">additional data associated with this item, or %NULL.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_release" c:identifier="as_component_add_release">
        <doc xml:space="preserve">Add an #AsRelease to this component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="release" transfer-ownership="none">
            <doc xml:space="preserve">The #AsRelease to add</doc>
            <type name="Release" c:type="AsRelease*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_screenshot" c:identifier="as_component_add_screenshot">
        <doc xml:space="preserve">Add an #AsScreenshot to this component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="sshot" transfer-ownership="none">
            <doc xml:space="preserve">The #AsScreenshot to add</doc>
            <type name="Screenshot" c:type="AsScreenshot*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_url"
              c:identifier="as_component_add_url"
              version="0.6.2">
        <doc xml:space="preserve">Adds some URL data to the component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="url_kind" transfer-ownership="none">
            <doc xml:space="preserve">the URL kind, e.g. %AS_URL_KIND_HOMEPAGE</doc>
            <type name="UrlKind" c:type="AsUrlKind"/>
          </parameter>
          <parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">the full URL.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_active_locale"
              c:identifier="as_component_get_active_locale">
        <doc xml:space="preserve">Get the current active locale for this component, which
is used to get localized messages.</doc>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bundle_id"
              c:identifier="as_component_get_bundle_id"
              version="0.8.0">
        <doc xml:space="preserve">Gets a bundle identifier string.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">string, or %NULL if unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="bundle_kind" transfer-ownership="none">
            <doc xml:space="preserve">the bundle kind, e.g. %AS_BUNDLE_KIND_LIMBA.</doc>
            <type name="BundleKind" c:type="AsBundleKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bundle_ids"
              c:identifier="as_component_get_bundle_ids"
              version="0.8.0">
        <doc xml:space="preserve">Gets the bundle-ids set for the component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Bundle ids</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="gpointer" c:type="gpointer"/>
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_categories" c:identifier="as_component_get_categories">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">String array of categories</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_compulsory_for_desktops"
              c:identifier="as_component_get_compulsory_for_desktops">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A list of desktops where this component is compulsory</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_description"
              c:identifier="as_component_get_description">
        <doc xml:space="preserve">Get the localized long description of this component.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_developer_name"
              c:identifier="as_component_get_developer_name">
        <doc xml:space="preserve">Get the component's developer or development team name.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_extends"
              c:identifier="as_component_get_extends"
              version="0.7.0">
        <doc xml:space="preserve">Returns a string list of IDs of components which
are extended by this addon.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an array</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_icon" c:identifier="as_component_get_icon">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The raw icon data found for the given icon kind and size.
If the icon kind is %AS_ICON_KIND_STOCK, the size is ignored.
%NULL is returned in case no icon was found.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponent instance</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <type name="IconKind" c:type="AsIconKind"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_icon_url"
              c:identifier="as_component_get_icon_url"
              version="0.7.4">
        <doc xml:space="preserve">A convenience method to retrieve an icon for this component.
This method is designed to be used by software center applications,
it will always return a full path or url to a valid icon, in contrast
to the as_component_get_icon() method, which returns unprocessed icon data.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The full url for an icon with the given width and height.
In case no icon matching the size is found, %NULL is returned.
The returned path will either be a http link or an absolute, local
path to the image file of the icon.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponent instance</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">An icon width</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">An icon height</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_icon_urls"
              c:identifier="as_component_get_icon_urls"
              version="0.7.4">
        <doc xml:space="preserve">Gets the icon-urls has table for the component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A hash map of icon urls and sizes</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="gpointer" c:type="gpointer"/>
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_id" c:identifier="as_component_get_id">
        <doc xml:space="preserve">Set the unique identifier for this component.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_keywords" c:identifier="as_component_get_keywords">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">String array of keywords</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_kind" c:identifier="as_component_get_kind">
        <doc xml:space="preserve">Returns the #AsComponentKind of this component.</doc>
        <return-value transfer-ownership="none">
          <type name="ComponentKind" c:type="AsComponentKind"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_language"
              c:identifier="as_component_get_language"
              version="0.7.0">
        <doc xml:space="preserve">Gets the translation coverage in percent for a specific locale</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a percentage value, -1 if locale was not found</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve">the locale, or %NULL. e.g. "en_GB"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_languages"
              c:identifier="as_component_get_languages"
              version="0.7.0">
        <doc xml:space="preserve">Get a list of all languages.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">list of locales</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="as_component_get_name">
        <doc xml:space="preserve">A human-readable name for this component.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_origin" c:identifier="as_component_get_origin">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pkgnames" c:identifier="as_component_get_pkgnames">
        <doc xml:space="preserve">Get a list of package names which this component consists of.
This usually is just one package name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">String array of package names</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_project_group"
              c:identifier="as_component_get_project_group">
        <doc xml:space="preserve">Get the component's project group.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_project_license"
              c:identifier="as_component_get_project_license">
        <doc xml:space="preserve">Get the license of the project this component belongs to.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_provided_items"
              c:identifier="as_component_get_provided_items">
        <doc xml:space="preserve">Get an array of the provides-items this component is
associated with.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A list of desktops where this component is compulsory</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_releases" c:identifier="as_component_get_releases">
        <doc xml:space="preserve">Get an array of the #AsRelease items this component
provides.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A list of releases</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Release"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_screenshots"
              c:identifier="as_component_get_screenshots">
        <doc xml:space="preserve">Get a list of associated screenshots.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an array of #AsScreenshot instances</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Screenshot"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_source_pkgname"
              c:identifier="as_component_get_source_pkgname">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_summary" c:identifier="as_component_get_summary">
        <doc xml:space="preserve">Get a short description of this component.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_url"
              c:identifier="as_component_get_url"
              version="0.6.2">
        <doc xml:space="preserve">Gets a URL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">string, or %NULL if unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="url_kind" transfer-ownership="none">
            <doc xml:space="preserve">the URL kind, e.g. %AS_URL_KIND_HOMEPAGE.</doc>
            <type name="UrlKind" c:type="AsUrlKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_urls"
              c:identifier="as_component_get_urls"
              version="0.6.2">
        <doc xml:space="preserve">Gets the URLs set for the component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">URLs</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="gpointer" c:type="gpointer"/>
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_category" c:identifier="as_component_has_category">
        <doc xml:space="preserve">Check if component is in the specified category.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponent object</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="category" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_compulsory_for_desktop"
              c:identifier="as_component_is_compulsory_for_desktop">
        <doc xml:space="preserve">Check if this component is compulsory for the given desktop.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if compulsory, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponent object</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="desktop" transfer-ownership="none">
            <doc xml:space="preserve">the desktop-id to test for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_valid" c:identifier="as_component_is_valid">
        <doc xml:space="preserve">Check if the essential properties of this Component are
populated with useful data.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the component data was validated successfully.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="provides_item" c:identifier="as_component_provides_item">
        <doc xml:space="preserve">Checks if this component provides an item of the specified type</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if an item was found</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a valid #AsComponent</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the kind of the provides-item</doc>
            <type name="ProvidesKind" c:type="AsProvidesKind"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the value of the provides-item</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_active_locale"
              c:identifier="as_component_set_active_locale">
        <doc xml:space="preserve">Set the current active locale for this component, which
is used to get localized messages.
If the #AsComponent was fetched from a localized database, usually only
one locale is available.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="locale" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_categories" c:identifier="as_component_set_categories">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <array c:type="gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="set_categories_from_str"
              c:identifier="as_component_set_categories_from_str">
        <doc xml:space="preserve">Set the categories list from a string</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">a valid #AsComponent instance</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="categories_str" transfer-ownership="none">
            <doc xml:space="preserve">Semicolon-separated list of category-names</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_compulsory_for_desktops"
              c:identifier="as_component_set_compulsory_for_desktops">
        <doc xml:space="preserve">Set a list of desktops where this component is compulsory.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_description"
              c:identifier="as_component_set_description">
        <doc xml:space="preserve">Set long description for this component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">A valid #AsComponent</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The long description</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve">The locale the used for this value, or %NULL to use the current active one.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_developer_name"
              c:identifier="as_component_set_developer_name">
        <doc xml:space="preserve">Set the the component's developer or development team name.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="locale" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_id" c:identifier="as_component_set_id">
        <doc xml:space="preserve">Set the unique identifier for this component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_keywords" c:identifier="as_component_set_keywords">
        <doc xml:space="preserve">Set keywords for this component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">String-array of keywords</doc>
            <array c:type="gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve">Locale of the values, or %NULL to use current locale.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_kind" c:identifier="as_component_set_kind">
        <doc xml:space="preserve">Sets the #AsComponentKind of this component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="ComponentKind" c:type="AsComponentKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name" c:identifier="as_component_set_name">
        <doc xml:space="preserve">Set a human-readable name for this component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">A valid #AsComponent</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve">The locale the used for this value, or %NULL to use the current active one.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_origin" c:identifier="as_component_set_origin">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="origin" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pkgnames" c:identifier="as_component_set_pkgnames">
        <doc xml:space="preserve">Set a list of package names this component consists of.
(This should usually be just one package name)</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <array c:type="gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="set_project_group"
              c:identifier="as_component_set_project_group">
        <doc xml:space="preserve">Set the component's project group.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_project_license"
              c:identifier="as_component_set_project_license">
        <doc xml:space="preserve">Set the project license.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_source_pkgname"
              c:identifier="as_component_set_source_pkgname">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="spkgname" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_summary" c:identifier="as_component_set_summary">
        <doc xml:space="preserve">Set a short description for this component.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">A valid #AsComponent</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The summary</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve">The locale the used for this value, or %NULL to use the current active one.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string" c:identifier="as_component_to_string">
        <doc xml:space="preserve">Returns a string identifying this component.
(useful for debugging)</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A descriptive string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="categories" writable="1" transfer-ownership="none">
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="description" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="developer-name" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="icon-urls" transfer-ownership="none">
        <type name="GLib.HashTable">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </property>
      <property name="id" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="keywords" writable="1" transfer-ownership="none">
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="kind" writable="1" transfer-ownership="none">
        <type name="ComponentKind"/>
      </property>
      <property name="name" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="pkgnames" writable="1" transfer-ownership="none">
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="project-group" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="project-license" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="screenshots" transfer-ownership="none">
        <array name="GLib.PtrArray">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </property>
      <property name="summary" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="urls" transfer-ownership="none">
        <type name="GLib.HashTable">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ComponentClass"
            c:type="AsComponentClass"
            glib:is-gtype-struct-for="Component">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <enumeration name="ComponentKind"
                 glib:type-name="AsComponentKind"
                 glib:get-type="as_component_kind_get_type"
                 c:type="AsComponentKind">
      <doc xml:space="preserve">The URL type.</doc>
      <member name="unknown"
              value="0"
              c:identifier="AS_COMPONENT_KIND_UNKNOWN"
              glib:nick="unknown">
        <doc xml:space="preserve">Type invalid or not known</doc>
      </member>
      <member name="generic"
              value="1"
              c:identifier="AS_COMPONENT_KIND_GENERIC"
              glib:nick="generic">
        <doc xml:space="preserve">A generic (= without specialized type) component</doc>
      </member>
      <member name="desktop"
              value="2"
              c:identifier="AS_COMPONENT_KIND_DESKTOP_APP"
              glib:nick="desktop">
        <doc xml:space="preserve">An application with a .desktop-file</doc>
      </member>
      <member name="font"
              value="4"
              c:identifier="AS_COMPONENT_KIND_FONT"
              glib:nick="font">
        <doc xml:space="preserve">A font</doc>
      </member>
      <member name="codec"
              value="8"
              c:identifier="AS_COMPONENT_KIND_CODEC"
              glib:nick="codec">
        <doc xml:space="preserve">A multimedia codec</doc>
      </member>
      <member name="inputmethod"
              value="16"
              c:identifier="AS_COMPONENT_KIND_INPUTMETHOD"
              glib:nick="inputmethod">
        <doc xml:space="preserve">An input-method provider</doc>
      </member>
      <member name="addon"
              value="32"
              c:identifier="AS_COMPONENT_KIND_ADDON"
              glib:nick="addon">
        <doc xml:space="preserve">An extension of existing software, which does not run standalone</doc>
      </member>
      <member name="firmware"
              value="64"
              c:identifier="AS_COMPONENT_KIND_FIRMWARE"
              glib:nick="firmware">
        <doc xml:space="preserve">Firmware</doc>
      </member>
      <member name="last"
              value="7"
              c:identifier="AS_COMPONENT_KIND_LAST"
              glib:nick="last">
      </member>
      <function name="from_string"
                c:identifier="as_component_kind_from_string">
        <doc xml:space="preserve">Converts the text representation to an enumerated value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #AsComponentKind or %AS_COMPONENT_KIND_UNKNOWN for unknown</doc>
          <type name="ComponentKind" c:type="AsComponentKind"/>
        </return-value>
        <parameters>
          <parameter name="kind_str" transfer-ownership="none">
            <doc xml:space="preserve">the string.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="to_string" c:identifier="as_component_kind_to_string">
        <doc xml:space="preserve">Converts the enumerated value to an text representation.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">string version of @kind</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the %AsComponentKind.</doc>
            <type name="ComponentKind" c:type="AsComponentKind"/>
          </parameter>
        </parameters>
      </function>
    </enumeration>
    <class name="DataPool"
           c:symbol-prefix="data_pool"
           c:type="AsDataPool"
           parent="GObject.Object"
           glib:type-name="AsDataPool"
           glib:get-type="as_data_pool_get_type"
           glib:type-struct="DataPoolClass">
      <constructor name="new" c:identifier="as_data_pool_new">
        <doc xml:space="preserve">Creates a new #AsDataPool.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #AsDataPool</doc>
          <type name="DataPool" c:type="AsDataPool*"/>
        </return-value>
      </constructor>
      <method name="get_components" c:identifier="as_data_pool_get_components">
        <doc xml:space="preserve">Get a list of found components.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">a list of #AsComponent instances, free with g_list_free()</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Component"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_locale" c:identifier="as_data_pool_get_locale">
        <doc xml:space="preserve">Gets the currently used locale.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Locale used for metadata parsing.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">a #AsDataPool instance.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_watched_locations"
              c:identifier="as_data_pool_get_watched_locations">
        <doc xml:space="preserve">Return a list of all locations which are searched for metadata.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A string-list of watched (absolute) filepaths</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">a valid #AsDataPool instance</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_data_source_directories"
              c:identifier="as_data_pool_set_data_source_directories">
        <doc xml:space="preserve">@dpool a valid #AsBuilder instance
Set locations for the data pool to read it's data from.
This is mainly used for testing purposes. Each location should have an
"xmls" and/or "yaml" subdirectory with the actual data as (compressed)
AppStream XML or DEP-11 YAML in it.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="dirs" transfer-ownership="none">
            <doc xml:space="preserve">a zero-terminated array of data input directories.</doc>
            <array c:type="gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="set_locale" c:identifier="as_data_pool_set_locale">
        <doc xml:space="preserve">Sets the current locale which should be used when parsing metadata.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">a #AsDataPool instance.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve">the locale.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="update" c:identifier="as_data_pool_update">
        <doc xml:space="preserve">Builds an index of all found components in the watched locations.
The function will try to get as much data into the pool as possible, so even if
the updates completes with %FALSE, it might still add components to the pool.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if update completed without error.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="DataPoolClass"
            c:type="AsDataPoolClass"
            glib:is-gtype-struct-for="DataPool">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="Database"
           c:symbol-prefix="database"
           c:type="AsDatabase"
           parent="GObject.Object"
           glib:type-name="AsDatabase"
           glib:get-type="as_database_get_type"
           glib:type-struct="DatabaseClass">
      <constructor name="new" c:identifier="as_database_new">
        <doc xml:space="preserve">Creates a new #AsDatabase.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #AsDatabase</doc>
          <type name="Database" c:type="AsDatabase*"/>
        </return-value>
      </constructor>
      <function name="construct" c:identifier="as_database_construct">
        <doc xml:space="preserve">Construct a new #AsDatabase.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #AsDatabase</doc>
          <type name="Database" c:type="AsDatabase*"/>
        </return-value>
        <parameters>
          <parameter name="object_type" transfer-ownership="none">
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="open" invoker="open">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="db_exists" c:identifier="as_database_db_exists">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the application database exists</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a valid #AsDatabase instance</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="find_components"
              c:identifier="as_database_find_components">
        <doc xml:space="preserve">Find components in the Appstream database.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an array of #AsComponent objects which have been found</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Component"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a valid #AsDatabase instance</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
          <parameter name="query" transfer-ownership="none">
            <doc xml:space="preserve">a #AsSearchQuery</doc>
            <type name="SearchQuery" c:type="AsSearchQuery*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_components_by_term"
              c:identifier="as_database_find_components_by_term">
        <doc xml:space="preserve">Find components in the Appstream database by searching for a simple string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an array of #AsComponent objects which have been found</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Component"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a valid #AsDatabase instance</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
          <parameter name="search_term" transfer-ownership="none">
            <doc xml:space="preserve">the string to search for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="categories_str"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a comma-separated list of category names, or NULL to search in all categories</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_all_components"
              c:identifier="as_database_get_all_components">
        <doc xml:space="preserve">Dump a list of all components found in the database.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an array of #AsComponent objects</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Component"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a valid #AsDatabase instance</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_component_by_id"
              c:identifier="as_database_get_component_by_id">
        <doc xml:space="preserve">Get a component by it's ID</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #AsComponent or NULL if none was found</doc>
          <type name="Component" c:type="AsComponent*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a valid #AsDatabase instance</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
          <parameter name="idname" transfer-ownership="none">
            <doc xml:space="preserve">the ID of the component</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_components_by_kind"
              c:identifier="as_database_get_components_by_kind">
        <doc xml:space="preserve">Find components of a given kind.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an array of #AsComponent objects which have been found, NULL on error</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Component"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a valid #AsDatabase instance</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
          <parameter name="kinds" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponentKind bitfield</doc>
            <type name="ComponentKind" c:type="AsComponentKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_components_by_provides"
              c:identifier="as_database_get_components_by_provides">
        <doc xml:space="preserve">Find components in the Appstream database.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an array of #AsComponent objects which have been found, NULL on error</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Component"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">a valid #AsDatabase instance</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">an #AsProvidesKind</doc>
            <type name="ProvidesKind" c:type="AsProvidesKind"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">a value of the selected provides kind</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">additional provides data</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_database_path"
              c:identifier="as_database_get_database_path">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open" c:identifier="as_database_open">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_database_path"
              c:identifier="as_database_set_database_path">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="database-path" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="DatabasePrivate" c:type="AsDatabasePrivate*"/>
      </field>
    </class>
    <record name="DatabaseClass"
            c:type="AsDatabaseClass"
            glib:is-gtype-struct-for="Database">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="open">
        <callback name="open">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Database" c:type="AsDatabase*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="DatabasePrivate" c:type="AsDatabasePrivate" disguised="1">
    </record>
    <class name="DistroDetails"
           c:symbol-prefix="distro_details"
           c:type="AsDistroDetails"
           parent="GObject.Object"
           glib:type-name="AsDistroDetails"
           glib:get-type="as_distro_details_get_type"
           glib:type-struct="DistroDetailsClass">
      <constructor name="new" c:identifier="as_distro_details_new">
        <doc xml:space="preserve">Creates a new #AsDistroDetails instance.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #AsDistroDetails instance.</doc>
          <type name="DistroDetails" c:type="AsDistroDetails*"/>
        </return-value>
      </constructor>
      <function name="construct" c:identifier="as_distro_details_construct">
        <doc xml:space="preserve">Construct a new #AsDistroDetails instance.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #AsDistroDetails instance.</doc>
          <type name="DistroDetails" c:type="AsDistroDetails*"/>
        </return-value>
        <parameters>
          <parameter name="object_type" transfer-ownership="none">
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_icon_repository_paths"
                c:identifier="as_distro_details_get_icon_repository_paths">
        <doc xml:space="preserve">Returns list of icon-paths for software-center applications to use.
Icons of software (even if it is not installed) are stored in these
locations.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A NULL-terminated array of paths.</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
      </function>
      <method name="config_distro_get_bool"
              c:identifier="as_distro_details_config_distro_get_bool">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="DistroDetails" c:type="AsDistroDetails*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="config_distro_get_str"
              c:identifier="as_distro_details_config_distro_get_str">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="DistroDetails" c:type="AsDistroDetails*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_distro_id"
              c:identifier="as_distro_details_get_distro_id">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="DistroDetails" c:type="AsDistroDetails*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_distro_name"
              c:identifier="as_distro_details_get_distro_name">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="DistroDetails" c:type="AsDistroDetails*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_distro_version"
              c:identifier="as_distro_details_get_distro_version">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="DistroDetails" c:type="AsDistroDetails*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="distro-id" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="distro-name" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="distro-version" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="DistroDetailsPrivate" c:type="AsDistroDetailsPrivate*"/>
      </field>
    </class>
    <record name="DistroDetailsClass"
            c:type="AsDistroDetailsClass"
            glib:is-gtype-struct-for="DistroDetails">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="DistroDetailsPrivate"
            c:type="AsDistroDetailsPrivate"
            disguised="1">
    </record>
    <enumeration name="IconKind" c:type="AsIconKind">
      <doc xml:space="preserve">The icon type.</doc>
      <member name="unknown" value="0" c:identifier="AS_ICON_KIND_UNKNOWN">
      </member>
      <member name="cached" value="1" c:identifier="AS_ICON_KIND_CACHED">
        <doc xml:space="preserve">Icon in the internal caches</doc>
      </member>
      <member name="stock" value="2" c:identifier="AS_ICON_KIND_STOCK">
        <doc xml:space="preserve">Stock icon name</doc>
      </member>
      <member name="local" value="3" c:identifier="AS_ICON_KIND_LOCAL">
        <doc xml:space="preserve">Local icon name</doc>
      </member>
      <member name="remote" value="4" c:identifier="AS_ICON_KIND_REMOTE">
        <doc xml:space="preserve">Remote icon URL</doc>
      </member>
      <member name="last" value="5" c:identifier="AS_ICON_KIND_LAST">
      </member>
    </enumeration>
    <class name="Image"
           c:symbol-prefix="image"
           c:type="AsImage"
           parent="GObject.Object"
           glib:type-name="AsImage"
           glib:get-type="as_image_get_type"
           glib:type-struct="ImageClass">
      <constructor name="new" c:identifier="as_image_new">
        <doc xml:space="preserve">Creates a new #AsImage.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #AsImage</doc>
          <type name="Image" c:type="AsImage*"/>
        </return-value>
      </constructor>
      <function name="kind_from_string"
                c:identifier="as_image_kind_from_string">
        <doc xml:space="preserve">Converts the text representation to an enumerated value.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #AsImageKind, or %AS_IMAGE_KIND_UNKNOWN for unknown.</doc>
          <type name="ImageKind" c:type="AsImageKind"/>
        </return-value>
        <parameters>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the string.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="kind_to_string" c:identifier="as_image_kind_to_string">
        <doc xml:space="preserve">Converts the enumerated value to an text representation.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">string version of @kind</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the #AsImageKind.</doc>
            <type name="ImageKind" c:type="AsImageKind"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_height" c:identifier="as_image_get_height">
        <doc xml:space="preserve">Gets the image height.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">height in pixels</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #AsImage instance.</doc>
            <type name="Image" c:type="AsImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_kind" c:identifier="as_image_get_kind">
        <doc xml:space="preserve">Gets the image kind.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #AsImageKind</doc>
          <type name="ImageKind" c:type="AsImageKind"/>
        </return-value>
        <parameters>
          <instance-parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #AsImage instance.</doc>
            <type name="Image" c:type="AsImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_url" c:identifier="as_image_get_url">
        <doc xml:space="preserve">Gets the full qualified URL for the image, usually pointing at some mirror.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">URL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #AsImage instance.</doc>
            <type name="Image" c:type="AsImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_width" c:identifier="as_image_get_width">
        <doc xml:space="preserve">Gets the image width.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">width in pixels</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #AsImage instance.</doc>
            <type name="Image" c:type="AsImage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_height" c:identifier="as_image_set_height">
        <doc xml:space="preserve">Sets the image height.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #AsImage instance.</doc>
            <type name="Image" c:type="AsImage*"/>
          </instance-parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the height in pixels.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_kind" c:identifier="as_image_set_kind">
        <doc xml:space="preserve">Sets the image kind.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #AsImage instance.</doc>
            <type name="Image" c:type="AsImage*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the #AsImageKind, e.g. %AS_IMAGE_KIND_THUMBNAIL.</doc>
            <type name="ImageKind" c:type="AsImageKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_url" c:identifier="as_image_set_url">
        <doc xml:space="preserve">Sets the fully-qualified mirror URL to use for the image.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #AsImage instance.</doc>
            <type name="Image" c:type="AsImage*"/>
          </instance-parameter>
          <parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">the URL.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_width" c:identifier="as_image_set_width">
        <doc xml:space="preserve">Sets the image width.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #AsImage instance.</doc>
            <type name="Image" c:type="AsImage*"/>
          </instance-parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve">the width in pixels.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ImageClass"
            c:type="AsImageClass"
            glib:is-gtype-struct-for="Image">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <enumeration name="ImageKind" c:type="AsImageKind">
      <doc xml:space="preserve">The image type.</doc>
      <member name="unknown" value="0" c:identifier="AS_IMAGE_KIND_UNKNOWN">
        <doc xml:space="preserve">Type invalid or not known</doc>
      </member>
      <member name="source" value="1" c:identifier="AS_IMAGE_KIND_SOURCE">
        <doc xml:space="preserve">The source image at full resolution</doc>
      </member>
      <member name="thumbnail"
              value="2"
              c:identifier="AS_IMAGE_KIND_THUMBNAIL">
        <doc xml:space="preserve">A thumbnail at reduced resolution</doc>
      </member>
      <member name="last" value="3" c:identifier="AS_IMAGE_KIND_LAST">
      </member>
    </enumeration>
    <enumeration name="IssueImportance" c:type="AsIssueImportance">
      <doc xml:space="preserve">The importance of an issue found by #AsValidator</doc>
      <member name="unknown"
              value="0"
              c:identifier="AS_ISSUE_IMPORTANCE_UNKNOWN">
      </member>
      <member name="error" value="1" c:identifier="AS_ISSUE_IMPORTANCE_ERROR">
        <doc xml:space="preserve">There is a serious error in your metadata</doc>
      </member>
      <member name="warning"
              value="2"
              c:identifier="AS_ISSUE_IMPORTANCE_WARNING">
        <doc xml:space="preserve">Something which should be fixed, but is not fatal</doc>
      </member>
      <member name="info" value="3" c:identifier="AS_ISSUE_IMPORTANCE_INFO">
        <doc xml:space="preserve">Non-essential information on how to improve your metadata</doc>
      </member>
      <member name="pedantic"
              value="4"
              c:identifier="AS_ISSUE_IMPORTANCE_PEDANTIC">
        <doc xml:space="preserve">Pedantic information</doc>
      </member>
    </enumeration>
    <enumeration name="IssueKind" c:type="AsIssueKind">
      <doc xml:space="preserve">The issue type.</doc>
      <member name="unknown" value="0" c:identifier="AS_ISSUE_KIND_UNKNOWN">
        <doc xml:space="preserve">Type invalid or not known</doc>
      </member>
      <member name="markup_invalid"
              value="1"
              c:identifier="AS_ISSUE_KIND_MARKUP_INVALID">
        <doc xml:space="preserve">The XML markup is invalid</doc>
      </member>
      <member name="legacy" value="2" c:identifier="AS_ISSUE_KIND_LEGACY">
        <doc xml:space="preserve">An element from a legacy AppStream specification has been found</doc>
      </member>
      <member name="tag_duplicated"
              value="3"
              c:identifier="AS_ISSUE_KIND_TAG_DUPLICATED">
        <doc xml:space="preserve">A tag is duplicated</doc>
      </member>
      <member name="tag_missing"
              value="4"
              c:identifier="AS_ISSUE_KIND_TAG_MISSING">
        <doc xml:space="preserve">A required tag is missing</doc>
      </member>
      <member name="tag_unknown"
              value="5"
              c:identifier="AS_ISSUE_KIND_TAG_UNKNOWN">
        <doc xml:space="preserve">An unknown tag was found</doc>
      </member>
      <member name="tag_not_allowed"
              value="6"
              c:identifier="AS_ISSUE_KIND_TAG_NOT_ALLOWED">
        <doc xml:space="preserve">A tag is not allowed in the current context</doc>
      </member>
      <member name="property_missing"
              value="7"
              c:identifier="AS_ISSUE_KIND_PROPERTY_MISSING">
        <doc xml:space="preserve">A required property is missing</doc>
      </member>
      <member name="property_invalid"
              value="8"
              c:identifier="AS_ISSUE_KIND_PROPERTY_INVALID">
        <doc xml:space="preserve">A property is invalid</doc>
      </member>
      <member name="value_wrong"
              value="9"
              c:identifier="AS_ISSUE_KIND_VALUE_WRONG">
        <doc xml:space="preserve">The value of a tag or property is wrong</doc>
      </member>
      <member name="value_issue"
              value="10"
              c:identifier="AS_ISSUE_KIND_VALUE_ISSUE">
        <doc xml:space="preserve">There is an issue with a tag or property value (often non-fatal)</doc>
      </member>
    </enumeration>
    <class name="MenuParser"
           c:symbol-prefix="menu_parser"
           c:type="AsMenuParser"
           parent="GObject.Object"
           glib:type-name="AsMenuParser"
           glib:get-type="as_menu_parser_get_type"
           glib:type-struct="MenuParserClass">
      <constructor name="new" c:identifier="as_menu_parser_new">
        <doc xml:space="preserve">Creates a new #AsMenuParser.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #AsMenuParser</doc>
          <type name="MenuParser" c:type="AsMenuParser*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_file"
                   c:identifier="as_menu_parser_new_from_file">
        <doc xml:space="preserve">Creates a new #AsMenuParser with a custom XDG menu file.

@menu_file a custom XDG menu XML file</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #AsMenuParser</doc>
          <type name="MenuParser" c:type="AsMenuParser*"/>
        </return-value>
        <parameters>
          <parameter name="menu_file" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="construct" c:identifier="as_menu_parser_construct">
        <doc xml:space="preserve">Create a new MenuParser for the generic AppStream categories list</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #AsMenuParser</doc>
          <type name="MenuParser" c:type="AsMenuParser*"/>
        </return-value>
        <parameters>
          <parameter name="object_type" transfer-ownership="none">
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </function>
      <function name="construct_from_file"
                c:identifier="as_menu_parser_construct_from_file">
        <doc xml:space="preserve">Create a new MenuParser for an arbitrary menu file</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #AsMenuParser</doc>
          <type name="MenuParser" c:type="AsMenuParser*"/>
        </return-value>
        <parameters>
          <parameter name="object_type" transfer-ownership="none">
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="menu_file" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_update_category_data"
              c:identifier="as_menu_parser_get_update_category_data">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MenuParser" c:type="AsMenuParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="parse" c:identifier="as_menu_parser_parse">
        <doc xml:space="preserve">Parse the menu file</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">#GList of #AsCategory objects found in the menu, or NULL if there was an error</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Category"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MenuParser" c:type="AsMenuParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_update_category_data"
              c:identifier="as_menu_parser_set_update_category_data">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="MenuParser" c:type="AsMenuParser*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="update-category-data"
                writable="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="MenuParserPrivate" c:type="AsMenuParserPrivate*"/>
      </field>
    </class>
    <record name="MenuParserClass"
            c:type="AsMenuParserClass"
            glib:is-gtype-struct-for="MenuParser">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="MenuParserPrivate"
            c:type="AsMenuParserPrivate"
            disguised="1">
    </record>
    <class name="Metadata"
           c:symbol-prefix="metadata"
           c:type="AsMetadata"
           parent="GObject.Object"
           glib:type-name="AsMetadata"
           glib:get-type="as_metadata_get_type"
           glib:type-struct="MetadataClass">
      <constructor name="new" c:identifier="as_metadata_new">
        <doc xml:space="preserve">Creates a new #AsMetadata.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #AsMetadata</doc>
          <type name="Metadata" c:type="AsMetadata*"/>
        </return-value>
      </constructor>
      <function name="error_quark" c:identifier="as_metadata_error_quark">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">An error quark.</doc>
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <method name="add_component" c:identifier="as_metadata_add_component">
        <doc xml:space="preserve">Add an #AsComponent to the list of components.
This can be used to add multiple components in order to
produce a distro-XML AppStream metadata file.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
          <parameter name="cpt" transfer-ownership="none">
            <type name="Component" c:type="AsComponent*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear_components"
              c:identifier="as_metadata_clear_components">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="component_to_upstream_xml"
              c:identifier="as_metadata_component_to_upstream_xml">
        <doc xml:space="preserve">Convert an #AsComponent to upstream XML.
(The amount of localization included in the metadata depends on how the #AsComponent
was initially loaded)

The first #AsComponent added to the internal list will be transformed.
In case no component is present, %NULL is returned.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A string containing the XML. Free with g_free()</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="components_to_distro_xml"
              c:identifier="as_metadata_components_to_distro_xml">
        <doc xml:space="preserve">Serialize all #AsComponent instances into AppStream
distro-XML data.
%NULL is returned if there is nothing to serialize.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A string containing the XML. Free with g_free()</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_component" c:identifier="as_metadata_get_component">
        <doc xml:space="preserve">Gets the #AsComponent which has been parsed from the XML.
If the AppStream XML contained multiple components, return the first
component that has been parsed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">An #AsComponent or %NULL</doc>
          <type name="Component" c:type="AsComponent*"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <doc xml:space="preserve">a #AsMetadata instance.</doc>
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_components" c:identifier="as_metadata_get_components">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A #GPtrArray of all parsed components</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Component"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <doc xml:space="preserve">a #AsMetadata instance.</doc>
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_locale" c:identifier="as_metadata_get_locale">
        <doc xml:space="preserve">Gets the current active locale for parsing metadata,
or "ALL" if all locales are read.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Locale used for metadata parsing.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <doc xml:space="preserve">a #AsMetadata instance.</doc>
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_origin" c:identifier="as_metadata_get_origin">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The origin of AppStream distro metadata</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <doc xml:space="preserve">an #AsMetadata instance.</doc>
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="parse_data"
              c:identifier="as_metadata_parse_data"
              throws="1">
        <doc xml:space="preserve">Parses AppStream metadata.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <doc xml:space="preserve">A valid #AsMetadata instance</doc>
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">XML data describing a component</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_file"
              c:identifier="as_metadata_parse_file"
              throws="1">
        <doc xml:space="preserve">Parses an AppStream upstream metadata file.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <doc xml:space="preserve">A valid #AsMetadata instance</doc>
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve">#GFile for the upstream metadata</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_distro_xml"
              c:identifier="as_metadata_save_distro_xml"
              throws="1">
        <doc xml:space="preserve">Serialize all #AsComponent instances to XML and save the data to a file.
An existing file at the same location will be overridden.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
          <parameter name="fname" transfer-ownership="none">
            <doc xml:space="preserve">The filename for the new XML file.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_upstream_xml"
              c:identifier="as_metadata_save_upstream_xml"
              throws="1">
        <doc xml:space="preserve">Serialize #AsComponent instance to XML and save it to file.
An existing file at the same location will be overridden.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
          <parameter name="fname" transfer-ownership="none">
            <doc xml:space="preserve">The filename for the new XML file.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_locale" c:identifier="as_metadata_set_locale">
        <doc xml:space="preserve">Sets the locale which should be read when processing metadata.
All other locales are ignored, which increases parsing speed and
reduces memory usage.
If you set the locale to "ALL", all locales will be read.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <doc xml:space="preserve">a #AsMetadata instance.</doc>
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve">the locale.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_origin" c:identifier="as_metadata_set_origin">
        <doc xml:space="preserve">Set the origin of AppStream distro metadata</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="metad" transfer-ownership="none">
            <doc xml:space="preserve">an #AsMetadata instance.</doc>
            <type name="Metadata" c:type="AsMetadata*"/>
          </instance-parameter>
          <parameter name="origin" transfer-ownership="none">
            <doc xml:space="preserve">the origin of AppStream distro metadata.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="MetadataClass"
            c:type="AsMetadataClass"
            glib:is-gtype-struct-for="Metadata">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <enumeration name="MetadataError" c:type="AsMetadataError">
      <doc xml:space="preserve">The error type.</doc>
      <member name="failed" value="0" c:identifier="AS_METADATA_ERROR_FAILED">
        <doc xml:space="preserve">Generic failure</doc>
      </member>
      <member name="last" value="1" c:identifier="AS_METADATA_ERROR_LAST">
      </member>
    </enumeration>
    <enumeration name="ProvidesKind" c:type="AsProvidesKind">
      <doc xml:space="preserve">Public interfaces components can provide.</doc>
      <member name="unknown" value="0" c:identifier="AS_PROVIDES_KIND_UNKNOWN">
        <doc xml:space="preserve">Unknown kind</doc>
      </member>
      <member name="library" value="1" c:identifier="AS_PROVIDES_KIND_LIBRARY">
        <doc xml:space="preserve">A shared library</doc>
      </member>
      <member name="binary" value="2" c:identifier="AS_PROVIDES_KIND_BINARY">
        <doc xml:space="preserve">A binary installed into a directory in PATH</doc>
      </member>
      <member name="font" value="3" c:identifier="AS_PROVIDES_KIND_FONT">
        <doc xml:space="preserve">A font</doc>
      </member>
      <member name="modalias"
              value="4"
              c:identifier="AS_PROVIDES_KIND_MODALIAS">
        <doc xml:space="preserve">A modalias</doc>
      </member>
      <member name="firmware"
              value="5"
              c:identifier="AS_PROVIDES_KIND_FIRMWARE">
        <doc xml:space="preserve">Kernel firmware</doc>
      </member>
      <member name="python2" value="6" c:identifier="AS_PROVIDES_KIND_PYTHON2">
        <doc xml:space="preserve">A Python2 module</doc>
      </member>
      <member name="python3" value="7" c:identifier="AS_PROVIDES_KIND_PYTHON3">
        <doc xml:space="preserve">A Python3 module</doc>
      </member>
      <member name="mimetype"
              value="8"
              c:identifier="AS_PROVIDES_KIND_MIMETYPE">
        <doc xml:space="preserve">Provides a handler for a mimetype</doc>
      </member>
      <member name="dbus" value="9" c:identifier="AS_PROVIDES_KIND_DBUS">
        <doc xml:space="preserve">A DBus service name</doc>
      </member>
    </enumeration>
    <class name="Release"
           c:symbol-prefix="release"
           c:type="AsRelease"
           parent="GObject.Object"
           glib:type-name="AsRelease"
           glib:get-type="as_release_get_type"
           glib:type-struct="ReleaseClass">
      <constructor name="new" c:identifier="as_release_new">
        <doc xml:space="preserve">Creates a new #AsRelease.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #AsRelease</doc>
          <type name="Release" c:type="AsRelease*"/>
        </return-value>
      </constructor>
      <method name="add_location"
              c:identifier="as_release_add_location"
              version="0.8.1">
        <doc xml:space="preserve">Adds a release location.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
          <parameter name="location" transfer-ownership="none">
            <doc xml:space="preserve">An URL of the download location</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_active_locale"
              c:identifier="as_release_get_active_locale">
        <doc xml:space="preserve">Get the current active locale, which
is used to get localized messages.</doc>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_checksum"
              c:identifier="as_release_get_checksum"
              version="0.8.2">
        <doc xml:space="preserve">Gets the release checksum</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">string, or %NULL for not set or invalid</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
          <parameter name="cs_kind" transfer-ownership="none">
            <type name="ChecksumKind" c:type="AsChecksumKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_description" c:identifier="as_release_get_description">
        <doc xml:space="preserve">Gets the release description markup for a given locale.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">markup, or %NULL for not set or invalid</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <doc xml:space="preserve">a #AsRelease instance.</doc>
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_locations"
              c:identifier="as_release_get_locations"
              version="0.8.1">
        <doc xml:space="preserve">Gets the release locations, typically URLs.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">list of locations</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_timestamp" c:identifier="as_release_get_timestamp">
        <doc xml:space="preserve">Gets the release timestamp.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">timestamp, or 0 for unset</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <doc xml:space="preserve">a #AsRelease instance.</doc>
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_version" c:identifier="as_release_get_version">
        <doc xml:space="preserve">Gets the release version.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">string, or %NULL for not set or invalid</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <doc xml:space="preserve">a #AsRelease instance.</doc>
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_active_locale"
              c:identifier="as_release_set_active_locale">
        <doc xml:space="preserve">Set the current active locale, which
is used to get localized messages.
If the #AsComponent linking this #AsRelease was fetched
from a localized database, usually only
one locale is available.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
          <parameter name="locale" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_checksum"
              c:identifier="as_release_set_checksum"
              version="0.8.2">
        <doc xml:space="preserve">Set the release checksum.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cs_kind" transfer-ownership="none">
            <type name="ChecksumKind" c:type="AsChecksumKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_description" c:identifier="as_release_set_description">
        <doc xml:space="preserve">Sets the description release markup.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <doc xml:space="preserve">a #AsRelease instance.</doc>
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:space="preserve">the description markup.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="locale" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_timestamp" c:identifier="as_release_set_timestamp">
        <doc xml:space="preserve">Sets the release timestamp.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <doc xml:space="preserve">a #AsRelease instance.</doc>
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
          <parameter name="timestamp" transfer-ownership="none">
            <doc xml:space="preserve">the timestamp value.</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_version" c:identifier="as_release_set_version">
        <doc xml:space="preserve">Sets the release version.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="release" transfer-ownership="none">
            <doc xml:space="preserve">a #AsRelease instance.</doc>
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
          <parameter name="version" transfer-ownership="none">
            <doc xml:space="preserve">the version string.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ReleaseClass"
            c:type="AsReleaseClass"
            glib:is-gtype-struct-for="Release">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="Screenshot"
           c:symbol-prefix="screenshot"
           c:type="AsScreenshot"
           parent="GObject.Object"
           glib:type-name="AsScreenshot"
           glib:get-type="as_screenshot_get_type"
           glib:type-struct="ScreenshotClass">
      <constructor name="new" c:identifier="as_screenshot_new">
        <doc xml:space="preserve">Creates a new #AsScreenshot.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #AsScreenshot</doc>
          <type name="Screenshot" c:type="AsScreenshot*"/>
        </return-value>
      </constructor>
      <function name="kind_from_string"
                c:identifier="as_screenshot_kind_from_string">
        <doc xml:space="preserve">Converts the text representation to an enumerated value.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a %AsScreenshotKind, or
                          %AS_SCREENSHOT_KIND_UNKNOWN if not known.</doc>
          <type name="ScreenshotKind" c:type="AsScreenshotKind"/>
        </return-value>
        <parameters>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the string.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="kind_to_string"
                c:identifier="as_screenshot_kind_to_string">
        <doc xml:space="preserve">Converts the enumerated value to an text representation.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">string version of @kind</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the #AsScreenshotKind.</doc>
            <type name="ScreenshotKind" c:type="AsScreenshotKind"/>
          </parameter>
        </parameters>
      </function>
      <method name="add_image" c:identifier="as_screenshot_add_image">
        <doc xml:space="preserve">Adds an image to the screenshot.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screenshot" transfer-ownership="none">
            <doc xml:space="preserve">a #AsScreenshot instance.</doc>
            <type name="Screenshot" c:type="AsScreenshot*"/>
          </instance-parameter>
          <parameter name="image" transfer-ownership="none">
            <doc xml:space="preserve">a #AsImage instance.</doc>
            <type name="Image" c:type="AsImage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_active_locale"
              c:identifier="as_screenshot_get_active_locale">
        <doc xml:space="preserve">Get the current active locale, which
is used to get localized messages.</doc>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="screenshot" transfer-ownership="none">
            <type name="Screenshot" c:type="AsScreenshot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_caption" c:identifier="as_screenshot_get_caption">
        <doc xml:space="preserve">Gets the image caption</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the caption</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="screenshot" transfer-ownership="none">
            <doc xml:space="preserve">a #AsScreenshot instance.</doc>
            <type name="Screenshot" c:type="AsScreenshot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_images" c:identifier="as_screenshot_get_images">
        <doc xml:space="preserve">Gets the image sizes included in the screenshot.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an array</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Image"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="screenshot" transfer-ownership="none">
            <doc xml:space="preserve">a #AsScreenshot instance.</doc>
            <type name="Screenshot" c:type="AsScreenshot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_kind" c:identifier="as_screenshot_get_kind">
        <doc xml:space="preserve">Gets the screenshot kind.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #AsScreenshotKind</doc>
          <type name="ScreenshotKind" c:type="AsScreenshotKind"/>
        </return-value>
        <parameters>
          <instance-parameter name="screenshot" transfer-ownership="none">
            <doc xml:space="preserve">a #AsScreenshot instance.</doc>
            <type name="Screenshot" c:type="AsScreenshot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_valid" c:identifier="as_screenshot_is_valid">
        <doc xml:space="preserve">Performs a quick validation on this screenshot</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the screenshot is a complete #AsScreenshot</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="screenshot" transfer-ownership="none">
            <doc xml:space="preserve">a #AsScreenshot instance.</doc>
            <type name="Screenshot" c:type="AsScreenshot*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_active_locale"
              c:identifier="as_screenshot_set_active_locale">
        <doc xml:space="preserve">Set the current active locale, which
is used to get localized messages.
If the #AsComponent linking this #AsScreenshot was fetched
from a localized database, usually only
one locale is available.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screenshot" transfer-ownership="none">
            <type name="Screenshot" c:type="AsScreenshot*"/>
          </instance-parameter>
          <parameter name="locale" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_caption" c:identifier="as_screenshot_set_caption">
        <doc xml:space="preserve">Sets a caption on the screenshot</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screenshot" transfer-ownership="none">
            <doc xml:space="preserve">a #AsScreenshot instance.</doc>
            <type name="Screenshot" c:type="AsScreenshot*"/>
          </instance-parameter>
          <parameter name="caption" transfer-ownership="none">
            <doc xml:space="preserve">the caption text.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="locale" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_kind" c:identifier="as_screenshot_set_kind">
        <doc xml:space="preserve">Sets the screenshot kind.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="screenshot" transfer-ownership="none">
            <doc xml:space="preserve">a #AsScreenshot instance.</doc>
            <type name="Screenshot" c:type="AsScreenshot*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the #AsScreenshotKind.</doc>
            <type name="ScreenshotKind" c:type="AsScreenshotKind"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ScreenshotClass"
            c:type="AsScreenshotClass"
            glib:is-gtype-struct-for="Screenshot">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <enumeration name="ScreenshotKind" c:type="AsScreenshotKind">
      <doc xml:space="preserve">The screenshot type.</doc>
      <member name="unknown"
              value="0"
              c:identifier="AS_SCREENSHOT_KIND_UNKNOWN">
        <doc xml:space="preserve">Type invalid or not known</doc>
      </member>
      <member name="normal" value="1" c:identifier="AS_SCREENSHOT_KIND_NORMAL">
        <doc xml:space="preserve">Optional screenshot</doc>
      </member>
      <member name="default"
              value="2"
              c:identifier="AS_SCREENSHOT_KIND_DEFAULT">
        <doc xml:space="preserve">Screenshot to show by default</doc>
      </member>
    </enumeration>
    <class name="SearchQuery"
           c:symbol-prefix="search_query"
           c:type="AsSearchQuery"
           parent="GObject.Object"
           glib:type-name="AsSearchQuery"
           glib:get-type="as_search_query_get_type"
           glib:type-struct="SearchQueryClass">
      <constructor name="new" c:identifier="as_search_query_new">
        <doc xml:space="preserve">Creates a new #AsSearchQuery.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #AsSearchQuery</doc>
          <type name="SearchQuery" c:type="AsSearchQuery*"/>
        </return-value>
        <parameters>
          <parameter name="term" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="construct" c:identifier="as_search_query_construct">
        <doc xml:space="preserve">Construct a new #AsSearchQuery.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #AsSearchQuery</doc>
          <type name="SearchQuery" c:type="AsSearchQuery*"/>
        </return-value>
        <parameters>
          <parameter name="object_type" transfer-ownership="none">
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="term" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_categories"
              c:identifier="as_search_query_get_categories">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">String array of categories</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchQuery" c:type="AsSearchQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_search_all_categories"
              c:identifier="as_search_query_get_search_all_categories">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if we search in all categories</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchQuery" c:type="AsSearchQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_search_term"
              c:identifier="as_search_query_get_search_term">
        <doc xml:space="preserve">@self an instance of #AsSearchQuery
Returns the search-term we currently use</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchQuery" c:type="AsSearchQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="sanitize_search_term"
              c:identifier="as_search_query_sanitize_search_term">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchQuery" c:type="AsSearchQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_categories"
              c:identifier="as_search_query_set_categories">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchQuery" c:type="AsSearchQuery*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_categories_from_string"
              c:identifier="as_search_query_set_categories_from_string">
        <doc xml:space="preserve">Set the categories list from a string

@categories_str Semicolon-separated list of category-names</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchQuery" c:type="AsSearchQuery*"/>
          </instance-parameter>
          <parameter name="categories_str" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_search_all_categories"
              c:identifier="as_search_query_set_search_all_categories">
        <doc xml:space="preserve">Shortcut to set that we should search in all categories</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve">A valid #AsSearchQuery</doc>
            <type name="SearchQuery" c:type="AsSearchQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_search_term"
              c:identifier="as_search_query_set_search_term">
        <doc xml:space="preserve">@self an instance of #AsSearchQuery
@value the string to search for
Set the search-term we use for the search. Multiple terms may be
comma-separated.
You can use Xapian prefixes, such as "XP" to refine your search.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="SearchQuery" c:type="AsSearchQuery*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="categories" writable="1" transfer-ownership="none">
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="search-term" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="SearchQueryPrivate" c:type="AsSearchQueryPrivate*"/>
      </field>
    </class>
    <record name="SearchQueryClass"
            c:type="AsSearchQueryClass"
            glib:is-gtype-struct-for="SearchQuery">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="SearchQueryPrivate"
            c:type="AsSearchQueryPrivate"
            disguised="1">
    </record>
    <enumeration name="UrlKind" c:type="AsUrlKind">
      <doc xml:space="preserve">The URL type.</doc>
      <member name="unknown" value="0" c:identifier="AS_URL_KIND_UNKNOWN">
        <doc xml:space="preserve">Type invalid or not known</doc>
      </member>
      <member name="homepage" value="1" c:identifier="AS_URL_KIND_HOMEPAGE">
        <doc xml:space="preserve">Project homepage</doc>
      </member>
      <member name="bugtracker"
              value="2"
              c:identifier="AS_URL_KIND_BUGTRACKER">
        <doc xml:space="preserve">Bugtracker</doc>
      </member>
      <member name="faq" value="3" c:identifier="AS_URL_KIND_FAQ">
        <doc xml:space="preserve">FAQ page</doc>
      </member>
      <member name="help" value="4" c:identifier="AS_URL_KIND_HELP">
        <doc xml:space="preserve">Help manual</doc>
      </member>
      <member name="donation" value="5" c:identifier="AS_URL_KIND_DONATION">
        <doc xml:space="preserve">Page with information about how to donate to the project</doc>
      </member>
    </enumeration>
    <class name="Validator"
           c:symbol-prefix="validator"
           c:type="AsValidator"
           parent="GObject.Object"
           glib:type-name="AsValidator"
           glib:get-type="as_validator_get_type"
           glib:type-struct="ValidatorClass">
      <constructor name="new" c:identifier="as_validator_new">
        <doc xml:space="preserve">Creates a new #AsValidator.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #AsValidator</doc>
          <type name="Validator" c:type="AsValidator*"/>
        </return-value>
      </constructor>
      <method name="clear_issues" c:identifier="as_validator_clear_issues">
        <doc xml:space="preserve">Clears the list of issues</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="validator" transfer-ownership="none">
            <type name="Validator" c:type="AsValidator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_issues" c:identifier="as_validator_get_issues">
        <doc xml:space="preserve">Get a list of found metadata format issues.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">a list of #AsValidatorIssue instances, free with g_list_free()</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="ValidatorIssue"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="validator" transfer-ownership="none">
            <type name="Validator" c:type="AsValidator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="validate_data" c:identifier="as_validator_validate_data">
        <doc xml:space="preserve">Validate AppStream XML data</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="validator" transfer-ownership="none">
            <type name="Validator" c:type="AsValidator*"/>
          </instance-parameter>
          <parameter name="metadata" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="validate_file" c:identifier="as_validator_validate_file">
        <doc xml:space="preserve">Validate an AppStream XML file</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="validator" transfer-ownership="none">
            <type name="Validator" c:type="AsValidator*"/>
          </instance-parameter>
          <parameter name="metadata_file" transfer-ownership="none">
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ValidatorClass"
            c:type="AsValidatorClass"
            glib:is-gtype-struct-for="Validator">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="ValidatorIssue"
           c:symbol-prefix="validator_issue"
           c:type="AsValidatorIssue"
           parent="GObject.Object"
           glib:type-name="AsValidatorIssue"
           glib:get-type="as_validator_issue_get_type"
           glib:type-struct="ValidatorIssueClass">
      <constructor name="new" c:identifier="as_validator_issue_new">
        <doc xml:space="preserve">Creates a new #AsValidatorIssue.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #AsValidatorIssue</doc>
          <type name="ValidatorIssue" c:type="AsValidatorIssue*"/>
        </return-value>
      </constructor>
      <method name="get_importance"
              c:identifier="as_validator_issue_get_importance">
        <doc xml:space="preserve">Gets the importance of this issue.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #AsIssueImportance</doc>
          <type name="IssueImportance" c:type="AsIssueImportance"/>
        </return-value>
        <parameters>
          <instance-parameter name="issue" transfer-ownership="none">
            <doc xml:space="preserve">a #AsValidatorIssue instance.</doc>
            <type name="ValidatorIssue" c:type="AsValidatorIssue*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_kind" c:identifier="as_validator_issue_get_kind">
        <doc xml:space="preserve">Gets the issue kind enum, if available.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #AsIssueKind</doc>
          <type name="IssueKind" c:type="AsIssueKind"/>
        </return-value>
        <parameters>
          <instance-parameter name="issue" transfer-ownership="none">
            <doc xml:space="preserve">a #AsValidatorIssue instance.</doc>
            <type name="ValidatorIssue" c:type="AsValidatorIssue*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_message" c:identifier="as_validator_issue_get_message">
        <doc xml:space="preserve">Gets the message for the issue.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the message</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="issue" transfer-ownership="none">
            <doc xml:space="preserve">a #AsValidatorIssue instance.</doc>
            <type name="ValidatorIssue" c:type="AsValidatorIssue*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_importance"
              c:identifier="as_validator_issue_set_importance">
        <doc xml:space="preserve">Sets the importance for this issue.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="issue" transfer-ownership="none">
            <doc xml:space="preserve">a #AsValidatorIssue instance.</doc>
            <type name="ValidatorIssue" c:type="AsValidatorIssue*"/>
          </instance-parameter>
          <parameter name="importance" transfer-ownership="none">
            <doc xml:space="preserve">the #AsIssueImportance.</doc>
            <type name="IssueImportance" c:type="AsIssueImportance"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_kind" c:identifier="as_validator_issue_set_kind">
        <doc xml:space="preserve">Sets the kind enum for this issue, if known.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="issue" transfer-ownership="none">
            <doc xml:space="preserve">a #AsValidatorIssue instance.</doc>
            <type name="ValidatorIssue" c:type="AsValidatorIssue*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the #AsIssueKind.</doc>
            <type name="IssueKind" c:type="AsIssueKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_message" c:identifier="as_validator_issue_set_message">
        <doc xml:space="preserve">Sets a message on the issue.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="issue" transfer-ownership="none">
            <doc xml:space="preserve">a #AsValidatorIssue instance.</doc>
            <type name="ValidatorIssue" c:type="AsValidatorIssue*"/>
          </instance-parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">the message text.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ValidatorIssueClass"
            c:type="AsValidatorIssueClass"
            glib:is-gtype-struct-for="ValidatorIssue">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_as_reserved1" introspectable="0">
        <callback name="_as_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved2" introspectable="0">
        <callback name="_as_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved3" introspectable="0">
        <callback name="_as_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved4" introspectable="0">
        <callback name="_as_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved5" introspectable="0">
        <callback name="_as_reserved5">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved6" introspectable="0">
        <callback name="_as_reserved6">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved7" introspectable="0">
        <callback name="_as_reserved7">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_as_reserved8" introspectable="0">
        <callback name="_as_reserved8">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <function name="bundle_kind_from_string"
              c:identifier="as_bundle_kind_from_string">
      <doc xml:space="preserve">Converts the text representation to an enumerated value.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #AsBundleKind or %AS_BUNDLE_KIND_UNKNOWN for unknown</doc>
        <type name="BundleKind" c:type="AsBundleKind"/>
      </return-value>
      <parameters>
        <parameter name="bundle_kind" transfer-ownership="none">
          <doc xml:space="preserve">the string.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="bundle_kind_to_string"
              c:identifier="as_bundle_kind_to_string"
              version="0.8.0">
      <doc xml:space="preserve">Converts the enumerated value to an text representation.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">string version of @bundle_kind</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="bundle_kind" transfer-ownership="none">
          <doc xml:space="preserve">the %AsBundleKind.</doc>
          <type name="BundleKind" c:type="AsBundleKind"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_kind_from_string"
              c:identifier="as_checksum_kind_from_string">
      <doc xml:space="preserve">Converts the text representation to an enumerated value.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #AsChecksumKind or %AS_CHECKSUM_KIND_NONE for unknown</doc>
        <type name="ChecksumKind" c:type="AsChecksumKind"/>
      </return-value>
      <parameters>
        <parameter name="kind_str" transfer-ownership="none">
          <doc xml:space="preserve">the string.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="checksum_kind_to_string"
              c:identifier="as_checksum_kind_to_string">
      <doc xml:space="preserve">Converts the enumerated value to an text representation.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">string version of @kind</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="kind" transfer-ownership="none">
          <doc xml:space="preserve">the %AsChecksumKind.</doc>
          <type name="ChecksumKind" c:type="AsChecksumKind"/>
        </parameter>
      </parameters>
    </function>
    <function name="component_kind_from_string"
              c:identifier="as_component_kind_from_string"
              moved-to="ComponentKind.from_string">
      <doc xml:space="preserve">Converts the text representation to an enumerated value.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #AsComponentKind or %AS_COMPONENT_KIND_UNKNOWN for unknown</doc>
        <type name="ComponentKind" c:type="AsComponentKind"/>
      </return-value>
      <parameters>
        <parameter name="kind_str" transfer-ownership="none">
          <doc xml:space="preserve">the string.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="component_kind_to_string"
              c:identifier="as_component_kind_to_string"
              moved-to="ComponentKind.to_string">
      <doc xml:space="preserve">Converts the enumerated value to an text representation.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">string version of @kind</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="kind" transfer-ownership="none">
          <doc xml:space="preserve">the %AsComponentKind.</doc>
          <type name="ComponentKind" c:type="AsComponentKind"/>
        </parameter>
      </parameters>
    </function>
    <function name="description_markup_convert_simple"
              c:identifier="as_description_markup_convert_simple">
      <doc xml:space="preserve">Converts an XML description markup into a simple printable form.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a newly allocated %NULL terminated string</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="markup" transfer-ownership="none">
          <doc xml:space="preserve">the text to copy.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_system_categories"
              c:identifier="as_get_system_categories">
      <doc xml:space="preserve">Get a GList of the default AppStream categories</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">#GList of #AsCategory objects</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="Category"/>
        </type>
      </return-value>
    </function>
    <function name="icon_kind_from_string"
              c:identifier="as_icon_kind_from_string">
      <doc xml:space="preserve">Converts the text representation to an enumerated value.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #AsIconKind or %AS_ICON_KIND_UNKNOWN for unknown</doc>
        <type name="IconKind" c:type="AsIconKind"/>
      </return-value>
      <parameters>
        <parameter name="kind_str" transfer-ownership="none">
          <doc xml:space="preserve">the string.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="icon_kind_to_string" c:identifier="as_icon_kind_to_string">
      <doc xml:space="preserve">Converts the enumerated value to an text representation.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">string version of @kind</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="kind" transfer-ownership="none">
          <doc xml:space="preserve">the %AsIconKind.</doc>
          <type name="IconKind" c:type="AsIconKind"/>
        </parameter>
      </parameters>
    </function>
    <function name="provides_item_create"
              c:identifier="as_provides_item_create">
      <doc xml:space="preserve">Creates a new provides-item string, which
consists of a type-part describing the items type, and a name-part,
containing the name of the item. Both are separated by a semicolon,
so an item of type KIND_LIBRARY and name libappstream.so.0 will become
"lib;libappstream.so.0;"
A provides-item might also contain a "data" part, describing additional
information about it. For example, for a KIND_DBUS provides type,
the item might look like: dbus;org.freedesktop.PackageKit;system
(specifying that the service name is on the system bus)

@kind a #AsProvidesKind describing the type of the item string
@value the name of the item as string
@data (allow-none) (default NULL): additional data associated with this item</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new provides-item string. Free with g_free</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="kind" transfer-ownership="none">
          <type name="ProvidesKind" c:type="AsProvidesKind"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="provides_item_get_kind"
              c:identifier="as_provides_item_get_kind">
      <doc xml:space="preserve">Returns the type (kind) of a provides-item string
as #AsProvidesKind

@item a valid provides-item string</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the kind of the given item</doc>
        <type name="ProvidesKind" c:type="AsProvidesKind"/>
      </return-value>
      <parameters>
        <parameter name="item" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="provides_item_get_value"
              c:identifier="as_provides_item_get_value">
      <doc xml:space="preserve">Returns the value (name) of a provides-item string

@item a valid provides-item string</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">the value of the given item, or NULL if the item was invalid</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="item" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="provides_kind_from_string"
              c:identifier="as_provides_kind_from_string">
      <doc xml:space="preserve">Converts the text representation to an enumerated value.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #AsProvidesKind or %AS_PROVIDES_KIND_UNKNOWN for unknown</doc>
        <type name="ProvidesKind" c:type="AsProvidesKind"/>
      </return-value>
      <parameters>
        <parameter name="kind_str" transfer-ownership="none">
          <doc xml:space="preserve">the string.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="provides_kind_to_string"
              c:identifier="as_provides_kind_to_string">
      <doc xml:space="preserve">Converts the enumerated value to an text representation.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">string version of @kind</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="kind" transfer-ownership="none">
          <doc xml:space="preserve">the #AsProvidesKind.</doc>
          <type name="ProvidesKind" c:type="AsProvidesKind"/>
        </parameter>
      </parameters>
    </function>
    <function name="ptr_array_to_strv" c:identifier="as_ptr_array_to_strv">
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">strv of the string array</doc>
        <array c:type="gchar**">
          <type name="utf8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="array" transfer-ownership="none">
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="str_empty" c:identifier="as_str_empty">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="url_kind_from_string"
              c:identifier="as_url_kind_from_string">
      <doc xml:space="preserve">Converts the text representation to an enumerated value.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #AsUrlKind or %AS_URL_KIND_UNKNOWN for unknown</doc>
        <type name="UrlKind" c:type="AsUrlKind"/>
      </return-value>
      <parameters>
        <parameter name="url_kind" transfer-ownership="none">
          <doc xml:space="preserve">the string.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="url_kind_to_string" c:identifier="as_url_kind_to_string">
      <doc xml:space="preserve">Converts the enumerated value to an text representation.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">string version of @url_kind</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="url_kind" transfer-ownership="none">
          <doc xml:space="preserve">the %AsUrlKind.</doc>
          <type name="UrlKind" c:type="AsUrlKind"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
