<?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="1.0"
             shared-library="libappstream.so.3"
             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="flatpak" value="2" c:identifier="AS_BUNDLE_KIND_FLATPAK">
        <doc xml:space="preserve">A Flatpak bundle</doc>
      </member>
    </enumeration>
    <bitfield name="CacheFlags" c:type="AsCacheFlags">
      <doc xml:space="preserve">Flags on how caching should be used.</doc>
      <member name="none" value="0" c:identifier="AS_CACHE_FLAG_NONE">
        <doc xml:space="preserve">Type invalid or not known</doc>
      </member>
      <member name="use_user" value="1" c:identifier="AS_CACHE_FLAG_USE_USER">
        <doc xml:space="preserve">Create an user-specific metadata cache.</doc>
      </member>
      <member name="use_system"
              value="2"
              c:identifier="AS_CACHE_FLAG_USE_SYSTEM">
        <doc xml:space="preserve">Use and - if possible - update the global metadata cache.</doc>
      </member>
    </bitfield>
    <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>
      <method name="add_subcategory"
              c:identifier="as_category_add_subcategory">
        <doc xml:space="preserve">Add a subcategory to this category.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
          <parameter name="subcat" transfer-ownership="none">
            <doc xml:space="preserve">A subcategory to add.</doc>
            <type name="Category" c:type="AsCategory*"/>
          </parameter>
        </parameters>
      </method>
      <method name="complete" c:identifier="as_category_complete">
        <doc xml:space="preserve">Update incomplete category data with information from
"/usr/share/desktop-directories".</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_directory" c:identifier="as_category_get_directory">
        <doc xml:space="preserve">Get associated XDG directory name for this category,
in case one exists in "/usr/share/desktop-directories/".</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_excluded" c:identifier="as_category_get_excluded">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A list of category names</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_icon" c:identifier="as_category_get_icon">
        <doc xml:space="preserve">Get the stock icon name for this category.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_included" c:identifier="as_category_get_included">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A list of category names</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <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="cat" transfer-ownership="none">
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="as_category_get_name">
        <doc xml:space="preserve">Get the name of this category.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subcategories"
              c:identifier="as_category_get_subcategories">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A list of subcategories.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Category"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_summary" c:identifier="as_category_get_summary">
        <doc xml:space="preserve">Get the summary (short description) of this category.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <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="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_subcategory"
              c:identifier="as_category_remove_subcategory">
        <doc xml:space="preserve">Drop a subcategory from this #AsCategory.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
          <parameter name="subcat" transfer-ownership="none">
            <doc xml:space="preserve">A subcategory to remove.</doc>
            <type name="Category" c:type="AsCategory*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_directory" c:identifier="as_category_set_directory">
        <doc xml:space="preserve">Set associated XDG directory name for this category.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <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">
        <doc xml:space="preserve">Set the stock icon name for this category.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <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="cat" 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">
        <doc xml:space="preserve">Set the name of this category.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <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_summary" c:identifier="as_category_set_summary">
        <doc xml:space="preserve">Get the summary (short description) of this category.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsCategory.</doc>
            <type name="Category" c:type="AsCategory*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">A new short summary of this category.</doc>
            <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>
    </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>
    </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>
    </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"
              version="0.7.0">
        <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_extension"
              c:identifier="as_component_add_extension"
              version="0.9.2">
        <doc xml:space="preserve">Add a reference to the extension enhancing 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="cpt_id" transfer-ownership="none">
            <doc xml:space="preserve">The id of a component extending 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 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="icon" transfer-ownership="none">
            <doc xml:space="preserve">the valid #AsIcon instance to add.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </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"
                     nullable="1"
                     allow-none="1">
            <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"
              c:identifier="as_component_add_provided"
              version="0.6.2">
        <doc xml:space="preserve">Add a set of provided items 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="prov" transfer-ownership="none">
            <doc xml:space="preserve">a #AsProvided instance.</doc>
            <type name="Provided" c:type="AsProvided*"/>
          </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_translation"
              c:identifier="as_component_add_translation"
              version="0.9.2">
        <doc xml:space="preserve">Assign an #AsTranslation object describing the translation system used
by 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="tr" transfer-ownership="none">
            <doc xml:space="preserve">an #AsTranslation instance.</doc>
            <type name="Translation" c:type="AsTranslation*"/>
          </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">
          <doc xml:space="preserve">the current active locale.</doc>
          <type name="utf8" c:type="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>
        </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" nullable="1">
          <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_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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <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">
          <doc xml:space="preserve">the description.</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>
        </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">
          <doc xml:space="preserve">the developer name.</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>
        </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.

See %as_component_get_extends() for the reverse.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A #GPtrArray or %NULL if not set.</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_extensions"
              c:identifier="as_component_get_extensions"
              version="0.9.2">
        <doc xml:space="preserve">Returns a string list of IDs of components which
are addons extending this component in functionality.

This is the reverse of %as_component_get_extends()</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A #GPtrArray or %NULL if not set.</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_by_size"
              c:identifier="as_component_get_icon_by_size">
        <doc xml:space="preserve">Gets an icon matching the size constraints.
The icons are not filtered by type, and the first icon
which matches the size is returned.
If you want more control over which icons you use for displaying,
use the as_component_get_icons() function to get a list of all icons.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">An icon matching the given width/height, or %NULL if not found.</doc>
          <type name="Icon" c:type="AsIcon*"/>
        </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">The icon width in pixels.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="height" transfer-ownership="none">
            <doc xml:space="preserve">the icon height in pixels.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_icons" c:identifier="as_component_get_icons">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A #GPtrArray of all icons for this component.</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Icon"/>
          </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_id" c:identifier="as_component_get_id">
        <doc xml:space="preserve">Get the unique identifier for this component.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the unique identifier.</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>
        </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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <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">
          <doc xml:space="preserve">the kind of #this.</doc>
          <type name="ComponentKind" c:type="AsComponentKind"/>
        </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_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"
                     nullable="1"
                     allow-none="1">
            <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">
          <doc xml:space="preserve">the name.</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>
        </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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <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">
          <doc xml:space="preserve">the project group.</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>
        </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">
          <doc xml:space="preserve">the license.</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>
        </parameters>
      </method>
      <method name="get_provided" c:identifier="as_component_get_provided">
        <doc xml:space="preserve">Get a list of #AsProvided objects associated with this component.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">A list of #AsProvided objects.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Provided"/>
          </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_provided_for_kind"
              c:identifier="as_component_get_provided_for_kind">
        <doc xml:space="preserve">Get an #AsProvided object for the given interface type,
containing information about the public interfaces (mimetypes, firmware, DBus services, ...)
this component provides.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#AsProvided containing the items this component provides, or %NULL.</doc>
          <type name="Provided" c:type="AsProvided*"/>
        </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">kind of the provided item, e.g. %AS_PROVIDED_KIND_MIMETYPE</doc>
            <type name="ProvidedKind" c:type="AsProvidedKind"/>
          </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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_search_tokens"
              c:identifier="as_component_get_search_tokens"
              version="0.9.7">
        <doc xml:space="preserve">Returns all search tokens for this component.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The string search tokens</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">a #AsComponent instance.</doc>
            <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">
          <doc xml:space="preserve">the source package name.</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>
        </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">
          <doc xml:space="preserve">the summary.</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>
        </parameters>
      </method>
      <method name="get_translations"
              c:identifier="as_component_get_translations"
              version="0.9.2">
        <doc xml:space="preserve">Get a #GPtrArray of #AsTranslation objects describing the
translation systems and translation-ids (e.g. Gettext domains) used
by this software component.

Only set for metainfo files.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">An array of #AsTranslation objects.</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Translation"/>
          </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_url"
              c:identifier="as_component_get_url"
              version="0.6.2">
        <doc xml:space="preserve">Gets a URL.</doc>
        <return-value transfer-ownership="none" nullable="1">
          <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="has_bundle" c:identifier="as_component_has_bundle">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if this component has a bundle-id associated.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </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">
          <doc xml:space="preserve">%TRUE if the component is in the specified category.</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="category" transfer-ownership="none">
            <doc xml:space="preserve">the specified category to check</doc>
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="search_matches"
              c:identifier="as_component_search_matches"
              version="0.9.7">
        <doc xml:space="preserve">Searches component data for a specific keyword.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a match scrore, where 0 is no match and 100 is the best match.</doc>
          <type name="guint" c:type="guint"/>
        </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="search_term" transfer-ownership="none">
            <doc xml:space="preserve">the search term.</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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="locale"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <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="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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the categories name</doc>
            <array c:type="gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the array of desktop ids.</doc>
            <array c:type="gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </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"
                     nullable="1"
                     allow-none="1">
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the developer or developer team name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="locale"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <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="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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the unique identifier.</doc>
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <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"
                     nullable="1"
                     allow-none="1">
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the #AsComponentKind.</doc>
            <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"
                     nullable="1"
                     allow-none="1">
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="origin" transfer-ownership="none">
            <doc xml:space="preserve">the origin.</doc>
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the project group.</doc>
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the project license.</doc>
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
          <parameter name="spkgname" transfer-ownership="none">
            <doc xml:space="preserve">the source package name.</doc>
            <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"
                     nullable="1"
                     allow-none="1">
            <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">
            <doc xml:space="preserve">a #AsComponent instance.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="categories" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">string array of categories</doc>
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="description" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">the description</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="developer-name" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">the developer name</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="icons" transfer-ownership="none">
        <doc xml:space="preserve">hash map of icon urls and sizes</doc>
        <type name="GLib.List" c:type="gpointer">
          <type name="Icon"/>
        </type>
      </property>
      <property name="id" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">the unique identifier</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="keywords" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">string array of keywords</doc>
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="kind" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">the #AsComponentKind of this component</doc>
        <type name="ComponentKind"/>
      </property>
      <property name="name" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">the name</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="pkgnames" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">string array of packages name</doc>
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="project-group" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">the project group</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="project-license" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">the project license</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="screenshots" transfer-ownership="none">
        <doc xml:space="preserve">An array of #AsScreenshot instances</doc>
        <array name="GLib.PtrArray">
          <type name="Screenshot"/>
        </array>
      </property>
      <property name="summary" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">the summary</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="urls" transfer-ownership="none">
        <doc xml:space="preserve">the urls associated with this component</doc>
        <type name="GLib.HashTable">
          <type name="UrlKind"/>
          <type name="utf8"/>
        </type>
      </property>
      <field name="parent_instance">
        <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 type of an #AsComponent.</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="3"
              c:identifier="AS_COMPONENT_KIND_FONT"
              glib:nick="font">
        <doc xml:space="preserve">A font</doc>
      </member>
      <member name="codec"
              value="4"
              c:identifier="AS_COMPONENT_KIND_CODEC"
              glib:nick="codec">
        <doc xml:space="preserve">A multimedia codec</doc>
      </member>
      <member name="inputmethod"
              value="5"
              c:identifier="AS_COMPONENT_KIND_INPUTMETHOD"
              glib:nick="inputmethod">
        <doc xml:space="preserve">An input-method provider</doc>
      </member>
      <member name="addon"
              value="6"
              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="7"
              c:identifier="AS_COMPONENT_KIND_FIRMWARE"
              glib:nick="firmware">
        <doc xml:space="preserve">Firmware</doc>
      </member>
      <member name="last"
              value="8"
              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>
      <function name="error_quark" c:identifier="as_data_pool_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_data_pool_add_component"
              throws="1">
        <doc xml:space="preserve">Register a new component in the AppStream metadata pool.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the new component was successfully added to the pool.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDataPool</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="cpt" transfer-ownership="none">
            <doc xml:space="preserve">The #AsComponent to add to the pool.</doc>
            <type name="Component" c:type="AsComponent*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear" c:identifier="as_data_pool_clear">
        <doc xml:space="preserve">Remove all metadat from the pool.</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">An #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_cache_age" c:identifier="as_data_pool_get_cache_age">
        <doc xml:space="preserve">Get the age of our internal cache.</doc>
        <return-value transfer-ownership="none">
          <type name="glong" c:type="time_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_cache_flags"
              c:identifier="as_data_pool_get_cache_flags">
        <doc xml:space="preserve">Get the #AsCacheFlags for this data pool.</doc>
        <return-value transfer-ownership="none">
          <type name="CacheFlags" c:type="AsCacheFlags"/>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_component_by_id"
              c:identifier="as_data_pool_get_component_by_id">
        <doc xml:space="preserve">Get a specific component by its ID.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An #AsComponent</doc>
          <type name="Component" c:type="AsComponent*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve">The AppStream-ID to look for.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <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="full">
          <doc xml:space="preserve">an array of #AsComponent instances.</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Component"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_components_by_categories"
              c:identifier="as_data_pool_get_components_by_categories">
        <doc xml:space="preserve">Return a list of components which are in one of the categories.</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="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDatabase.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="categories" transfer-ownership="none">
            <doc xml:space="preserve">A semicolon-separated list of XDG categories to include.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_components_by_kind"
              c:identifier="as_data_pool_get_components_by_kind"
              throws="1">
        <doc xml:space="preserve">Return a list of all components in the pool which are of a certain kind.</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="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDatabase.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">An #AsComponentKind.</doc>
            <type name="ComponentKind" c:type="AsComponentKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_components_by_provided_item"
              c:identifier="as_data_pool_get_components_by_provided_item"
              throws="1">
        <doc xml:space="preserve">Find components in the AppStream data pool whcih provide a certain item.</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="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">An #AsProvidesKind</doc>
            <type name="ProvidedKind" c:type="AsProvidedKind"/>
          </parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">The value of the provided item.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </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">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_metadata_locations"
              c:identifier="as_data_pool_get_metadata_locations">
        <doc xml:space="preserve">Return a list of all locations which are searched for metadata.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A string-list of watched (absolute) filepaths</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load" c:identifier="as_data_pool_load" throws="1">
        <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 update completes with %FALSE, it might still have added components to the pool.

The function will load from all possible data sources, preferring caches if they
are up to date.</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">
            <doc xml:space="preserve">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_cache_file"
              c:identifier="as_data_pool_load_cache_file"
              throws="1">
        <doc xml:space="preserve">Load AppStream metadata from a cache file.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="fname" transfer-ownership="none">
            <doc xml:space="preserve">Filename of the cache file to load into the pool.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_metadata" c:identifier="as_data_pool_load_metadata">
        <doc xml:space="preserve">Load fresh metadata from AppStream directories.</doc>
        <return-value transfer-ownership="none">
          <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>
      <method name="refresh_cache"
              c:identifier="as_data_pool_refresh_cache"
              throws="1">
        <doc xml:space="preserve">Update the AppStream cache. There is normally no need to call this function manually, because cache updates are handled
transparently in the background.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the cache was updated, %FALSE on error or if the cache update was not necessary and has been skipped.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="force" transfer-ownership="none">
            <doc xml:space="preserve">Enforce refresh, even if source data has not changed.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_cache_file"
              c:identifier="as_data_pool_save_cache_file"
              throws="1">
        <doc xml:space="preserve">Serialize AppStream metadata to a cache file.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="fname" transfer-ownership="none">
            <doc xml:space="preserve">Filename of the cache file the pool contents should be dumped to.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="search" c:identifier="as_data_pool_search" version="0.9.7">
        <doc xml:space="preserve">Search for a list of components matching the search terms.
The list will be unordered.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an array of the found #AsComponent objects.</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Component"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="dpool" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDataPool</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="term" transfer-ownership="none">
            <doc xml:space="preserve">A search term/string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cache_flags"
              c:identifier="as_data_pool_set_cache_flags">
        <doc xml:space="preserve">Set the #AsCacheFlags for this data pool.</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">An instance of #AsDataPool.</doc>
            <type name="DataPool" c:type="AsDataPool*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">The new #AsCacheFlags.</doc>
            <type name="CacheFlags" c:type="AsCacheFlags"/>
          </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">An instance of #AsDataPool.</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="set_metadata_locations"
              c:identifier="as_data_pool_set_metadata_locations">
        <doc xml:space="preserve">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">
            <doc xml:space="preserve">An instance of #AsDataPool.</doc>
            <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="update" c:identifier="as_data_pool_update" throws="1">
        <return-value transfer-ownership="none">
          <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_instance">
        <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>
    </record>
    <enumeration name="DataPoolError" c:type="AsDataPoolError">
      <doc xml:space="preserve">A metadata pool error.</doc>
      <member name="failed" value="0" c:identifier="AS_DATA_POOL_ERROR_FAILED">
        <doc xml:space="preserve">Generic failure</doc>
      </member>
      <member name="target_not_writable"
              value="1"
              c:identifier="AS_DATA_POOL_ERROR_TARGET_NOT_WRITABLE">
        <doc xml:space="preserve">We do not have write-access to the cache target location.</doc>
      </member>
      <member name="incomplete"
              value="2"
              c:identifier="AS_DATA_POOL_ERROR_INCOMPLETE">
        <doc xml:space="preserve">The pool was loaded, but we had to ignore some metadata.</doc>
      </member>
      <member name="collision"
              value="3"
              c:identifier="AS_DATA_POOL_ERROR_COLLISION">
        <doc xml:space="preserve">An AppStream-ID collision occured (a component with that ID already existed in the pool)</doc>
      </member>
      <member name="term_invalid"
              value="4"
              c:identifier="AS_DATA_POOL_ERROR_TERM_INVALID">
        <doc xml:space="preserve">A search or selection term was invalid.</doc>
      </member>
    </enumeration>
    <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 #AsDatabase</doc>
          <type name="Database" c:type="AsDatabase*"/>
        </return-value>
      </constructor>
      <function name="error_quark" c:identifier="as_database_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="find_components"
              c:identifier="as_database_find_components"
              throws="1">
        <doc xml:space="preserve">Find components in the AppStream database, which match a given term.
You can limit the search to a specific set of categories by setting the categories string to
a semicolon-separated list of lower-cased category names.</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="db" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDatabase.</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
          <parameter name="term"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a search-term to look for.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cats_str"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A semicolon-delimited list of lower-cased category names, e.g. "science;development".</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_all_components"
              c:identifier="as_database_get_all_components"
              throws="1">
        <doc xml:space="preserve">Dump a list of all software 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="db" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDatabase.</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"
              throws="1">
        <doc xml:space="preserve">Get a component by its AppStream-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="db" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDatabase.</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
          <parameter name="cid" transfer-ownership="none">
            <doc xml:space="preserve">the ID of the component, e.g. "org.kde.gwenview.desktop"</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"
              throws="1">
        <doc xml:space="preserve">Return a list of all components in the database which match a certain 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="db" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDatabase.</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">an #AsComponentKind.</doc>
            <type name="ComponentKind" c:type="AsComponentKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_components_by_provided_item"
              c:identifier="as_database_get_components_by_provided_item"
              throws="1">
        <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="db" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDatabase.</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">an #AsProvidesKind</doc>
            <type name="ProvidedKind" c:type="AsProvidedKind"/>
          </parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the name of the provided item.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_location" c:identifier="as_database_get_location">
        <doc xml:space="preserve">Get the current path of the AppStream database we use.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="db" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDatabase.</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open" c:identifier="as_database_open" throws="1">
        <doc xml:space="preserve">Open the current AppStream metadata cache for reading.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="db" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDatabase.</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_location" c:identifier="as_database_set_location">
        <doc xml:space="preserve">Set the location of the AppStream database we use.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="db" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsDatabase.</doc>
            <type name="Database" c:type="AsDatabase*"/>
          </instance-parameter>
          <parameter name="dir" transfer-ownership="none">
            <doc xml:space="preserve">The directory of the Xapian database.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </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="_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="DatabaseError" c:type="AsDatabaseError">
      <doc xml:space="preserve">A database query error.</doc>
      <member name="failed" value="0" c:identifier="AS_DATABASE_ERROR_FAILED">
        <doc xml:space="preserve">Generic failure</doc>
      </member>
      <member name="missing"
              value="1"
              c:identifier="AS_DATABASE_ERROR_MISSING">
        <doc xml:space="preserve">Database was not found</doc>
      </member>
      <member name="closed" value="2" c:identifier="AS_DATABASE_ERROR_CLOSED">
        <doc xml:space="preserve">Tried to perform action on a closed database.</doc>
      </member>
      <member name="term_invalid"
              value="3"
              c:identifier="AS_DATABASE_ERROR_TERM_INVALID">
        <doc xml:space="preserve">A query term was invalid.</doc>
      </member>
    </enumeration>
    <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 instance of #AsDistroDetails.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #AsDistroDetails.</doc>
          <type name="DistroDetails" c:type="AsDistroDetails*"/>
        </return-value>
      </constructor>
      <method name="get_bool" c:identifier="as_distro_details_get_bool">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="distro" 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_id" c:identifier="as_distro_details_get_id">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="distro" transfer-ownership="none">
            <type name="DistroDetails" c:type="AsDistroDetails*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="as_distro_details_get_name">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="distro" transfer-ownership="none">
            <type name="DistroDetails" c:type="AsDistroDetails*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_str" c:identifier="as_distro_details_get_str">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="distro" 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_version" c:identifier="as_distro_details_get_version">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="distro" transfer-ownership="none">
            <type name="DistroDetails" c:type="AsDistroDetails*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="id" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="name" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="version" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </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>
    </record>
    <class name="Icon"
           c:symbol-prefix="icon"
           c:type="AsIcon"
           parent="GObject.Object"
           glib:type-name="AsIcon"
           glib:get-type="as_icon_get_type"
           glib:type-struct="IconClass">
      <constructor name="new" c:identifier="as_icon_new">
        <doc xml:space="preserve">Creates a new #AsIcon.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #AsIcon</doc>
          <type name="Icon" c:type="AsIcon*"/>
        </return-value>
      </constructor>
      <function name="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="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>
      <method name="get_filename" c:identifier="as_icon_get_filename">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The absolute path for the icon on disk.
This is only set for icons of kind %AS_ICON_KIND_LOCAL or
%AS_ICON_KIND_CACHED.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_height" c:identifier="as_icon_get_height">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The icon height in pixels, or 0 if unknown.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_kind" c:identifier="as_icon_get_kind">
        <doc xml:space="preserve">Gets the icon kind.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #AsIconKind</doc>
          <type name="IconKind" c:type="AsIconKind"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="as_icon_get_name">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the stock name of the icon. In case the icon is not of kind
"stock", the basename of the icon filename or URL is returned.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_url" c:identifier="as_icon_get_url">
        <doc xml:space="preserve">Gets the icon URL, pointing at a remote location. HTTPS and FTP urls are allowed.
This property is only set for icons of type %AS_ICON_KIND_REMOTE</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the URL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_width" c:identifier="as_icon_get_width">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The icon width in pixels, or 0 if unknown.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_filename" c:identifier="as_icon_set_filename">
        <doc xml:space="preserve">Sets the icon absolute filename.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve">the new icon URL.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_height" c:identifier="as_icon_set_height">
        <doc xml:space="preserve">Sets the icon height.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </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_icon_set_kind">
        <doc xml:space="preserve">Sets the icon kind.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the #AsIconKind, e.g. %AS_ICON_KIND_CACHED.</doc>
            <type name="IconKind" c:type="AsIconKind"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name" c:identifier="as_icon_set_name">
        <doc xml:space="preserve">Sets the stock name or basename to use for the icon.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">the icon stock name, e.g. "gwenview"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_url" c:identifier="as_icon_set_url">
        <doc xml:space="preserve">Sets the icon URL.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </instance-parameter>
          <parameter name="url" transfer-ownership="none">
            <doc xml:space="preserve">the new icon URL.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_width" c:identifier="as_icon_set_width">
        <doc xml:space="preserve">Sets the icon width.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="icon" transfer-ownership="none">
            <doc xml:space="preserve">a #AsIcon instance.</doc>
            <type name="Icon" c:type="AsIcon*"/>
          </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_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="IconClass"
            c:type="AsIconClass"
            glib:is-gtype-struct-for="Icon">
      <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="IconKind" c:type="AsIconKind">
      <doc xml:space="preserve">The icon type.</doc>
      <member name="unknown" value="0" c:identifier="AS_ICON_KIND_UNKNOWN">
        <doc xml:space="preserve">Unknown icon kind</doc>
      </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>
    </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_locale"
              c:identifier="as_image_get_locale"
              version="0.9.5">
        <doc xml:space="preserve">Get locale for this image.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Locale string</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_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_locale"
              c:identifier="as_image_set_locale"
              version="0.9.5">
        <doc xml:space="preserve">Sets the locale for this 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="locale" transfer-ownership="none">
            <doc xml:space="preserve">the locale string.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </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_instance">
        <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>
    </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>
    </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_missing"
              value="9"
              c:identifier="AS_ISSUE_KIND_VALUE_MISSING">
        <doc xml:space="preserve">A value is missing</doc>
      </member>
      <member name="value_wrong"
              value="10"
              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="11"
              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>
      <member name="file_missing"
              value="12"
              c:identifier="AS_ISSUE_KIND_FILE_MISSING">
        <doc xml:space="preserve">A required file or other metadata was missing</doc>
      </member>
      <member name="wrong_name"
              value="13"
              c:identifier="AS_ISSUE_KIND_WRONG_NAME">
        <doc xml:space="preserve">The naming of an entity is wrong</doc>
      </member>
      <member name="read_error"
              value="14"
              c:identifier="AS_ISSUE_KIND_READ_ERROR">
        <doc xml:space="preserve">Reading of data failed</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 using 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">
            <doc xml:space="preserve">The menu-file to parse.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <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="mp" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsMenuParser.</doc>
            <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="mp" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsMenuParser.</doc>
            <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="mp" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsMenuParser.</doc>
            <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>
    </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>
    </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="components_to_distro_yaml"
              c:identifier="as_metadata_components_to_distro_yaml">
        <doc xml:space="preserve">Serialize all #AsComponent instances into AppStream DEP-11
distro-YAML data.
%NULL is returned if there is nothing to serialize.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A string containing the YAML markup. 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_architecture"
              c:identifier="as_metadata_get_architecture">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The architecture 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="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="get_parser_mode"
              c:identifier="as_metadata_get_parser_mode">
        <doc xml:space="preserve">Gets the current parser mode</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an #AsParserMode</doc>
          <type name="ParserMode" c:type="AsParserMode"/>
        </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_update_existing"
              c:identifier="as_metadata_get_update_existing">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether existing components should be updates with the parsed data,
         instead of creating new ones.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </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="get_write_header"
              c:identifier="as_metadata_get_write_header">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether we will write a header/root node in distro metadata.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </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_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="parse_xml" c:identifier="as_metadata_parse_xml" throws="1">
        <doc xml:space="preserve">Parses AppStream XML 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 one or more software components.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_yaml"
              c:identifier="as_metadata_parse_yaml"
              throws="1">
        <doc xml:space="preserve">Parses AppStream YAML 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">YAML data describing one or more software components.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </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_distro_yaml"
              c:identifier="as_metadata_save_distro_yaml"
              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 YAML 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_architecture"
              c:identifier="as_metadata_set_architecture">
        <doc xml:space="preserve">Set the architecture the components in this metadata belong to.</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="arch" transfer-ownership="none">
            <doc xml:space="preserve">an architecture string.</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>
      <method name="set_parser_mode"
              c:identifier="as_metadata_set_parser_mode">
        <doc xml:space="preserve">Sets the current metadata parsing mode.</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="mode" transfer-ownership="none">
            <doc xml:space="preserve">the #AsParserMode.</doc>
            <type name="ParserMode" c:type="AsParserMode"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_update_existing"
              c:identifier="as_metadata_set_update_existing">
        <doc xml:space="preserve">If set to %TRUE, the parser will not create new components but
instead update existing components in the pool with new metadata.

NOTE: Right now, this feature is only implemented for metainfo XML parsing!</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="update" transfer-ownership="none">
            <doc xml:space="preserve">A boolean value.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_write_header"
              c:identifier="as_metadata_set_write_header">
        <doc xml:space="preserve">If set to %TRUE, tehe metadata writer will omit writing a DEP-11
header document when in YAML mode, and will not write a root components node
when writing XML data.
Please keep in mind that this will create an invalid DEP-11 YAML AppStream
distro metadata file, and an invalid XML file.
This parameter should only be changed e.g. by the appstream-generator tool.

NOTE: Right now, this feature is only implemented for YAML!</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="wheader" transfer-ownership="none">
            <doc xml:space="preserve">A boolean value.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <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>
    </record>
    <enumeration name="MetadataError" c:type="AsMetadataError">
      <doc xml:space="preserve">A metadata processing error.</doc>
      <member name="failed" value="0" c:identifier="AS_METADATA_ERROR_FAILED">
        <doc xml:space="preserve">Generic failure.</doc>
      </member>
      <member name="parse" value="1" c:identifier="AS_METADATA_ERROR_PARSE">
        <doc xml:space="preserve">Unable to parse the metadata file.</doc>
      </member>
      <member name="unexpected_format_kind"
              value="2"
              c:identifier="AS_METADATA_ERROR_UNEXPECTED_FORMAT_KIND">
        <doc xml:space="preserve">Expected upstream metadata but got distro metadata, or vice versa.</doc>
      </member>
      <member name="no_component"
              value="3"
              c:identifier="AS_METADATA_ERROR_NO_COMPONENT">
        <doc xml:space="preserve">We expected a component in the pool, but couldn't find one.</doc>
      </member>
    </enumeration>
    <enumeration name="ParserMode" c:type="AsParserMode">
      <doc xml:space="preserve">There are a few differences between Appstream's upstream metadata
and the distribution metadata.
The parser mode indicates which style we should process.
Usually you don't want to change this.</doc>
      <member name="upstream" value="0" c:identifier="AS_PARSER_MODE_UPSTREAM">
        <doc xml:space="preserve">Parse Appstream upstream metadata</doc>
      </member>
      <member name="distro" value="1" c:identifier="AS_PARSER_MODE_DISTRO">
        <doc xml:space="preserve">Parse Appstream distribution metadata</doc>
      </member>
    </enumeration>
    <class name="Provided"
           c:symbol-prefix="provided"
           c:type="AsProvided"
           parent="GObject.Object"
           glib:type-name="AsProvided"
           glib:get-type="as_provided_get_type"
           glib:type-struct="ProvidedClass">
      <constructor name="new" c:identifier="as_provided_new">
        <doc xml:space="preserve">Creates a new #AsProvided.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #AsProvided</doc>
          <type name="Provided" c:type="AsProvided*"/>
        </return-value>
      </constructor>
      <function name="kind_from_string"
                c:identifier="as_provided_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 #AsProvidedKind or %AS_PROVIDED_KIND_UNKNOWN for unknown</doc>
          <type name="ProvidedKind" c:type="AsProvidedKind"/>
        </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="kind_to_l10n_string"
                c:identifier="as_provided_kind_to_l10n_string">
        <doc xml:space="preserve">Converts the enumerated value to a localized text representation,
using the plural forms (e.g. "Libraries" instead of "Library").

This can be useful when displaying provided items in GUI dialogs.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Pluralized, l10n 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 #AsProvidedKind.</doc>
            <type name="ProvidedKind" c:type="AsProvidedKind"/>
          </parameter>
        </parameters>
      </function>
      <function name="kind_to_string"
                c:identifier="as_provided_kind_to_string">
        <doc xml:space="preserve">Converts the enumerated value to a 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 #AsProvidedKind.</doc>
            <type name="ProvidedKind" c:type="AsProvidedKind"/>
          </parameter>
        </parameters>
      </function>
      <method name="add_item" c:identifier="as_provided_add_item">
        <doc xml:space="preserve">Add a new provided item.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prov" transfer-ownership="none">
            <doc xml:space="preserve">a #AsProvided instance.</doc>
            <type name="Provided" c:type="AsProvided*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_items" c:identifier="as_provided_get_items">
        <doc xml:space="preserve">Get an array of provided data.</doc>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve">An utf-8 array of provided items, free with g_free()</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="prov" transfer-ownership="none">
            <doc xml:space="preserve">a #AsProvided instance.</doc>
            <type name="Provided" c:type="AsProvided*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_kind" c:identifier="as_provided_get_kind">
        <doc xml:space="preserve">The kind of items this #AsProvided object stores.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an enum of type #AsProvidedKind</doc>
          <type name="ProvidedKind" c:type="AsProvidedKind"/>
        </return-value>
        <parameters>
          <instance-parameter name="prov" transfer-ownership="none">
            <doc xml:space="preserve">a #AsProvided instance.</doc>
            <type name="Provided" c:type="AsProvided*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_item" c:identifier="as_provided_has_item">
        <doc xml:space="preserve">Check if the current #AsProvided contains an item
of the given name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if found.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="prov" transfer-ownership="none">
            <doc xml:space="preserve">a #AsProvided instance.</doc>
            <type name="Provided" c:type="AsProvided*"/>
          </instance-parameter>
          <parameter name="item" transfer-ownership="none">
            <doc xml:space="preserve">the name of a provided item, e.g. "audio/x-vorbis" (in case the provided kind is a mimetype)</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_kind" c:identifier="as_provided_set_kind">
        <doc xml:space="preserve">Set the kind of items this #AsProvided object stores.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prov" transfer-ownership="none">
            <doc xml:space="preserve">a #AsProvided instance.</doc>
            <type name="Provided" c:type="AsProvided*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the new #AsProvidedKind</doc>
            <type name="ProvidedKind" c:type="AsProvidedKind"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="ProvidedClass"
            c:type="AsProvidedClass"
            glib:is-gtype-struct-for="Provided">
      <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="ProvidedKind" c:type="AsProvidedKind">
      <doc xml:space="preserve">Type of the public interface components can provide.</doc>
      <member name="unknown" value="0" c:identifier="AS_PROVIDED_KIND_UNKNOWN">
        <doc xml:space="preserve">Unknown kind</doc>
      </member>
      <member name="library" value="1" c:identifier="AS_PROVIDED_KIND_LIBRARY">
        <doc xml:space="preserve">A shared library</doc>
      </member>
      <member name="binary" value="2" c:identifier="AS_PROVIDED_KIND_BINARY">
        <doc xml:space="preserve">A binary installed into a directory in PATH</doc>
      </member>
      <member name="mimetype"
              value="3"
              c:identifier="AS_PROVIDED_KIND_MIMETYPE">
        <doc xml:space="preserve">Provides a handler for a mimetype</doc>
      </member>
      <member name="font" value="4" c:identifier="AS_PROVIDED_KIND_FONT">
        <doc xml:space="preserve">A font</doc>
      </member>
      <member name="modalias"
              value="5"
              c:identifier="AS_PROVIDED_KIND_MODALIAS">
        <doc xml:space="preserve">A modalias</doc>
      </member>
      <member name="python_2"
              value="6"
              c:identifier="AS_PROVIDED_KIND_PYTHON_2">
        <doc xml:space="preserve">A Python2 module</doc>
      </member>
      <member name="python" value="7" c:identifier="AS_PROVIDED_KIND_PYTHON">
        <doc xml:space="preserve">A Python3 module</doc>
      </member>
      <member name="dbus_system"
              value="8"
              c:identifier="AS_PROVIDED_KIND_DBUS_SYSTEM">
        <doc xml:space="preserve">A DBus service name on the system bus.</doc>
      </member>
      <member name="dbus_user"
              value="9"
              c:identifier="AS_PROVIDED_KIND_DBUS_USER">
        <doc xml:space="preserve">A DBus service name on the user/session bus.</doc>
      </member>
      <member name="firmware_runtime"
              value="10"
              c:identifier="AS_PROVIDED_KIND_FIRMWARE_RUNTIME">
        <doc xml:space="preserve">Firmware flashed at runtime.</doc>
      </member>
      <member name="firmware_flashed"
              value="11"
              c:identifier="AS_PROVIDED_KIND_FIRMWARE_FLASHED">
        <doc xml:space="preserve">Firmware flashed permanently to the device.</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="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_size"
              c:identifier="as_release_get_size"
              version="0.8.6">
        <doc xml:space="preserve">Gets the release size.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The size of the given kind of this release.</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>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">a #AsSizeKind</doc>
            <type name="SizeKind" c:type="AsSizeKind"/>
          </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_urgency"
              c:identifier="as_release_get_urgency"
              version="0.6.5">
        <doc xml:space="preserve">Gets the urgency of the release
(showing how important it is to update to a more recent release)</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#AsUrgencyKind, or %AS_URGENCY_KIND_UNKNOWN for not set</doc>
          <type name="UrgencyKind" c:type="AsUrgencyKind"/>
        </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">
            <doc xml:space="preserve">An instance of #AsRelease.</doc>
            <type name="Release" c:type="AsRelease*"/>
          </instance-parameter>
          <parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">The checksum as string.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">The kind of this checksum, e.g. %AS_CHECKSUM_KIND_SHA256</doc>
            <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_size"
              c:identifier="as_release_set_size"
              version="0.8.6">
        <doc xml:space="preserve">Sets the release size for the given kind.</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="size" transfer-ownership="none">
            <doc xml:space="preserve">a size in bytes, or 0 for unknown</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">a #AsSizeKind</doc>
            <type name="SizeKind" c:type="AsSizeKind"/>
          </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_urgency"
              c:identifier="as_release_set_urgency"
              version="0.6.5">
        <doc xml:space="preserve">Sets the release urgency.</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="urgency" transfer-ownership="none">
            <doc xml:space="preserve">the urgency of this release/update (as #AsUrgencyKind)</doc>
            <type name="UrgencyKind" c:type="AsUrgencyKind"/>
          </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_instance">
        <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>
    </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_images_localized"
              c:identifier="as_screenshot_get_images_localized"
              version="0.9.5">
        <doc xml:space="preserve">Returns all images that are compatible with a specific locale.</doc>
        <return-value transfer-ownership="container">
          <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">an #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_instance">
        <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>
    </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="default"
              value="1"
              c:identifier="AS_SCREENSHOT_KIND_DEFAULT">
        <doc xml:space="preserve">The primary screenshot to show by default</doc>
      </member>
      <member name="extra" value="2" c:identifier="AS_SCREENSHOT_KIND_EXTRA">
        <doc xml:space="preserve">Optional screenshot</doc>
      </member>
    </enumeration>
    <enumeration name="SizeKind" version="0.8.6" c:type="AsSizeKind">
      <doc xml:space="preserve">The release size kind.</doc>
      <member name="unknown" value="0" c:identifier="AS_SIZE_KIND_UNKNOWN">
        <doc xml:space="preserve">Unknown size</doc>
      </member>
      <member name="download" value="1" c:identifier="AS_SIZE_KIND_DOWNLOAD">
        <doc xml:space="preserve">Size of download of component</doc>
      </member>
      <member name="installed" value="2" c:identifier="AS_SIZE_KIND_INSTALLED">
        <doc xml:space="preserve">Size of installed component</doc>
      </member>
    </enumeration>
    <class name="Translation"
           c:symbol-prefix="translation"
           c:type="AsTranslation"
           parent="GObject.Object"
           glib:type-name="AsTranslation"
           glib:get-type="as_translation_get_type"
           glib:type-struct="TranslationClass">
      <constructor name="new" c:identifier="as_translation_new">
        <doc xml:space="preserve">Creates a new #AsTranslation.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #AsTranslation</doc>
          <type name="Translation" c:type="AsTranslation*"/>
        </return-value>
      </constructor>
      <function name="kind_from_string"
                c:identifier="as_translation_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 #AsTranslationKind or %AS_TRANSLATION_KIND_UNKNOWN for unknown</doc>
          <type name="TranslationKind" c:type="AsTranslationKind"/>
        </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="kind_to_string"
                c:identifier="as_translation_kind_to_string">
        <doc xml:space="preserve">Converts the enumerated value to a 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 #AsTranslationKind.</doc>
            <type name="TranslationKind" c:type="AsTranslationKind"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_id" c:identifier="as_translation_get_id">
        <doc xml:space="preserve">The ID (e.g. Gettext translation domain) of this translation.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="tr" transfer-ownership="none">
            <doc xml:space="preserve">a #AsTranslation instance.</doc>
            <type name="Translation" c:type="AsTranslation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_kind" c:identifier="as_translation_get_kind">
        <doc xml:space="preserve">The translation system type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an enum of type #AsTranslationKind</doc>
          <type name="TranslationKind" c:type="AsTranslationKind"/>
        </return-value>
        <parameters>
          <instance-parameter name="tr" transfer-ownership="none">
            <doc xml:space="preserve">a #AsTranslation instance.</doc>
            <type name="Translation" c:type="AsTranslation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_id" c:identifier="as_translation_set_id">
        <doc xml:space="preserve">Set the ID (e.g. Gettext domain) of this translation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="tr" transfer-ownership="none">
            <doc xml:space="preserve">a #AsTranslation instance.</doc>
            <type name="Translation" c:type="AsTranslation*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve">The ID of this translation.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_kind" c:identifier="as_translation_set_kind">
        <doc xml:space="preserve">Set the translation system type.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="tr" transfer-ownership="none">
            <doc xml:space="preserve">a #AsTranslation instance.</doc>
            <type name="Translation" c:type="AsTranslation*"/>
          </instance-parameter>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve">the new #AsTranslationKind</doc>
            <type name="TranslationKind" c:type="AsTranslationKind"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="TranslationClass"
            c:type="AsTranslationClass"
            glib:is-gtype-struct-for="Translation">
      <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="TranslationKind" c:type="AsTranslationKind">
      <doc xml:space="preserve">The translation type.</doc>
      <member name="unknown"
              value="0"
              c:identifier="AS_TRANSLATION_KIND_UNKNOWN">
        <doc xml:space="preserve">Type invalid or not known</doc>
      </member>
      <member name="gettext"
              value="1"
              c:identifier="AS_TRANSLATION_KIND_GETTEXT">
        <doc xml:space="preserve">Gettext translation domain</doc>
      </member>
      <member name="qt" value="2" c:identifier="AS_TRANSLATION_KIND_QT">
        <doc xml:space="preserve">Qt translation domain</doc>
      </member>
    </enumeration>
    <enumeration name="UrgencyKind" c:type="AsUrgencyKind">
      <doc xml:space="preserve">The urgency of an #AsRelease</doc>
      <member name="unknown" value="0" c:identifier="AS_URGENCY_KIND_UNKNOWN">
        <doc xml:space="preserve">Urgency is unknown or not set</doc>
      </member>
      <member name="low" value="1" c:identifier="AS_URGENCY_KIND_LOW">
        <doc xml:space="preserve">Low urgency</doc>
      </member>
      <member name="medium" value="2" c:identifier="AS_URGENCY_KIND_MEDIUM">
        <doc xml:space="preserve">Medium urgency</doc>
      </member>
      <member name="high" value="3" c:identifier="AS_URGENCY_KIND_HIGH">
        <doc xml:space="preserve">High urgency</doc>
      </member>
      <member name="critical"
              value="4"
              c:identifier="AS_URGENCY_KIND_CRITICAL">
        <doc xml:space="preserve">Critical urgency</doc>
      </member>
    </enumeration>
    <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">
            <doc xml:space="preserve">An instance of #AsValidator.</doc>
            <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">
            <doc xml:space="preserve">An instance of #AsValidator.</doc>
            <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">
            <doc xml:space="preserve">An instance of #AsValidator.</doc>
            <type name="Validator" c:type="AsValidator*"/>
          </instance-parameter>
          <parameter name="metadata" transfer-ownership="none">
            <doc xml:space="preserve">XML metadata.</doc>
            <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">
            <doc xml:space="preserve">An instance of #AsValidator.</doc>
            <type name="Validator" c:type="AsValidator*"/>
          </instance-parameter>
          <parameter name="metadata_file" transfer-ownership="none">
            <doc xml:space="preserve">An AppStream XML file.</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </method>
      <method name="validate_tree" c:identifier="as_validator_validate_tree">
        <doc xml:space="preserve">Validate a full directory tree for issues in AppStream metadata.</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="validator" transfer-ownership="none">
            <doc xml:space="preserve">An instance of #AsValidator.</doc>
            <type name="Validator" c:type="AsValidator*"/>
          </instance-parameter>
          <parameter name="root_dir" transfer-ownership="none">
            <doc xml:space="preserve">The root directory of the filesystem tree that should be validated.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <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>
    </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_location"
              c:identifier="as_validator_issue_get_location">
        <doc xml:space="preserve">Gets a location hint for the issue.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the location hint</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="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_location"
              c:identifier="as_validator_issue_set_location">
        <doc xml:space="preserve">Sets a location hint 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="location" transfer-ownership="none">
            <doc xml:space="preserve">a location hint.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </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_instance">
        <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>
    </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_current_locale" c:identifier="as_get_current_locale">
      <doc xml:space="preserve">Returns a locale string as used in the AppStream specification.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">A locale string, free with g_free()</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="get_icon_repository_paths"
              c:identifier="as_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>
    <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="iso8601_to_datetime" c:identifier="as_iso8601_to_datetime">
      <doc xml:space="preserve">Helper function to work around a bug in g_time_val_from_iso8601.
Can be dropped when the bug gets resolved upstream:
https://bugzilla.gnome.org/show_bug.cgi?id=760983</doc>
      <return-value transfer-ownership="full">
        <type name="GLib.DateTime" c:type="GDateTime*"/>
      </return-value>
      <parameters>
        <parameter name="iso_date" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="size_kind_from_string"
              c:identifier="as_size_kind_from_string"
              version="0.8.6">
      <doc xml:space="preserve">Converts the text representation to an enumerated value.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">an #AsSizeKind or %AS_SIZE_KIND_UNKNOWN for unknown</doc>
        <type name="SizeKind" c:type="AsSizeKind"/>
      </return-value>
      <parameters>
        <parameter name="size_kind" transfer-ownership="none">
          <doc xml:space="preserve">the string.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="size_kind_to_string"
              c:identifier="as_size_kind_to_string"
              version="0.8.6">
      <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 @size_kind</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="size_kind" transfer-ownership="none">
          <doc xml:space="preserve">the #AsSizeKind.</doc>
          <type name="SizeKind" c:type="AsSizeKind"/>
        </parameter>
      </parameters>
    </function>
    <function name="str_empty" c:identifier="as_str_empty">
      <doc xml:space="preserve">Test if a C string is NULL or empty (containing only spaces).</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">The string to test.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="urgency_kind_from_string"
              c:identifier="as_urgency_kind_from_string"
              version="0.6.5">
      <doc xml:space="preserve">Converts the text representation to an enumerated value.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a %AsUrgencyKind or %AS_URGENCY_KIND_UNKNOWN for unknown</doc>
        <type name="UrgencyKind" c:type="AsUrgencyKind"/>
      </return-value>
      <parameters>
        <parameter name="urgency_kind" transfer-ownership="none">
          <doc xml:space="preserve">the string.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="urgency_kind_to_string"
              c:identifier="as_urgency_kind_to_string"
              version="0.6.5">
      <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 @urgency_kind</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="urgency_kind" transfer-ownership="none">
          <doc xml:space="preserve">the %AsUrgencyKind.</doc>
          <type name="UrgencyKind" c:type="AsUrgencyKind"/>
        </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>
    <function name="utils_is_category_name"
              c:identifier="as_utils_is_category_name">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="category_name" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_locale_is_compatible"
              c:identifier="as_utils_locale_is_compatible"
              version="0.9.5">
      <doc xml:space="preserve">Calculates if one locale is compatible with another.
When doing the calculation the locale and language code is taken into
account if possible.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the locale is compatible.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="locale1" transfer-ownership="none">
          <doc xml:space="preserve">a locale string, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="locale2" transfer-ownership="none">
          <doc xml:space="preserve">a locale string, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
