<?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="libxmlb"/>
  <c:include name="xmlb.h"/>
  <namespace name="Xmlb"
             version="2.0"
             shared-library="libxmlb.so.2"
             c:identifier-prefixes="Xb"
             c:symbol-prefixes="xb">
    <class name="Builder"
           c:symbol-prefix="builder"
           c:type="XbBuilder"
           parent="GObject.Object"
           glib:type-name="XbBuilder"
           glib:get-type="xb_builder_get_type"
           glib:type-struct="BuilderClass">
      <source-position filename="../src/xb-builder.h" line="32"/>
      <constructor name="new" c:identifier="xb_builder_new" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder.c"
             line="1059">Creates a new builder.</doc>
        <source-position filename="../src/xb-builder.h" line="56"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-builder.c"
               line="1064">a new #XbBuilder</doc>
          <type name="Builder" c:type="XbBuilder*"/>
        </return-value>
      </constructor>
      <method name="add_fixup"
              c:identifier="xb_builder_add_fixup"
              version="0.1.3">
        <doc xml:space="preserve"
             filename="../src/xb-builder.c"
             line="998">Adds a function that will get run on every #XbBuilderNode compile creates
for the silo. This is run after all the #XbBuilderSource fixups have been
run.</doc>
        <source-position filename="../src/xb-builder.h" line="74"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="1000">a #XbBuilder</doc>
            <type name="Builder" c:type="XbBuilder*"/>
          </instance-parameter>
          <parameter name="fixup" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="1001">a #XbBuilderFixup</doc>
            <type name="BuilderFixup" c:type="XbBuilderFixup*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_locale"
              c:identifier="xb_builder_add_locale"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder.c"
             line="611">Adds a locale to the builder. Locales added first will be prioritised over
locales added later.</doc>
        <source-position filename="../src/xb-builder.h" line="72"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="613">a #XbSilo</doc>
            <type name="Builder" c:type="XbBuilder*"/>
          </instance-parameter>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="614">a locale, e.g. "en_US"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="append_guid"
              c:identifier="xb_builder_append_guid"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder.c"
             line="962">Adds the GUID to the internal correctness hash.</doc>
        <source-position filename="../src/xb-builder.h" line="57"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="964">a #XbSilo</doc>
            <type name="Builder" c:type="XbBuilder*"/>
          </instance-parameter>
          <parameter name="guid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="965">any text, typcically a filename or GUID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="compile"
              c:identifier="xb_builder_compile"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-builder.c"
             line="678">Compiles a #XbSilo.</doc>
        <source-position filename="../src/xb-builder.h" line="63"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-builder.c"
               line="687">a #XbSilo, or %NULL for error</doc>
          <type name="Silo" c:type="XbSilo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="680">a #XbSilo</doc>
            <type name="Builder" c:type="XbBuilder*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="681">some #XbBuilderCompileFlags, e.g. %XB_BUILDER_SOURCE_FLAG_LITERAL_TEXT</doc>
            <type name="BuilderCompileFlags" c:type="XbBuilderCompileFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="682">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ensure"
              c:identifier="xb_builder_ensure"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-builder.c"
             line="857">Ensures @file is up to date, and returns a compiled #XbSilo.

If @silo is being used by a query (e.g. in another thread) then all node
data is immediately invalid.</doc>
        <source-position filename="../src/xb-builder.h" line="67"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-builder.c"
               line="870">a #XbSilo, or %NULL for error</doc>
          <type name="Silo" c:type="XbSilo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="859">a #XbSilo</doc>
            <type name="Builder" c:type="XbBuilder*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="860">a #GFile</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="861">some #XbBuilderCompileFlags, e.g. %XB_BUILDER_COMPILE_FLAG_IGNORE_INVALID</doc>
            <type name="BuilderCompileFlags" c:type="XbBuilderCompileFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="862">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="import_node"
              c:identifier="xb_builder_import_node"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder.c"
             line="591">Adds a node tree to the builder.</doc>
        <source-position filename="../src/xb-builder.h" line="61"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="593">a #XbSilo</doc>
            <type name="Builder" c:type="XbBuilder*"/>
          </instance-parameter>
          <parameter name="bn" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="594">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="import_source"
              c:identifier="xb_builder_import_source"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder.c"
             line="183">Adds a #XbBuilderSource to the #XbBuilder.</doc>
        <source-position filename="../src/xb-builder.h" line="59"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="185">a #XbSilo</doc>
            <type name="Builder" c:type="XbBuilder*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="186">a #XbBuilderSource</doc>
            <type name="BuilderSource" c:type="XbBuilderSource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_profile_flags"
              c:identifier="xb_builder_set_profile_flags"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-builder.c"
             line="980">Enables or disables the collection of profiling data.</doc>
        <source-position filename="../src/xb-builder.h" line="76"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="982">a #XbBuilder</doc>
            <type name="Builder" c:type="XbBuilder*"/>
          </instance-parameter>
          <parameter name="profile_flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder.c"
                 line="983">some #XbSiloProfileFlags, e.g. %XB_SILO_PROFILE_FLAG_DEBUG</doc>
            <type name="SiloProfileFlags" c:type="XbSiloProfileFlags"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="BuilderClass"
            c:type="XbBuilderClass"
            glib:is-gtype-struct-for="Builder">
      <source-position filename="../src/xb-builder.h" line="32"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_xb_reserved1" introspectable="0">
        <callback name="_xb_reserved1">
          <source-position filename="../src/xb-builder.h" line="25"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved2" introspectable="0">
        <callback name="_xb_reserved2">
          <source-position filename="../src/xb-builder.h" line="26"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved3" introspectable="0">
        <callback name="_xb_reserved3">
          <source-position filename="../src/xb-builder.h" line="27"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved4" introspectable="0">
        <callback name="_xb_reserved4">
          <source-position filename="../src/xb-builder.h" line="28"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved5" introspectable="0">
        <callback name="_xb_reserved5">
          <source-position filename="../src/xb-builder.h" line="29"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved6" introspectable="0">
        <callback name="_xb_reserved6">
          <source-position filename="../src/xb-builder.h" line="30"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved7" introspectable="0">
        <callback name="_xb_reserved7">
          <source-position filename="../src/xb-builder.h" line="31"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <bitfield name="BuilderCompileFlags" c:type="XbBuilderCompileFlags">
      <doc xml:space="preserve"
           filename="../src/xb-builder.h"
           line="34">The flags for converting to XML.</doc>
      <source-position filename="../src/xb-builder.h" line="54"/>
      <member name="none"
              value="0"
              c:identifier="XB_BUILDER_COMPILE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../src/xb-builder.h"
             line="36">No extra flags to use</doc>
      </member>
      <member name="native_langs"
              value="2"
              c:identifier="XB_BUILDER_COMPILE_FLAG_NATIVE_LANGS">
        <doc xml:space="preserve"
             filename="../src/xb-builder.h"
             line="37">Only load native languages</doc>
      </member>
      <member name="ignore_invalid"
              value="4"
              c:identifier="XB_BUILDER_COMPILE_FLAG_IGNORE_INVALID">
        <doc xml:space="preserve"
             filename="../src/xb-builder.h"
             line="38">Ignore invalid files without an error</doc>
      </member>
      <member name="single_lang"
              value="8"
              c:identifier="XB_BUILDER_COMPILE_FLAG_SINGLE_LANG">
        <doc xml:space="preserve"
             filename="../src/xb-builder.h"
             line="39">Only store a single language</doc>
      </member>
      <member name="watch_blob"
              value="16"
              c:identifier="XB_BUILDER_COMPILE_FLAG_WATCH_BLOB">
        <doc xml:space="preserve"
             filename="../src/xb-builder.h"
             line="40">Watch the XMLB file for changes</doc>
      </member>
      <member name="ignore_guid"
              value="32"
              c:identifier="XB_BUILDER_COMPILE_FLAG_IGNORE_GUID">
        <doc xml:space="preserve"
             filename="../src/xb-builder.h"
             line="41">Ignore the cache GUID value</doc>
      </member>
    </bitfield>
    <class name="BuilderFixup"
           c:symbol-prefix="builder_fixup"
           c:type="XbBuilderFixup"
           parent="GObject.Object"
           glib:type-name="XbBuilderFixup"
           glib:get-type="xb_builder_fixup_get_type"
           glib:type-struct="BuilderFixupClass">
      <source-position filename="../src/xb-builder-fixup.h" line="29"/>
      <constructor name="new"
                   c:identifier="xb_builder_fixup_new"
                   version="0.1.3">
        <doc xml:space="preserve"
             filename="../src/xb-builder-fixup.c"
             line="170">Creates a function that will get run on every #XbBuilderNode compile creates.</doc>
        <source-position filename="../src/xb-builder-fixup.h" line="36"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-builder-fixup.c"
               line="179">a new #XbBuilderFixup</doc>
          <type name="BuilderFixup" c:type="XbBuilderFixup*"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-fixup.c"
                 line="172">a text ID value, e.g. `AppStreamUpgrade`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2"
                     destroy="3">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-fixup.c"
                 line="173">a callback</doc>
            <type name="BuilderFixupFunc" c:type="XbBuilderFixupFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-fixup.c"
                 line="174">user pointer to pass to @func, or %NULL</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="user_data_free"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-fixup.c"
                 line="175">a function which gets called to free @user_data, or %NULL</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_max_depth"
              c:identifier="xb_builder_fixup_get_max_depth"
              version="0.1.3">
        <doc xml:space="preserve"
             filename="../src/xb-builder-fixup.c"
             line="104">Gets the maximum depth used for this fixup, if each node is being visited.</doc>
        <source-position filename="../src/xb-builder-fixup.h" line="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-fixup.c"
               line="110">integer, or -1 if unset</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-fixup.c"
                 line="106">a #XbBuilderFixup</doc>
            <type name="BuilderFixup" c:type="XbBuilderFixup*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_max_depth"
              c:identifier="xb_builder_fixup_set_max_depth"
              version="0.1.3">
        <doc xml:space="preserve"
             filename="../src/xb-builder-fixup.c"
             line="122">Sets the maximum depth used for this fixup. Use a @max_depth of 0 to only
visit the root node.

Setting a maximum depth may increase performance considerably if using
fixup functions on large and deeply nested XML files.</doc>
        <source-position filename="../src/xb-builder-fixup.h" line="41"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-fixup.c"
                 line="124">a #XbBuilderFixup</doc>
            <type name="BuilderFixup" c:type="XbBuilderFixup*"/>
          </instance-parameter>
          <parameter name="max_depth" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-fixup.c"
                 line="125">integer, -1 for "all"</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="BuilderFixupClass"
            c:type="XbBuilderFixupClass"
            glib:is-gtype-struct-for="BuilderFixup">
      <source-position filename="../src/xb-builder-fixup.h" line="29"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_xb_reserved1" introspectable="0">
        <callback name="_xb_reserved1">
          <source-position filename="../src/xb-builder-fixup.h" line="22"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved2" introspectable="0">
        <callback name="_xb_reserved2">
          <source-position filename="../src/xb-builder-fixup.h" line="23"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved3" introspectable="0">
        <callback name="_xb_reserved3">
          <source-position filename="../src/xb-builder-fixup.h" line="24"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved4" introspectable="0">
        <callback name="_xb_reserved4">
          <source-position filename="../src/xb-builder-fixup.h" line="25"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved5" introspectable="0">
        <callback name="_xb_reserved5">
          <source-position filename="../src/xb-builder-fixup.h" line="26"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved6" introspectable="0">
        <callback name="_xb_reserved6">
          <source-position filename="../src/xb-builder-fixup.h" line="27"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved7" introspectable="0">
        <callback name="_xb_reserved7">
          <source-position filename="../src/xb-builder-fixup.h" line="28"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <callback name="BuilderFixupFunc" c:type="XbBuilderFixupFunc" throws="1">
      <source-position filename="../src/xb-builder-fixup.h" line="31"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <type name="BuilderFixup" c:type="XbBuilderFixup*"/>
        </parameter>
        <parameter name="bn" transfer-ownership="none">
          <type name="BuilderNode" c:type="XbBuilderNode*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="BuilderNode"
           c:symbol-prefix="builder_node"
           c:type="XbBuilderNode"
           parent="GObject.Object"
           glib:type-name="XbBuilderNode"
           glib:get-type="xb_builder_node_get_type"
           glib:type-struct="BuilderNodeClass">
      <source-position filename="../src/xb-builder-node.h" line="28"/>
      <constructor name="new"
                   c:identifier="xb_builder_node_new"
                   version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="913">Creates a new builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="56"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="919">a new #XbBuilderNode</doc>
          <type name="BuilderNode" c:type="XbBuilderNode*"/>
        </return-value>
        <parameters>
          <parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="915">An element name, e.g. "component"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_child"
              c:identifier="xb_builder_node_add_child"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="438">Adds a child builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="90"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="440">A XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="441">A XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_flag"
              c:identifier="xb_builder_node_add_flag"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="63">Adds a flag to the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="67"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="65">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="66">a #XbBuilderNodeFlags</doc>
            <type name="BuilderNodeFlags" c:type="XbBuilderNodeFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="depth"
              c:identifier="xb_builder_node_depth"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="418">Gets the depth of the node tree, where 0 is the root node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="102"/>
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="420">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="export"
              c:identifier="xb_builder_node_export"
              version="0.1.5"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="1081">Exports the node to XML.</doc>
        <source-position filename="../src/xb-builder-node.h" line="112"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="1089">XML data, or %NULL for an error</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="1083">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="1084">some #XbNodeExportFlags, e.g. #XB_NODE_EXPORT_FLAG_NONE</doc>
            <type name="NodeExportFlags" c:type="XbNodeExportFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attr"
              c:identifier="xb_builder_node_get_attr"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="124">Gets an attribute from the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="131">string, or %NULL if unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="126">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="127">attribute name, e.g. `type`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attr_as_uint"
              c:identifier="xb_builder_node_get_attr_as_uint"
              version="0.1.3">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="153">Gets an attribute from the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="83"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="160">integer, or 0 if unset</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="155">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="156">attribute name, e.g. `priority`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_child"
              c:identifier="xb_builder_node_get_child"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="594">Finds a child builder node by the element name, and optionally text value.</doc>
        <source-position filename="../src/xb-builder-node.h" line="97"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="602">a new #XbBuilderNode, or %NULL if not found</doc>
          <type name="BuilderNode" c:type="XbBuilderNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="596">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="597">An element name, e.g. "url"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="598">node text, e.g. "gimp.desktop"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_children"
              c:identifier="xb_builder_node_get_children"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="530">Gets the children of the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="536">children</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="BuilderNode"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="532">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_element"
              c:identifier="xb_builder_node_get_element"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="88">Gets the element from the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="94">string, or %NULL if unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="90">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_first_child"
              c:identifier="xb_builder_node_get_first_child"
              version="0.1.12">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="554">Gets the first child of the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="95"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="560">a #XbBuilderNode, or %NULL</doc>
          <type name="BuilderNode" c:type="XbBuilderNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="556">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_last_child"
              c:identifier="xb_builder_node_get_last_child"
              version="0.1.12">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="574">Gets the last child of the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="96"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="580">a #XbBuilderNode, or %NULL</doc>
          <type name="BuilderNode" c:type="XbBuilderNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="576">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent"
              c:identifier="xb_builder_node_get_parent"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="510">Gets the parent node for the current node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="101"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="516">a new #XbBuilderNode, or %NULL no parent exists.</doc>
          <type name="BuilderNode" c:type="XbBuilderNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="512">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tail"
              c:identifier="xb_builder_node_get_tail"
              version="0.1.12">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="214">Gets the tail from the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="220">string, or %NULL if unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="216">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_text"
              c:identifier="xb_builder_node_get_text"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="175">Gets the text from the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="181">string, or %NULL if unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="177">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_text_as_uint"
              c:identifier="xb_builder_node_get_text_as_uint"
              version="0.1.3">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="193">Gets the text from the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="199">integer, or 0 if unset</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="195">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_flag"
              c:identifier="xb_builder_node_has_flag"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="44">Checks a flag on the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="51">%TRUE if @flag is set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="46">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="47">a #XbBuilderNodeFlags</doc>
            <type name="BuilderNodeFlags" c:type="XbBuilderNodeFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert"
              c:identifier="xb_builder_node_insert"
              version="0.1.0"
              introspectable="0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="932">Creates a new builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-builder-node.c"
               line="940">a new #XbBuilderNode</doc>
          <type name="BuilderNode" c:type="XbBuilderNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="934">A XbBuilderNode, or %NULL</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="935">An element name, e.g. "component"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="936">any attributes to add to the node, terminated by %NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_text"
              c:identifier="xb_builder_node_insert_text"
              version="0.1.0"
              introspectable="0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="972">Creates a new builder node with optional node text.</doc>
        <source-position filename="../src/xb-builder-node.h" line="60"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="parent" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="974">A XbBuilderNode, or %NULL</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="975">An element name, e.g. "id"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="976">node text, e.g. "gimp.desktop"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="977">any attributes to add to the node, terminated by %NULL</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_attr"
              c:identifier="xb_builder_node_remove_attr"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="389">Removes an attribute from the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="391">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="392">attribute name, e.g. `type`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_child"
              c:identifier="xb_builder_node_remove_child"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="465">Removes a child builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="92"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="467">A XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="child" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="468">A XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_attr"
              c:identifier="xb_builder_node_set_attr"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="348">Adds an attribute to the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="85"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="350">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="351">attribute name, e.g. `type`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="352">attribute value, e.g. `desktop`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_element"
              c:identifier="xb_builder_node_set_element"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="106">Sets the element name on the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="70"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="108">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="element" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="109">a string element</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_tail"
              c:identifier="xb_builder_node_set_tail"
              version="0.1.12">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="324">Sets the tail on the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="326">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="tail" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="327">a string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="tail_len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="328">length of @tail, or -1 if @tail is NUL terminated</doc>
            <type name="gssize" c:type="gssize"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_text"
              c:identifier="xb_builder_node_set_text"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="300">Sets the text on the builder node.</doc>
        <source-position filename="../src/xb-builder-node.h" line="74"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="302">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="303">a string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="text_len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="304">length of @text, or -1 if @text is NUL terminated</doc>
            <type name="gssize" c:type="gssize"/>
          </parameter>
        </parameters>
      </method>
      <method name="sort_children"
              c:identifier="xb_builder_node_sort_children"
              version="0.1.3">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="723">Sorts the node children using a custom sort function.</doc>
        <source-position filename="../src/xb-builder-node.h" line="109"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="725">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="726">a #XbBuilderNodeSortFunc</doc>
            <type name="BuilderNodeSortFunc" c:type="XbBuilderNodeSortFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="727">user pointer to pass to @func, or %NULL</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="traverse"
              c:identifier="xb_builder_node_traverse"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="671">Traverses a tree starting from @self. It calls the given function for each
node visited.

The traversal can be halted at any point by returning TRUE from @func.</doc>
        <source-position filename="../src/xb-builder-node.h" line="103"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="673">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="order" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="674">a #GTraverseType, e.g. %G_PRE_ORDER</doc>
            <type name="GLib.TraverseType" c:type="GTraverseType"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="675">a #GTraverseFlags, e.g. %G_TRAVERSE_ALL</doc>
            <type name="GLib.TraverseFlags" c:type="GTraverseFlags"/>
          </parameter>
          <parameter name="max_depth" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="676">the maximum depth of the traversal, or -1 for no limit</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="4">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="677">a #XbBuilderNodeTraverseFunc</doc>
            <type name="BuilderNodeTraverseFunc"
                  c:type="XbBuilderNodeTraverseFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="678">user pointer to pass to @func, or %NULL</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="unlink"
              c:identifier="xb_builder_node_unlink"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.c"
             line="487">Unlinks a #XbBuilderNode from a tree, resulting in two separate trees.

This should not be used from the function called by xb_builder_node_traverse()
otherwise the entire tree will not be traversed.

Instead use xb_builder_node_add_flag(bn,XB_BUILDER_NODE_FLAG_IGNORE);</doc>
        <source-position filename="../src/xb-builder-node.h" line="100"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-node.c"
                 line="489">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="BuilderNodeClass"
            c:type="XbBuilderNodeClass"
            glib:is-gtype-struct-for="BuilderNode">
      <source-position filename="../src/xb-builder-node.h" line="28"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_xb_reserved1" introspectable="0">
        <callback name="_xb_reserved1">
          <source-position filename="../src/xb-builder-node.h" line="21"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved2" introspectable="0">
        <callback name="_xb_reserved2">
          <source-position filename="../src/xb-builder-node.h" line="22"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved3" introspectable="0">
        <callback name="_xb_reserved3">
          <source-position filename="../src/xb-builder-node.h" line="23"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved4" introspectable="0">
        <callback name="_xb_reserved4">
          <source-position filename="../src/xb-builder-node.h" line="24"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved5" introspectable="0">
        <callback name="_xb_reserved5">
          <source-position filename="../src/xb-builder-node.h" line="25"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved6" introspectable="0">
        <callback name="_xb_reserved6">
          <source-position filename="../src/xb-builder-node.h" line="26"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved7" introspectable="0">
        <callback name="_xb_reserved7">
          <source-position filename="../src/xb-builder-node.h" line="27"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <bitfield name="BuilderNodeFlags" c:type="XbBuilderNodeFlags">
      <doc xml:space="preserve"
           filename="../src/xb-builder-node.h"
           line="30">The flags used when building a node.</doc>
      <source-position filename="../src/xb-builder-node.h" line="48"/>
      <member name="none" value="0" c:identifier="XB_BUILDER_NODE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.h"
             line="32">No extra flags to use</doc>
      </member>
      <member name="ignore"
              value="1"
              c:identifier="XB_BUILDER_NODE_FLAG_IGNORE">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.h"
             line="33">Do not include this node in the silo</doc>
      </member>
      <member name="literal_text"
              value="2"
              c:identifier="XB_BUILDER_NODE_FLAG_LITERAL_TEXT">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.h"
             line="34">Assume the node CDATA is already valid</doc>
      </member>
      <member name="has_text"
              value="4"
              c:identifier="XB_BUILDER_NODE_FLAG_HAS_TEXT">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.h"
             line="35">If the node has leading text</doc>
      </member>
      <member name="has_tail"
              value="8"
              c:identifier="XB_BUILDER_NODE_FLAG_HAS_TAIL">
        <doc xml:space="preserve"
             filename="../src/xb-builder-node.h"
             line="36">If the node has trailing text</doc>
      </member>
    </bitfield>
    <callback name="BuilderNodeSortFunc" c:type="XbBuilderNodeSortFunc">
      <source-position filename="../src/xb-builder-node.h" line="52"/>
      <return-value transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="bn1" transfer-ownership="none">
          <type name="BuilderNode" c:type="XbBuilderNode*"/>
        </parameter>
        <parameter name="bn2" transfer-ownership="none">
          <type name="BuilderNode" c:type="XbBuilderNode*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="BuilderNodeTraverseFunc"
              c:type="XbBuilderNodeTraverseFunc">
      <source-position filename="../src/xb-builder-node.h" line="50"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="bn" transfer-ownership="none">
          <type name="BuilderNode" c:type="XbBuilderNode*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="BuilderSource"
           c:symbol-prefix="builder_source"
           c:type="XbBuilderSource"
           parent="GObject.Object"
           glib:type-name="XbBuilderSource"
           glib:get-type="xb_builder_source_get_type"
           glib:type-struct="BuilderSourceClass">
      <source-position filename="../src/xb-builder-source.h" line="31"/>
      <constructor name="new"
                   c:identifier="xb_builder_source_new"
                   version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.c"
             line="557">Creates a new builder source.</doc>
        <source-position filename="../src/xb-builder-source.h" line="63"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-builder-source.c"
               line="562">a new #XbBuilderSource</doc>
          <type name="BuilderSource" c:type="XbBuilderSource*"/>
        </return-value>
      </constructor>
      <method name="add_adapter"
              c:identifier="xb_builder_source_add_adapter"
              version="0.1.7"
              introspectable="0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.c"
             line="297">Adds a function that can be used to convert streams loaded with
xb_builder_source_load_xml().</doc>
        <source-position filename="../src/xb-builder-source.h" line="83"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="299">a #XbBuilderSource</doc>
            <type name="BuilderSource" c:type="XbBuilderSource*"/>
          </instance-parameter>
          <parameter name="content_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="300">mimetypes, e.g. `application/x-desktop,application/gzip`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2"
                     destroy="3">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="301">a callback, or %NULL</doc>
            <type name="BuilderSourceAdapterFunc"
                  c:type="XbBuilderSourceAdapterFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="302">user pointer to pass to @func, or %NULL</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="user_data_free"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="303">a function which gets called to free @user_data, or %NULL</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_fixup"
              c:identifier="xb_builder_source_add_fixup"
              version="0.1.3">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.c"
             line="249">Adds a function that will get run on every #XbBuilderNode compile creates
with this source.</doc>
        <source-position filename="../src/xb-builder-source.h" line="81"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="251">a #XbBuilderSource</doc>
            <type name="BuilderSource" c:type="XbBuilderSource*"/>
          </instance-parameter>
          <parameter name="fixup" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="252">a #XbBuilderFixup</doc>
            <type name="BuilderFixup" c:type="XbBuilderFixup*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_simple_adapter"
              c:identifier="xb_builder_source_add_simple_adapter"
              version="0.1.15"
              introspectable="0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.c"
             line="321">Adds a function that can be used to convert streams loaded with
xb_builder_source_load_xml().</doc>
        <source-position filename="../src/xb-builder-source.h" line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="323">a #XbBuilderSource</doc>
            <type name="BuilderSource" c:type="XbBuilderSource*"/>
          </instance-parameter>
          <parameter name="content_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="324">mimetypes, e.g. `application/x-desktop,application/gzip`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2"
                     destroy="3">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="325">a callback, or %NULL</doc>
            <type name="BuilderSourceAdapterFunc"
                  c:type="XbBuilderSourceAdapterFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="326">user pointer to pass to @func, or %NULL</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="user_data_free"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="327">a function which gets called to free @user_data, or %NULL</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_bytes"
              c:identifier="xb_builder_source_load_bytes"
              version="0.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.c"
             line="207">Loads XML data and begins to build a #XbSilo.</doc>
        <source-position filename="../src/xb-builder-source.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-source.c"
               line="216">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="209">a #XbBuilderSource</doc>
            <type name="BuilderSource" c:type="XbBuilderSource*"/>
          </instance-parameter>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="210">a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="211">some #XbBuilderSourceFlags, e.g. %XB_BUILDER_SOURCE_FLAG_LITERAL_TEXT</doc>
            <type name="BuilderSourceFlags" c:type="XbBuilderSourceFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_file"
              c:identifier="xb_builder_source_load_file"
              version="0.1.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.c"
             line="56">Loads an optionally compressed XML file to build a #XbSilo.</doc>
        <source-position filename="../src/xb-builder-source.h" line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-source.c"
               line="66">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="58">a #XbBuilderSource</doc>
            <type name="BuilderSource" c:type="XbBuilderSource*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="59">a #GFile</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="60">some #XbBuilderSourceFlags, e.g. %XB_BUILDER_SOURCE_FLAG_LITERAL_TEXT</doc>
            <type name="BuilderSourceFlags" c:type="XbBuilderSourceFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="61">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_xml"
              c:identifier="xb_builder_source_load_xml"
              version="0.1.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.c"
             line="165">Loads XML data and begins to build a #XbSilo.</doc>
        <source-position filename="../src/xb-builder-source.h" line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-source.c"
               line="174">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="167">a #XbBuilderSource</doc>
            <type name="BuilderSource" c:type="XbBuilderSource*"/>
          </instance-parameter>
          <parameter name="xml" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="168">XML data</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="169">some #XbBuilderSourceFlags, e.g. %XB_BUILDER_SOURCE_FLAG_LITERAL_TEXT</doc>
            <type name="BuilderSourceFlags" c:type="XbBuilderSourceFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_info"
              c:identifier="xb_builder_source_set_info"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.c"
             line="129">Sets an optional information metadata node on the root node.</doc>
        <source-position filename="../src/xb-builder-source.h" line="77"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="131">a #XbBuilderSource</doc>
            <type name="BuilderSource" c:type="XbBuilderSource*"/>
          </instance-parameter>
          <parameter name="info"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="132">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_prefix"
              c:identifier="xb_builder_source_set_prefix"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.c"
             line="146">Sets an optional prefix on the root node. This makes any nodes added
using this source reside under a common shared parent node.</doc>
        <source-position filename="../src/xb-builder-source.h" line="79"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="148">a #XbBuilderSource</doc>
            <type name="BuilderSource" c:type="XbBuilderSource*"/>
          </instance-parameter>
          <parameter name="prefix"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source.c"
                 line="149">an XPath prefix, e.g. `installed`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <callback name="BuilderSourceAdapterFunc"
              c:type="XbBuilderSourceAdapterFunc"
              introspectable="0"
              throws="1">
      <source-position filename="../src/xb-builder-source.h" line="57"/>
      <return-value>
        <type name="Gio.InputStream" c:type="GInputStream*"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <type name="BuilderSource" c:type="XbBuilderSource*"/>
        </parameter>
        <parameter name="ctx" transfer-ownership="none">
          <type name="BuilderSourceCtx" c:type="XbBuilderSourceCtx*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </callback>
    <record name="BuilderSourceClass"
            c:type="XbBuilderSourceClass"
            glib:is-gtype-struct-for="BuilderSource">
      <source-position filename="../src/xb-builder-source.h" line="31"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_xb_reserved1" introspectable="0">
        <callback name="_xb_reserved1">
          <source-position filename="../src/xb-builder-source.h" line="24"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved2" introspectable="0">
        <callback name="_xb_reserved2">
          <source-position filename="../src/xb-builder-source.h" line="25"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved3" introspectable="0">
        <callback name="_xb_reserved3">
          <source-position filename="../src/xb-builder-source.h" line="26"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved4" introspectable="0">
        <callback name="_xb_reserved4">
          <source-position filename="../src/xb-builder-source.h" line="27"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved5" introspectable="0">
        <callback name="_xb_reserved5">
          <source-position filename="../src/xb-builder-source.h" line="28"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved6" introspectable="0">
        <callback name="_xb_reserved6">
          <source-position filename="../src/xb-builder-source.h" line="29"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved7" introspectable="0">
        <callback name="_xb_reserved7">
          <source-position filename="../src/xb-builder-source.h" line="30"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="BuilderSourceCtx"
           c:symbol-prefix="builder_source_ctx"
           c:type="XbBuilderSourceCtx"
           parent="GObject.Object"
           glib:type-name="XbBuilderSourceCtx"
           glib:get-type="xb_builder_source_ctx_get_type"
           glib:type-struct="BuilderSourceCtxClass">
      <source-position filename="../src/xb-builder-source-ctx.h" line="26"/>
      <method name="get_bytes"
              c:identifier="xb_builder_source_ctx_get_bytes"
              version="0.1.7"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source-ctx.c"
             line="43">Returns the data currently being processed.</doc>
        <source-position filename="../src/xb-builder-source-ctx.h" line="30"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-source-ctx.c"
               line="51">a #GInputStream</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source-ctx.c"
                 line="45">a #XbBuilderSourceCtx</doc>
            <type name="BuilderSourceCtx" c:type="XbBuilderSourceCtx*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source-ctx.c"
                 line="46">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_filename"
              c:identifier="xb_builder_source_ctx_get_filename"
              version="0.1.7">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source-ctx.c"
             line="69">Returns the basename of the file currently being processed.</doc>
        <source-position filename="../src/xb-builder-source-ctx.h" line="29"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-source-ctx.c"
               line="75">a filename, or %NULL if unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source-ctx.c"
                 line="71">a #XbBuilderSourceCtx</doc>
            <type name="BuilderSourceCtx" c:type="XbBuilderSourceCtx*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_stream"
              c:identifier="xb_builder_source_ctx_get_stream"
              version="0.1.7">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source-ctx.c"
             line="25">Returns the input stream currently being processed.</doc>
        <source-position filename="../src/xb-builder-source-ctx.h" line="28"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-builder-source-ctx.c"
               line="31">a #GInputStream</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-builder-source-ctx.c"
                 line="27">a #XbBuilderSourceCtx</doc>
            <type name="BuilderSourceCtx" c:type="XbBuilderSourceCtx*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="BuilderSourceCtxClass"
            c:type="XbBuilderSourceCtxClass"
            glib:is-gtype-struct-for="BuilderSourceCtx">
      <source-position filename="../src/xb-builder-source-ctx.h" line="26"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_xb_reserved1" introspectable="0">
        <callback name="_xb_reserved1">
          <source-position filename="../src/xb-builder-source-ctx.h"
                           line="19"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved2" introspectable="0">
        <callback name="_xb_reserved2">
          <source-position filename="../src/xb-builder-source-ctx.h"
                           line="20"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved3" introspectable="0">
        <callback name="_xb_reserved3">
          <source-position filename="../src/xb-builder-source-ctx.h"
                           line="21"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved4" introspectable="0">
        <callback name="_xb_reserved4">
          <source-position filename="../src/xb-builder-source-ctx.h"
                           line="22"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved5" introspectable="0">
        <callback name="_xb_reserved5">
          <source-position filename="../src/xb-builder-source-ctx.h"
                           line="23"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved6" introspectable="0">
        <callback name="_xb_reserved6">
          <source-position filename="../src/xb-builder-source-ctx.h"
                           line="24"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved7" introspectable="0">
        <callback name="_xb_reserved7">
          <source-position filename="../src/xb-builder-source-ctx.h"
                           line="25"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <bitfield name="BuilderSourceFlags" c:type="XbBuilderSourceFlags">
      <doc xml:space="preserve"
           filename="../src/xb-builder-source.h"
           line="33">The flags for converting to XML.</doc>
      <source-position filename="../src/xb-builder-source.h" line="51"/>
      <member name="none" value="0" c:identifier="XB_BUILDER_SOURCE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.h"
             line="35">No extra flags to use</doc>
      </member>
      <member name="literal_text"
              value="1"
              c:identifier="XB_BUILDER_SOURCE_FLAG_LITERAL_TEXT">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.h"
             line="36">Do not attempt to repair XML whitespace</doc>
      </member>
      <member name="watch_file"
              value="2"
              c:identifier="XB_BUILDER_SOURCE_FLAG_WATCH_FILE">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.h"
             line="37">Watch the source file for changes</doc>
      </member>
      <member name="watch_directory"
              value="4"
              c:identifier="XB_BUILDER_SOURCE_FLAG_WATCH_DIRECTORY">
        <doc xml:space="preserve"
             filename="../src/xb-builder-source.h"
             line="38">Watch the directory containing the source file for changes
	(for example, if watching all the sources in a directory — this allows the
	file monitors to be shared)</doc>
      </member>
    </bitfield>
    <callback name="BuilderSourceNodeFunc"
              c:type="XbBuilderSourceNodeFunc"
              throws="1">
      <source-position filename="../src/xb-builder-source.h" line="53"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <type name="BuilderSource" c:type="XbBuilderSource*"/>
        </parameter>
        <parameter name="bn" transfer-ownership="none">
          <type name="BuilderNode" c:type="XbBuilderNode*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="Machine"
           c:symbol-prefix="machine"
           c:type="XbMachine"
           parent="GObject.Object"
           glib:type-name="XbMachine"
           glib:get-type="xb_machine_get_type"
           glib:type-struct="MachineClass">
      <source-position filename="../src/xb-machine.h" line="29"/>
      <constructor name="new" c:identifier="xb_machine_new" version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="2113">Creates a new virtual machine.</doc>
        <source-position filename="../src/xb-machine.h" line="80"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="2118">a new #XbMachine</doc>
          <type name="Machine" c:type="XbMachine*"/>
        </return-value>
      </constructor>
      <method name="add_method"
              c:identifier="xb_machine_add_method"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="112">Adds a new function to the virtual machine. Registered functions can then be
used as methods.

The @method_cb must not modify the stack it’s passed unless it’s going to
succeed. In particular, if a method call is not optimisable, it must not
modify the stack it’s passed.

You need to add a custom function using xb_machine_add_method() before using
methods that may reference it, for example xb_machine_add_opcode_fixup().</doc>
        <source-position filename="../src/xb-machine.h" line="108"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="114">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="115">function name, e.g. `contains`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="n_opcodes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="116">minimum number of opcodes required on the stack</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="method_cb"
                     transfer-ownership="none"
                     scope="notified"
                     closure="3"
                     destroy="4">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="117">function to call</doc>
            <type name="MachineMethodFunc" c:type="XbMachineMethodFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="118">user pointer to pass to @method_cb, or %NULL</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="user_data_free"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="119">a function which gets called to free @user_data, or %NULL</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_opcode_fixup"
              c:identifier="xb_machine_add_opcode_fixup"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="158">Adds an opcode fixup. Fixups can be used to optimize the stack of opcodes or
to add support for a nonstandard feature, for instance supporting missing
attributes to functions.</doc>
        <source-position filename="../src/xb-machine.h" line="99"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="160">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="opcodes_sig" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="161">signature, e.g. `INTE,TEXT`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="fixup_cb"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2"
                     destroy="3">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="162">callback</doc>
            <type name="MachineOpcodeFixupFunc"
                  c:type="XbMachineOpcodeFixupFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="163">user pointer to pass to @fixup_cb</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="user_data_free"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="164">a function which gets called to free @user_data, or %NULL</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_operator"
              c:identifier="xb_machine_add_operator"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="80">Adds a new operator to the virtual machine. Operators can then be used
instead of explicit methods like `eq()`.

You need to add a custom operator using xb_machine_add_operator() before
using xb_machine_parse(). Common operators like `&lt;=` and `=` are built-in
and do not have to be added manually.</doc>
        <source-position filename="../src/xb-machine.h" line="114"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="82">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="83">operator string, e.g. `==`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="84">function name, e.g. `contains`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_text_handler"
              c:identifier="xb_machine_add_text_handler"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="187">Adds a text handler. This allows the virtual machine to support nonstandard
encoding or shorthand mnemonics for standard functions.</doc>
        <source-position filename="../src/xb-machine.h" line="104"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="189">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="handler_cb"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="190">callback</doc>
            <type name="MachineTextHandlerFunc"
                  c:type="XbMachineTextHandlerFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="191">user pointer to pass to @handler_cb</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="user_data_free"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="192">a function which gets called to free @user_data, or %NULL</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_stack_size"
              c:identifier="xb_machine_get_stack_size"
              version="0.1.3">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="1264">Gets the maximum stack size used for the machine.</doc>
        <source-position filename="../src/xb-machine.h" line="148"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="1270">integer</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1266">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="opcode_func_init"
              c:identifier="xb_machine_opcode_func_init"
              version="0.2.0">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="225">Initialises a stack allocated #XbOpcode for a registered function.
Some standard functions are registered by default, for instance `eq` or `ge`.
Other functions have to be added using xb_machine_add_method().</doc>
        <source-position filename="../src/xb-machine.h" line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="235">%TRUE if the function was found and the opcode initialised, %FALSE
   otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="227">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="opcode"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="228">a stack allocated #XbOpcode to initialise</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </parameter>
          <parameter name="func_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="229">function name, e.g. `eq`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse"
              c:identifier="xb_machine_parse"
              version="0.1.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="827">Parses an XPath predicate. Not all of XPath 1.0 or XPath 1.0 is supported,
and new functions and mnemonics can be added using xb_machine_add_method()
and xb_machine_add_text_handler().</doc>
        <source-position filename="../src/xb-machine.h" line="83"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="838">opcodes, or %NULL on error</doc>
          <type name="Stack" c:type="XbStack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="829">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="830">predicate to parse, e.g. `contains(text(),'xyx')`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="text_len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="831">length of @text, or -1 if @text is `NUL` terminated</doc>
            <type name="gssize" c:type="gssize"/>
          </parameter>
        </parameters>
      </method>
      <method name="parse_full"
              c:identifier="xb_machine_parse_full"
              version="0.1.4"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="750">Parses an XPath predicate. Not all of XPath 1.0 or XPath 1.0 is supported,
and new functions and mnemonics can be added using xb_machine_add_method()
and xb_machine_add_text_handler().</doc>
        <source-position filename="../src/xb-machine.h" line="88"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="762">opcodes, or %NULL on error</doc>
          <type name="Stack" c:type="XbStack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="752">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="753">predicate to parse, e.g. `contains(text(),'xyx')`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="text_len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="754">length of @text, or -1 if @text is `NUL` terminated</doc>
            <type name="gssize" c:type="gssize"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="755">#XbMachineParseFlags, e.g. %XB_MACHINE_PARSE_FLAG_OPTIMIZE</doc>
            <type name="MachineParseFlags" c:type="XbMachineParseFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="run"
              c:identifier="xb_machine_run"
              version="0.1.1"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="898">Runs a set of opcodes on the virtual machine.

It is safe to call this function from a different thread to the one that
created the #XbMachine.</doc>
        <source-position filename="../src/xb-machine.h" line="93"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="911">a new #XbOpcode, or %NULL</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="900">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="opcodes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="901">a #XbStack of opcodes</doc>
            <type name="Stack" c:type="XbStack*"/>
          </parameter>
          <parameter name="result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="902">return status after running @opcodes</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="exec_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="903">per-run user data that is passed to all the XbMachineMethodFunc functions</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_debug_flags"
              c:identifier="xb_machine_set_debug_flags"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="63">Sets the debug level of the virtual machine.</doc>
        <source-position filename="../src/xb-machine.h" line="81"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="65">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="66">#XbMachineDebugFlags, e.g. %XB_MACHINE_DEBUG_FLAG_SHOW_STACK</doc>
            <type name="MachineDebugFlags" c:type="XbMachineDebugFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_stack_size"
              c:identifier="xb_machine_set_stack_size"
              version="0.1.3">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="1243">Sets the maximum stack size used for the machine.

The stack size will be affective for new jobs started with xb_machine_run()
and xb_machine_parse().</doc>
        <source-position filename="../src/xb-machine.h" line="146"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1245">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="stack_size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1246">integer</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="stack_pop"
              c:identifier="xb_machine_stack_pop"
              version="0.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="1017">Pops an opcode from the stack.</doc>
        <source-position filename="../src/xb-machine.h" line="122"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="1026">%TRUE if popping succeeded, %FALSE if the stack was empty already</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1019">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="stack" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1020">a #XbStack</doc>
            <type name="Stack" c:type="XbStack*"/>
          </parameter>
          <parameter name="opcode_out"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1021">return location for the popped #XbOpcode</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="stack_push"
              c:identifier="xb_machine_stack_push"
              version="0.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="1086">Pushes a new empty opcode onto the end of the stack. A pointer to the opcode
is returned in @opcode_out so that the caller can initialise it.

If the stack reaches its maximum size, %G_IO_ERROR_NO_SPACE will be returned.</doc>
        <source-position filename="../src/xb-machine.h" line="126"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="1098">%TRUE if a new empty opcode was returned, or %FALSE if the stack has
   reached its maximum size</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1088">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="stack" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1089">a #XbStack</doc>
            <type name="Stack" c:type="XbStack*"/>
          </parameter>
          <parameter name="opcode_out"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1090">return location for the new #XbOpcode</doc>
            <type name="Opcode" c:type="XbOpcode**"/>
          </parameter>
        </parameters>
      </method>
      <method name="stack_push_integer"
              c:identifier="xb_machine_stack_push_integer"
              version="0.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="1211">Adds an integer literal to the stack.

Errors are as for xb_machine_stack_push().</doc>
        <source-position filename="../src/xb-machine.h" line="142"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="1222">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1213">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="stack" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1214">a #XbStack</doc>
            <type name="Stack" c:type="XbStack*"/>
          </parameter>
          <parameter name="val" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1215">integer literal</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="stack_push_text"
              c:identifier="xb_machine_stack_push_text"
              version="0.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="1114">Adds a text literal to the stack, copying @str.

Errors are as for xb_machine_stack_push().</doc>
        <source-position filename="../src/xb-machine.h" line="130"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="1125">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1116">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="stack" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1117">a #XbStack</doc>
            <type name="Stack" c:type="XbStack*"/>
          </parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1118">text literal</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="stack_push_text_static"
              c:identifier="xb_machine_stack_push_text_static"
              version="0.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="1146">Adds static text literal to the stack.

Errors are as for xb_machine_stack_push().</doc>
        <source-position filename="../src/xb-machine.h" line="134"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="1157">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1148">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="stack" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1149">a #XbStack</doc>
            <type name="Stack" c:type="XbStack*"/>
          </parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1150">text literal</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="stack_push_text_steal"
              c:identifier="xb_machine_stack_push_text_steal"
              version="0.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-machine.c"
             line="1178">Adds a stolen text literal to the stack.

Errors are as for xb_machine_stack_push().</doc>
        <source-position filename="../src/xb-machine.h" line="138"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-machine.c"
               line="1189">%TRUE on success, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1180">a #XbMachine</doc>
            <type name="Machine" c:type="XbMachine*"/>
          </instance-parameter>
          <parameter name="stack" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1181">a #XbStack</doc>
            <type name="Stack" c:type="XbStack*"/>
          </parameter>
          <parameter name="str" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="../src/xb-machine.c"
                 line="1182">text literal</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="MachineClass"
            c:type="XbMachineClass"
            glib:is-gtype-struct-for="Machine">
      <source-position filename="../src/xb-machine.h" line="29"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_xb_reserved1" introspectable="0">
        <callback name="_xb_reserved1">
          <source-position filename="../src/xb-machine.h" line="22"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved2" introspectable="0">
        <callback name="_xb_reserved2">
          <source-position filename="../src/xb-machine.h" line="23"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved3" introspectable="0">
        <callback name="_xb_reserved3">
          <source-position filename="../src/xb-machine.h" line="24"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved4" introspectable="0">
        <callback name="_xb_reserved4">
          <source-position filename="../src/xb-machine.h" line="25"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved5" introspectable="0">
        <callback name="_xb_reserved5">
          <source-position filename="../src/xb-machine.h" line="26"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved6" introspectable="0">
        <callback name="_xb_reserved6">
          <source-position filename="../src/xb-machine.h" line="27"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved7" introspectable="0">
        <callback name="_xb_reserved7">
          <source-position filename="../src/xb-machine.h" line="28"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <bitfield name="MachineDebugFlags" c:type="XbMachineDebugFlags">
      <doc xml:space="preserve"
           filename="../src/xb-machine.h"
           line="31">The flags to control the amount of debugging is generated.</doc>
      <source-position filename="../src/xb-machine.h" line="47"/>
      <member name="none" value="0" c:identifier="XB_MACHINE_DEBUG_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../src/xb-machine.h"
             line="33">No debug flags to use</doc>
      </member>
      <member name="show_stack"
              value="1"
              c:identifier="XB_MACHINE_DEBUG_FLAG_SHOW_STACK">
        <doc xml:space="preserve"
             filename="../src/xb-machine.h"
             line="34">Show the stack addition and removal</doc>
      </member>
      <member name="show_parsing"
              value="2"
              c:identifier="XB_MACHINE_DEBUG_FLAG_SHOW_PARSING">
        <doc xml:space="preserve"
             filename="../src/xb-machine.h"
             line="35">Show the XPath predicate parsing</doc>
      </member>
      <member name="show_optimizer"
              value="4"
              c:identifier="XB_MACHINE_DEBUG_FLAG_SHOW_OPTIMIZER">
        <doc xml:space="preserve"
             filename="../src/xb-machine.h"
             line="36">Show the optimizer operation</doc>
      </member>
    </bitfield>
    <callback name="MachineMethodFunc" c:type="XbMachineMethodFunc" throws="1">
      <source-position filename="../src/xb-machine.h" line="73"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <type name="Machine" c:type="XbMachine*"/>
        </parameter>
        <parameter name="stack" transfer-ownership="none">
          <type name="Stack" c:type="XbStack*"/>
        </parameter>
        <parameter name="result_unused" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean*"/>
        </parameter>
        <parameter name="exec_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="4">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="MachineOpcodeFixupFunc"
              c:type="XbMachineOpcodeFixupFunc"
              throws="1">
      <source-position filename="../src/xb-machine.h" line="63"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <type name="Machine" c:type="XbMachine*"/>
        </parameter>
        <parameter name="opcodes" transfer-ownership="none">
          <type name="Stack" c:type="XbStack*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <bitfield name="MachineParseFlags" c:type="XbMachineParseFlags">
      <doc xml:space="preserve"
           filename="../src/xb-machine.h"
           line="49">The flags to control the parsing behaviour.</doc>
      <source-position filename="../src/xb-machine.h" line="61"/>
      <member name="none" value="0" c:identifier="XB_MACHINE_PARSE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../src/xb-machine.h"
             line="51">No flags set</doc>
      </member>
      <member name="optimize"
              value="1"
              c:identifier="XB_MACHINE_PARSE_FLAG_OPTIMIZE">
        <doc xml:space="preserve"
             filename="../src/xb-machine.h"
             line="52">Run an optimization pass on the predicate</doc>
      </member>
    </bitfield>
    <callback name="MachineTextHandlerFunc"
              c:type="XbMachineTextHandlerFunc"
              throws="1">
      <source-position filename="../src/xb-machine.h" line="67"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <type name="Machine" c:type="XbMachine*"/>
        </parameter>
        <parameter name="opcodes" transfer-ownership="none">
          <type name="Stack" c:type="XbStack*"/>
        </parameter>
        <parameter name="text" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="handled" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="4">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="Node"
           c:symbol-prefix="node"
           c:type="XbNode"
           parent="GObject.Object"
           glib:type-name="XbNode"
           glib:get-type="xb_node_get_type"
           glib:type-struct="NodeClass">
      <source-position filename="../src/xb-node.h" line="26"/>
      <method name="export"
              c:identifier="xb_node_export"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="386">Exports the node back to XML.</doc>
        <source-position filename="../src/xb-node.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="394">XML data, or %NULL for an error</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="388">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="389">some #XbNodeExportFlags, e.g. #XB_NODE_EXPORT_FLAG_NONE</doc>
            <type name="NodeExportFlags" c:type="XbNodeExportFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attr" c:identifier="xb_node_get_attr" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="315">Gets some attribute text data for a specific node.</doc>
        <source-position filename="../src/xb-node.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="322">a string, or %NULL for unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="317">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="318">an attribute name, e.g. "type"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_attr_as_uint"
              c:identifier="xb_node_get_attr_as_uint"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="341">Gets some attribute text data for a specific node.</doc>
        <source-position filename="../src/xb-node.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="348">a guint64, or %G_MAXUINT64 if unfound</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="343">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="344">an attribute name, e.g. `type`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_child"
              c:identifier="xb_node_get_child"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="186">Gets the first child node for the current node.</doc>
        <source-position filename="../src/xb-node.h" line="69"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="192">a #XbNode, or %NULL</doc>
          <type name="Node" c:type="XbNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="188">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_children"
              c:identifier="xb_node_get_children"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="210">Gets all the children for the current node.</doc>
        <source-position filename="../src/xb-node.h" line="70"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="216">an array of children</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Node"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="212">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data" c:identifier="xb_node_get_data" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="26">Gets any data that has been set on the node using xb_node_set_data().

This will only work across queries to the associated silo if the silo has
its #XbSilo:enable-node-cache property set to %TRUE. Otherwise a new #XbNode
may be constructed for future queries which return the same element as a
result.</doc>
        <source-position filename="../src/xb-node.h" line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="38">a #GBytes, or %NULL if not found</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="28">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="29">a string key, e.g. `fwupd::RemoteId`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_depth"
              c:identifier="xb_node_get_depth"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="368">Gets the depth of the node to a root.</doc>
        <source-position filename="../src/xb-node.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="374">a integer, where 0 is the root node iself.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="370">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_element"
              c:identifier="xb_node_get_element"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="297">Gets the element name for a specific node.</doc>
        <source-position filename="../src/xb-node.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="303">a string, or %NULL for unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="299">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_next" c:identifier="xb_node_get_next" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="162">Gets the next sibling node for the current node.</doc>
        <source-position filename="../src/xb-node.h" line="68"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="168">a #XbNode, or %NULL</doc>
          <type name="Node" c:type="XbNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="164">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent"
              c:identifier="xb_node_get_parent"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="138">Gets the parent node for the current node.</doc>
        <source-position filename="../src/xb-node.h" line="67"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="144">a #XbNode, or %NULL</doc>
          <type name="Node" c:type="XbNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="140">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_root" c:identifier="xb_node_get_root" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="114">Gets the root node for the node.</doc>
        <source-position filename="../src/xb-node.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="120">a #XbNode, or %NULL</doc>
          <type name="Node" c:type="XbNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="116">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_silo" c:identifier="xb_node_get_silo" version="0.2.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="97">Gets the #XbSilo for the node.</doc>
        <source-position filename="../src/xb-node-silo.h" line="16"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="103">a #XbSilo</doc>
          <type name="Silo" c:type="XbSilo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="99">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tail" c:identifier="xb_node_get_tail" version="0.1.12">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="279">Gets the tail data for a specific node.</doc>
        <source-position filename="../src/xb-node.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="285">a string, or %NULL for unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="281">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_text" c:identifier="xb_node_get_text" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="235">Gets the text data for a specific node.</doc>
        <source-position filename="../src/xb-node.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="241">a string, or %NULL for unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="237">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_text_as_uint"
              c:identifier="xb_node_get_text_as_uint"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="253">Gets some attribute text data for a specific node.</doc>
        <source-position filename="../src/xb-node.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="259">a guint64, or %G_MAXUINT64 if unfound</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="255">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="query"
              c:identifier="xb_node_query"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-node-query.c"
             line="18">Searches the silo using an XPath query, returning up to @limit results.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a subset of XPath is supported.</doc>
        <source-position filename="../src/xb-node-query.h" line="16"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../src/xb-node-query.c"
               line="32">results, or %NULL if unfound</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Node"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="20">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="21">an XPath, e.g. `id[abe.desktop]`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="limit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="22">maximum number of results to return, or 0 for "all"</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_attr"
              c:identifier="xb_node_query_attr"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-node-query.c"
             line="180">Searches the node using an XPath query, returning up to one result.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a subset of XPath is supported.</doc>
        <source-position filename="../src/xb-node-query.h" line="35"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node-query.c"
               line="194">a string, or %NULL if unfound</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="182">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="183">An XPath, e.g. `/components/component[@type=desktop]/id[abe.desktop]`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="184">an attribute name, e.g. `type`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_attr_as_uint"
              c:identifier="xb_node_query_attr_as_uint"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-node-query.c"
             line="304">Searches the node using an XPath query, returning up to one result.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a subset of XPath is supported.</doc>
        <source-position filename="../src/xb-node-query.h" line="39"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node-query.c"
               line="318">a guint64, or %G_MAXUINT64 if unfound</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="306">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="307">An XPath, e.g. `/components/component[@type=desktop]/id[abe.desktop]`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="308">an attribute name, e.g. `type`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_export"
              c:identifier="xb_node_query_export"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-node-query.c"
             line="227">Searches the node using an XPath query, returning an XML string of the
result and any children.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a subset of XPath is supported.</doc>
        <source-position filename="../src/xb-node-query.h" line="43"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node-query.c"
               line="241">a string, or %NULL if unfound</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="229">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="230">An XPath, e.g. `/components/component[@type=desktop]/id[abe.desktop]`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_first"
              c:identifier="xb_node_query_first"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-node-query.c"
             line="104">Searches the node using an XPath query, returning up to one result.

Please note: Only a tiny subset of XPath 1.0 is supported.</doc>
        <source-position filename="../src/xb-node-query.h" line="23"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-node-query.c"
               line="114">a #XbNode, or %NULL if unfound</doc>
          <type name="Node" c:type="XbNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="106">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="107">An XPath, e.g. `/components/component[@type=desktop]/id[abe.desktop]`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_first_full"
              c:identifier="xb_node_query_first_full"
              version="0.1.11"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-node-query.c"
             line="71">Searches the silo using an prepared query, returning up to one result.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a subset of XPath is supported.</doc>
        <source-position filename="../src/xb-node-query.h" line="26"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-node-query.c"
               line="84">a #XbNode, or %NULL if unfound</doc>
          <type name="Node" c:type="XbNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="73">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="query" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="74">an #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_full"
              c:identifier="xb_node_query_full"
              version="0.1.4"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-node-query.c"
             line="45">Searches the silo using an prepared query.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a subset of XPath is supported.</doc>
        <source-position filename="../src/xb-node-query.h" line="20"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../src/xb-node-query.c"
               line="58">results, or %NULL if unfound</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Node"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="47">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="query" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="48">an #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_text"
              c:identifier="xb_node_query_text"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-node-query.c"
             line="134">Searches the node using an XPath query, returning up to one result.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a subset of XPath is supported.</doc>
        <source-position filename="../src/xb-node-query.h" line="29"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node-query.c"
               line="147">a string, or %NULL if unfound</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="136">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="137">An XPath, e.g. `/components/component[@type=desktop]/id[abe.desktop]`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_text_as_uint"
              c:identifier="xb_node_query_text_as_uint"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-node-query.c"
             line="269">Searches the node using an XPath query, returning up to one result.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a subset of XPath is supported.</doc>
        <source-position filename="../src/xb-node-query.h" line="32"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node-query.c"
               line="282">a guint64, or %G_MAXUINT64 if unfound</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="271">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node-query.c"
                 line="272">An XPath, e.g. `/components/component[@type=desktop]/id[abe.desktop]`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_data" c:identifier="xb_node_set_data" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="52">Sets some data on the node which can be retrieved using xb_node_get_data().

This will only work across queries to the associated silo if the silo has
its #XbSilo:enable-node-cache property set to %TRUE. Otherwise a new #XbNode
may be constructed for future queries which return the same element as a
result.</doc>
        <source-position filename="../src/xb-node.h" line="62"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="54">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="55">a string key, e.g. `fwupd::RemoteId`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="56">a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
        </parameters>
      </method>
      <method name="transmogrify"
              c:identifier="xb_node_transmogrify"
              version="0.1.12">
        <doc xml:space="preserve"
             filename="../src/xb-node.c"
             line="410">Traverses a tree starting from @self. It calls the given functions for each
node visited. This allows transmogrification of the source, for instance
converting the XML description to PangoMarkup or even something completely
different like markdown.

The traversal can be halted at any point by returning TRUE from @func.</doc>
        <source-position filename="../src/xb-node.h" line="52"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-node.c"
               line="424">%TRUE if all nodes were visited</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="412">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </instance-parameter>
          <parameter name="func_text" transfer-ownership="none" scope="call">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="413">(allow-none): a #XbBuilderNodeTraverseFunc</doc>
            <type name="NodeTransmogrifyFunc" c:type="XbNodeTransmogrifyFunc"/>
          </parameter>
          <parameter name="func_tail"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="414">(allow-none): a #XbBuilderNodeTraverseFunc</doc>
            <type name="NodeTransmogrifyFunc" c:type="XbNodeTransmogrifyFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-node.c"
                 line="415">user pointer to pass to @func, or %NULL</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="NodeClass"
            c:type="XbNodeClass"
            glib:is-gtype-struct-for="Node">
      <source-position filename="../src/xb-node.h" line="26"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_xb_reserved1" introspectable="0">
        <callback name="_xb_reserved1">
          <source-position filename="../src/xb-node.h" line="19"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved2" introspectable="0">
        <callback name="_xb_reserved2">
          <source-position filename="../src/xb-node.h" line="20"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved3" introspectable="0">
        <callback name="_xb_reserved3">
          <source-position filename="../src/xb-node.h" line="21"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved4" introspectable="0">
        <callback name="_xb_reserved4">
          <source-position filename="../src/xb-node.h" line="22"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved5" introspectable="0">
        <callback name="_xb_reserved5">
          <source-position filename="../src/xb-node.h" line="23"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved6" introspectable="0">
        <callback name="_xb_reserved6">
          <source-position filename="../src/xb-node.h" line="24"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved7" introspectable="0">
        <callback name="_xb_reserved7">
          <source-position filename="../src/xb-node.h" line="25"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <bitfield name="NodeExportFlags" c:type="XbNodeExportFlags">
      <doc xml:space="preserve"
           filename="../src/xb-node.h"
           line="28">The flags for converting to XML.</doc>
      <source-position filename="../src/xb-node.h" line="48"/>
      <member name="none" value="0" c:identifier="XB_NODE_EXPORT_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../src/xb-node.h"
             line="30">No extra flags to use</doc>
      </member>
      <member name="add_header"
              value="1"
              c:identifier="XB_NODE_EXPORT_FLAG_ADD_HEADER">
        <doc xml:space="preserve"
             filename="../src/xb-node.h"
             line="31">Add an XML header to the data</doc>
      </member>
      <member name="format_multiline"
              value="2"
              c:identifier="XB_NODE_EXPORT_FLAG_FORMAT_MULTILINE">
        <doc xml:space="preserve"
             filename="../src/xb-node.h"
             line="32">Split up children with a newline</doc>
      </member>
      <member name="format_indent"
              value="4"
              c:identifier="XB_NODE_EXPORT_FLAG_FORMAT_INDENT">
        <doc xml:space="preserve"
             filename="../src/xb-node.h"
             line="33">Indent the XML by child depth</doc>
      </member>
      <member name="include_siblings"
              value="8"
              c:identifier="XB_NODE_EXPORT_FLAG_INCLUDE_SIBLINGS">
        <doc xml:space="preserve"
             filename="../src/xb-node.h"
             line="34">Include the siblings when converting</doc>
      </member>
      <member name="only_children"
              value="16"
              c:identifier="XB_NODE_EXPORT_FLAG_ONLY_CHILDREN">
        <doc xml:space="preserve"
             filename="../src/xb-node.h"
             line="35">Only export the children of the node</doc>
      </member>
    </bitfield>
    <callback name="NodeTransmogrifyFunc" c:type="XbNodeTransmogrifyFunc">
      <source-position filename="../src/xb-node.h" line="50"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <type name="Node" c:type="XbNode*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="Opcode" c:type="XbOpcode" disguised="1">
      <source-position filename="../src/xb-opcode.h" line="65"/>
      <method name="cmp_str" c:identifier="xb_opcode_cmp_str" version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="166">Checks if the opcode can be compared using the string value.</doc>
        <source-position filename="../src/xb-opcode.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-opcode.c"
               line="172">#%TRUE if this opcode can be compared as an string</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="168">a #XbOpcode</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="cmp_val" c:identifier="xb_opcode_cmp_val" version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="148">Checks if the opcode can be compared using the integer value.</doc>
        <source-position filename="../src/xb-opcode.h" line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-opcode.c"
               line="154">#%TRUE if this opcode can be compared as an integer</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="150">a #XbOpcode</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="func_init"
              c:identifier="xb_opcode_func_init"
              version="0.2.0">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="315">Initialises a stack allocated #XbOpcode to contain a specific function.
Custom functions can be registered using xb_machine_add_func() and retrieved
using xb_machine_opcode_func_new().</doc>
        <source-position filename="../src/xb-opcode.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="opcode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="317">a stack allocated #XbOpcode to initialise</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </instance-parameter>
          <parameter name="func" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="318">a function index</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_kind"
              c:identifier="xb_opcode_get_kind"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="132">Gets the opcode kind.</doc>
        <source-position filename="../src/xb-opcode.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-opcode.c"
               line="138">a #XbOpcodeKind, e.g. %XB_OPCODE_KIND_INTEGER</doc>
          <type name="OpcodeKind" c:type="XbOpcodeKind"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="134">a #XbOpcode</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_str" c:identifier="xb_opcode_get_str" version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="208">Gets the string value stored on the opcode.</doc>
        <source-position filename="../src/xb-opcode.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-opcode.c"
               line="214">a string, or %NULL if unset</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="210">a #XbOpcode</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_val" c:identifier="xb_opcode_get_val" version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="191">Gets the integer value stored in the opcode. This may be a function ID,
a index into the string table or a literal integer.</doc>
        <source-position filename="../src/xb-opcode.h" line="76"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-opcode.c"
               line="198">value, or 0 for unset.</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="193">a #XbOpcode</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="integer_init"
              c:identifier="xb_opcode_integer_init"
              version="0.2.0">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="386">Initialises a stack allocated #XbOpcode to contain an integer literal.</doc>
        <source-position filename="../src/xb-opcode.h" line="80"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="opcode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="388">a stack allocated #XbOpcode to initialise</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </instance-parameter>
          <parameter name="val" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="389">a integer value</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="text_init"
              c:identifier="xb_opcode_text_init"
              version="0.2.0">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="241">Initialises a stack allocated #XbOpcode to contain a text literal.
The @str argument is copied internally and is not tied to the lifecycle of
the #XbOpcode.</doc>
        <source-position filename="../src/xb-opcode.h" line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="opcode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="243">a stack allocated #XbOpcode to initialise</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="244">a string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="text_init_static"
              c:identifier="xb_opcode_text_init_static"
              version="0.2.0">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="283">Initialises a stack allocated #XbOpcode to contain a text literal, where
@str is either static text or will outlive the #XbOpcode lifecycle.</doc>
        <source-position filename="../src/xb-opcode.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="opcode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="285">a stack allocated #XbOpcode to initialise</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="286">a string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="text_init_steal"
              c:identifier="xb_opcode_text_init_steal"
              version="0.2.0">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="299">Initialises a stack allocated #XbOpcode to contain a text literal, stealing
the @str. Once the opcode is finalized g_free() will be called on @str.</doc>
        <source-position filename="../src/xb-opcode.h" line="86"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="opcode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="301">a stack allocated #XbOpcode to initialise</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="302">a string</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string"
              c:identifier="xb_opcode_to_string"
              version="0.1.4">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="99">Returns a string representing the specific opcode.</doc>
        <source-position filename="../src/xb-opcode.h" line="70"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-opcode.c"
               line="105">text</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="101">a #XbOpcode</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="kind_from_string"
                c:identifier="xb_opcode_kind_from_string"
                version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="47">Converts a string to an opcode kind.</doc>
        <source-position filename="../src/xb-opcode.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-opcode.c"
               line="53">a #XbOpcodeKind, e.g. %XB_OPCODE_KIND_TEXT</doc>
          <type name="OpcodeKind" c:type="XbOpcodeKind"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="49">a string, e.g. `FUNC`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="kind_to_string"
                c:identifier="xb_opcode_kind_to_string"
                version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="15">Converts the opcode kind to a string.</doc>
        <source-position filename="../src/xb-opcode.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-opcode.c"
               line="21">opcode kind, e.g. `FUNC`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="kind" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-opcode.c"
                 line="17">a #XbOpcodeKind, e.g. %XB_OPCODE_KIND_FUNCTION</doc>
            <type name="OpcodeKind" c:type="XbOpcodeKind"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <bitfield name="OpcodeFlags" c:type="XbOpcodeFlags">
      <doc xml:space="preserve"
           filename="../src/xb-opcode.h"
           line="13">The opcode flags. The values have been carefully chosen so that a simple
bitmask can be done to know how to compare for equality.

function─┐ ┌─string
bound──┐ │ │ ┌──integer
       │ │ │ │
 X X X X X X X
       8 4 2 1</doc>
      <source-position filename="../src/xb-opcode.h" line="39"/>
      <member name="unknown" value="0" c:identifier="XB_OPCODE_FLAG_UNKNOWN">
      </member>
      <member name="integer" value="1" c:identifier="XB_OPCODE_FLAG_INTEGER">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.h"
             line="16">Integer value set</doc>
      </member>
      <member name="text" value="2" c:identifier="XB_OPCODE_FLAG_TEXT">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.h"
             line="17">Text value set</doc>
      </member>
      <member name="function" value="4" c:identifier="XB_OPCODE_FLAG_FUNCTION">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.h"
             line="18">An operator</doc>
      </member>
      <member name="bound" value="8" c:identifier="XB_OPCODE_FLAG_BOUND">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.h"
             line="19">A bound value, assigned later</doc>
      </member>
      <member name="boolean" value="16" c:identifier="XB_OPCODE_FLAG_BOOLEAN">
      </member>
    </bitfield>
    <enumeration name="OpcodeKind" c:type="XbOpcodeKind">
      <source-position filename="../src/xb-opcode.h" line="63"/>
      <member name="unknown" value="0" c:identifier="XB_OPCODE_KIND_UNKNOWN">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.h"
             line="43">Unknown opcode</doc>
      </member>
      <member name="integer" value="1" c:identifier="XB_OPCODE_KIND_INTEGER">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.h"
             line="44">A literal integer value</doc>
      </member>
      <member name="text" value="2" c:identifier="XB_OPCODE_KIND_TEXT">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.h"
             line="45">A literal text value</doc>
      </member>
      <member name="function" value="5" c:identifier="XB_OPCODE_KIND_FUNCTION">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.h"
             line="46">An operator</doc>
      </member>
      <member name="bound_unset"
              value="8"
              c:identifier="XB_OPCODE_KIND_BOUND_UNSET">
      </member>
      <member name="bound_integer"
              value="9"
              c:identifier="XB_OPCODE_KIND_BOUND_INTEGER">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.h"
             line="47">A bound integer value</doc>
      </member>
      <member name="bound_text"
              value="10"
              c:identifier="XB_OPCODE_KIND_BOUND_TEXT">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.h"
             line="48">A bound text value</doc>
      </member>
      <member name="indexed_text"
              value="3"
              c:identifier="XB_OPCODE_KIND_INDEXED_TEXT">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.h"
             line="49">An indexed text value</doc>
      </member>
      <member name="boolean" value="17" c:identifier="XB_OPCODE_KIND_BOOLEAN">
      </member>
    </enumeration>
    <class name="Query"
           c:symbol-prefix="query"
           c:type="XbQuery"
           parent="GObject.Object"
           glib:type-name="XbQuery"
           glib:get-type="xb_query_get_type"
           glib:type-struct="QueryClass">
      <source-position filename="../src/xb-query.h" line="28"/>
      <constructor name="new"
                   c:identifier="xb_query_new"
                   version="0.1.4"
                   throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-query.c"
             line="512">Creates a query to be used by @silo. It may be quicker to create a query
manually and re-use it multiple times.</doc>
        <source-position filename="../src/xb-query.h" line="50"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-query.c"
               line="521">a #XbQuery</doc>
          <type name="Query" c:type="XbQuery*"/>
        </return-value>
        <parameters>
          <parameter name="silo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="514">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="515">The XPath query</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_full"
                   c:identifier="xb_query_new_full"
                   version="0.1.6"
                   throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-query.c"
             line="465">Creates a query to be used by @silo. It may be quicker to create a query
manually and re-use it multiple times.</doc>
        <source-position filename="../src/xb-query.h" line="53"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-query.c"
               line="475">a #XbQuery</doc>
          <type name="Query" c:type="XbQuery*"/>
        </return-value>
        <parameters>
          <parameter name="silo" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="467">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="468">The XPath query</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="469">some #XbQueryFlags, e.g. #XB_QUERY_FLAG_USE_INDEXES</doc>
            <type name="QueryFlags" c:type="XbQueryFlags"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="bind_str"
              c:identifier="xb_query_bind_str"
              version="0.1.4"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-query.c"
             line="207">Assigns a string to a bound value specified using `?`.</doc>
        <source-position filename="../src/xb-query.h" line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-query.c"
               line="216">%TRUE if the @idx existed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="209">a #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="210">an integer index</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="211">string to assign to the bound variable</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="bind_val"
              c:identifier="xb_query_bind_val"
              version="0.1.4"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-query.c"
             line="241">Assigns a string to a bound value specified using `?`.</doc>
        <source-position filename="../src/xb-query.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-query.c"
               line="250">%TRUE if the @idx existed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="243">a #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="244">an integer index</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="val" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="245">value to assign to the bound variable</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_flags"
              c:identifier="xb_query_get_flags"
              version="0.1.15">
        <doc xml:space="preserve"
             filename="../src/xb-query.c"
             line="148">Gets the flags used for this query.</doc>
        <source-position filename="../src/xb-query.h" line="61"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-query.c"
               line="154">#XbQueryFlags, default %XB_QUERY_FLAG_NONE</doc>
          <type name="QueryFlags" c:type="XbQueryFlags"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="150">a #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_limit"
              c:identifier="xb_query_get_limit"
              version="0.1.4">
        <doc xml:space="preserve"
             filename="../src/xb-query.c"
             line="113">Gets the results limit on this query, where 0 is 'all'.</doc>
        <source-position filename="../src/xb-query.h" line="58"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-query.c"
               line="119">integer, default 0</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="115">a #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_xpath"
              c:identifier="xb_query_get_xpath"
              version="0.1.4">
        <doc xml:space="preserve"
             filename="../src/xb-query.c"
             line="48">Gets the XPath string that created the query.</doc>
        <source-position filename="../src/xb-query.h" line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-query.c"
               line="54">string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="50">a #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_flags"
              c:identifier="xb_query_set_flags"
              version="0.1.15">
        <doc xml:space="preserve"
             filename="../src/xb-query.c"
             line="166">Sets the flags to use for this query.</doc>
        <source-position filename="../src/xb-query.h" line="62"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="168">a #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="169">a #XbQueryFlags, e.g. %XB_QUERY_FLAG_USE_INDEXES</doc>
            <type name="QueryFlags" c:type="XbQueryFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_limit"
              c:identifier="xb_query_set_limit"
              version="0.1.4">
        <doc xml:space="preserve"
             filename="../src/xb-query.c"
             line="131">Sets the results limit on this query, where 0 is 'all'.</doc>
        <source-position filename="../src/xb-query.h" line="59"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="133">a #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </instance-parameter>
          <parameter name="limit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-query.c"
                 line="134">integer</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="QueryClass"
            c:type="XbQueryClass"
            glib:is-gtype-struct-for="Query">
      <source-position filename="../src/xb-query.h" line="28"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_xb_reserved1" introspectable="0">
        <callback name="_xb_reserved1">
          <source-position filename="../src/xb-query.h" line="21"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved2" introspectable="0">
        <callback name="_xb_reserved2">
          <source-position filename="../src/xb-query.h" line="22"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved3" introspectable="0">
        <callback name="_xb_reserved3">
          <source-position filename="../src/xb-query.h" line="23"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved4" introspectable="0">
        <callback name="_xb_reserved4">
          <source-position filename="../src/xb-query.h" line="24"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved5" introspectable="0">
        <callback name="_xb_reserved5">
          <source-position filename="../src/xb-query.h" line="25"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved6" introspectable="0">
        <callback name="_xb_reserved6">
          <source-position filename="../src/xb-query.h" line="26"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved7" introspectable="0">
        <callback name="_xb_reserved7">
          <source-position filename="../src/xb-query.h" line="27"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <bitfield name="QueryFlags" c:type="XbQueryFlags">
      <doc xml:space="preserve"
           filename="../src/xb-query.h"
           line="30">The flags used fo query.</doc>
      <source-position filename="../src/xb-query.h" line="48"/>
      <member name="none" value="0" c:identifier="XB_QUERY_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../src/xb-query.h"
             line="32">No extra flags to use</doc>
      </member>
      <member name="optimize" value="1" c:identifier="XB_QUERY_FLAG_OPTIMIZE">
        <doc xml:space="preserve"
             filename="../src/xb-query.h"
             line="33">Optimize the query when possible</doc>
      </member>
      <member name="use_indexes"
              value="2"
              c:identifier="XB_QUERY_FLAG_USE_INDEXES">
        <doc xml:space="preserve"
             filename="../src/xb-query.h"
             line="34">Use the indexed parameters</doc>
      </member>
      <member name="reverse" value="4" c:identifier="XB_QUERY_FLAG_REVERSE">
        <doc xml:space="preserve"
             filename="../src/xb-query.h"
             line="35">Reverse the results order</doc>
      </member>
      <member name="force_node_cache"
              value="8"
              c:identifier="XB_QUERY_FLAG_FORCE_NODE_CACHE">
        <doc xml:space="preserve"
             filename="../src/xb-query.h"
             line="36">Always cache the #XbNode objects</doc>
      </member>
    </bitfield>
    <class name="Silo"
           c:symbol-prefix="silo"
           c:type="XbSilo"
           parent="GObject.Object"
           glib:type-name="XbSilo"
           glib:get-type="xb_silo_get_type"
           glib:type-struct="SiloClass">
      <source-position filename="../src/xb-silo.h" line="28"/>
      <constructor name="new" c:identifier="xb_silo_new" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="1519">Creates a new silo.</doc>
        <source-position filename="../src/xb-silo.h" line="64"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="1524">a new #XbSilo</doc>
          <type name="Silo" c:type="XbSilo*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_xml"
                   c:identifier="xb_silo_new_from_xml"
                   version="0.1.0"
                   throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="982">Creates a new silo from an XML string.</doc>
        <source-position filename="../src/xb-silo.h" line="65"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="989">a new #XbSilo, or %NULL</doc>
          <type name="Silo" c:type="XbSilo*"/>
        </return-value>
        <parameters>
          <parameter name="xml" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="984">XML string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="export"
              c:identifier="xb_silo_export"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo-export.c"
             line="155">Exports the silo back to XML.</doc>
        <source-position filename="../src/xb-silo-export.h" line="16"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-silo-export.c"
               line="163">XML data, or %NULL for an error</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-export.c"
                 line="157">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-export.c"
                 line="158">some #XbNodeExportFlags, e.g. #XB_NODE_EXPORT_FLAG_NONE</doc>
            <type name="NodeExportFlags" c:type="XbNodeExportFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="export_file"
              c:identifier="xb_silo_export_file"
              version="0.1.2"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo-export.c"
             line="179">Exports the silo back to an XML file.</doc>
        <source-position filename="../src/xb-silo-export.h" line="19"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo-export.c"
               line="189">%TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-export.c"
                 line="181">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-export.c"
                 line="182">a #GFile</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-export.c"
                 line="183">some #XbNodeExportFlags, e.g. #XB_NODE_EXPORT_FLAG_NONE</doc>
            <type name="NodeExportFlags" c:type="XbNodeExportFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-export.c"
                 line="184">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bytes"
              c:identifier="xb_silo_get_bytes"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="545">Gets the backing object that created the blob.

You should never *ever* modify this data.</doc>
        <source-position filename="../src/xb-silo.h" line="67"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="553">A #GBytes, or %NULL if never set</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="547">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_enable_node_cache"
              c:identifier="xb_silo_get_enable_node_cache"
              version="0.2.0">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="743">Get #XbSilo:enable-node-cache.</doc>
        <source-position filename="../src/xb-silo.h" line="96"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="745">an #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_guid" c:identifier="xb_silo_get_guid" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="567">Gets the GUID used to identify this silo.</doc>
        <source-position filename="../src/xb-silo.h" line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="573">a string, otherwise %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="569">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_profile_string"
              c:identifier="xb_silo_get_profile_string"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="707">Returns the profiling data. This will only return profiling text if
xb_silo_set_profile_flags() was used with %XB_SILO_PROFILE_FLAG_APPEND.</doc>
        <source-position filename="../src/xb-silo.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="714">text profiling data</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="709">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_root" c:identifier="xb_silo_get_root" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="284">Gets the root node for the silo. (MIGHT BE MORE).</doc>
        <source-position filename="../src/xb-silo.h" line="85"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="290">A #XbNode, or %NULL for an error</doc>
          <type name="Node" c:type="XbNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="286">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size" c:identifier="xb_silo_get_size" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="445">Gets the number of nodes in the silo.</doc>
        <source-position filename="../src/xb-silo.h" line="83"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="451">a integer, or 0 is an empty blob</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="447">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="invalidate"
              c:identifier="xb_silo_invalidate"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="504">Invalidates a silo. Future calls xb_silo_is_valid() will return %FALSE.</doc>
        <source-position filename="../src/xb-silo.h" line="86"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="506">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_valid" c:identifier="xb_silo_is_valid" version="0.1.0">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="475">Checks is the silo is valid. The usual reason the silo is invalidated is
when the backing mmapped file has changed, or one of the imported files have
been modified.</doc>
        <source-position filename="../src/xb-silo.h" line="87"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="483">%TRUE if valid</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="477">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load_from_bytes"
              c:identifier="xb_silo_load_from_bytes"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="594">Loads a silo from memory location.</doc>
        <source-position filename="../src/xb-silo.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="603">%TRUE for success, otherwise @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="596">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="blob" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="597">a #GBytes</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="598">#XbSiloLoadFlags, e.g. %XB_SILO_LOAD_FLAG_NONE</doc>
            <type name="SiloLoadFlags" c:type="XbSiloLoadFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_from_file"
              c:identifier="xb_silo_load_from_file"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="866">Loads a silo from file.</doc>
        <source-position filename="../src/xb-silo.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="876">%TRUE for success, otherwise @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="868">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="869">a #GFile</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="870">#XbSiloLoadFlags, e.g. %XB_SILO_LOAD_FLAG_NONE</doc>
            <type name="SiloLoadFlags" c:type="XbSiloLoadFlags"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="871">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query"
              c:identifier="xb_silo_query"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo-query.c"
             line="498">Searches the silo using an XPath query, returning up to @limit results.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a subset of XPath is supported.</doc>
        <source-position filename="../src/xb-silo-query.h" line="17"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../src/xb-silo-query.c"
               line="512">results, or %NULL if unfound</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Node"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="500">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="501">an XPath, e.g. `/components/component[@type=desktop]/id[abe.desktop]`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="limit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="502">maximum number of results to return, or 0 for "all"</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_build_index"
              c:identifier="xb_silo_query_build_index"
              version="0.1.4"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo-query.c"
             line="552">Adds the `attr()` or `text()` results of a query to the index.</doc>
        <source-position filename="../src/xb-silo-query.h" line="30"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo-query.c"
               line="561">%TRUE for success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="554">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="555">An XPath, e.g. `/components/component[@type=desktop]/id[abe.desktop]`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="attr"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="556">Attribute name, e.g. `type`, or NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_first"
              c:identifier="xb_silo_query_first"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo-query.c"
             line="525">Searches the silo using an XPath query, returning up to one result.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a tiny subset of XPath 1.0 is supported.</doc>
        <source-position filename="../src/xb-silo-query.h" line="24"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo-query.c"
               line="538">a #XbNode, or %NULL if unfound</doc>
          <type name="Node" c:type="XbNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="527">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="528">An XPath, e.g. `/components/component[@type=desktop]/id[abe.desktop]`</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_first_full"
              c:identifier="xb_silo_query_first_full"
              version="0.1.13"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo-query.c"
             line="471">Searches the silo using an XPath query, returning up to one result.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a tiny subset of XPath 1.0 is supported.</doc>
        <source-position filename="../src/xb-silo-query.h" line="27"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo-query.c"
               line="484">a #XbNode, or %NULL if unfound</doc>
          <type name="Node" c:type="XbNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="473">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="query" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="474">an #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_full"
              c:identifier="xb_silo_query_full"
              version="0.1.13"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo-query.c"
             line="445">Searches the silo using an XPath query.

It is safe to call this function from a different thread to the one that
created the #XbSilo.

Please note: Only a subset of XPath is supported.</doc>
        <source-position filename="../src/xb-silo-query.h" line="21"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../src/xb-silo-query.c"
               line="458">results, or %NULL if unfound</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Node"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="447">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="query" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo-query.c"
                 line="448">an #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </parameter>
        </parameters>
      </method>
      <method name="save_to_file"
              c:identifier="xb_silo_save_to_file"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="923">Saves a silo to a file.</doc>
        <source-position filename="../src/xb-silo.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="932">%TRUE for success, otherwise @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="925">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="926">a #GFile</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="927">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_enable_node_cache"
              c:identifier="xb_silo_set_enable_node_cache"
              version="0.2.0">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="759">Set #XbSilo:enable-node-cache.

This is not thread-safe, and can only be called before the #XbSilo is passed
between threads.</doc>
        <source-position filename="../src/xb-silo.h" line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="761">an #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="enable_node_cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="762">%TRUE to enable the node cache, %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_profile_flags"
              c:identifier="xb_silo_set_profile_flags"
              version="0.1.1">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="726">Enables or disables the collection of profiling data.</doc>
        <source-position filename="../src/xb-silo.h" line="92"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="728">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="profile_flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="729">some #XbSiloProfileFlags, e.g. %XB_SILO_PROFILE_FLAG_DEBUG</doc>
            <type name="SiloProfileFlags" c:type="XbSiloProfileFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string"
              c:identifier="xb_silo_to_string"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="312">Converts the silo to an internal string representation. This is only
really useful for debugging #XbSilo itself.</doc>
        <source-position filename="../src/xb-silo.h" line="81"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="320">A string, or %NULL for an error</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="314">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="watch_file"
              c:identifier="xb_silo_watch_file"
              version="0.1.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="817">Adds a file monitor to the silo. If the file or directory for @file changes
then the silo will be invalidated.</doc>
        <source-position filename="../src/xb-silo.h" line="88"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-silo.c"
               line="827">%TRUE for success, otherwise @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="819">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="820">a #GFile</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-silo.c"
                 line="821">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="enable-node-cache"
                version="0.2.0"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../src/xb-silo.c"
             line="1492">Whether to cache all #XbNode instances ever constructed in a single
cache in the #XbSilo, so that the same #XbNode instance is always
returned in query results for a given XPath. This is a form of
memoisation, and allows xb_node_get_data() and xb_node_set_data() to
be used.

This is enabled by default to preserve compatibility with older
versions of libxmlb, but most clients will want to disable it. It
adds a large memory overhead (no #XbNode is ever finalised) but
achieves moderately low hit rates for typical XML parsing workloads
where most nodes are accessed only once or twice as they are
processed and then processing moves on to other nodes.

This property can only be changed before the #XbSilo is passed
between threads. Changing it is not thread-safe.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="guid"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="valid" 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="SiloClass"
            c:type="XbSiloClass"
            glib:is-gtype-struct-for="Silo">
      <source-position filename="../src/xb-silo.h" line="28"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="_xb_reserved1" introspectable="0">
        <callback name="_xb_reserved1">
          <source-position filename="../src/xb-silo.h" line="21"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved2" introspectable="0">
        <callback name="_xb_reserved2">
          <source-position filename="../src/xb-silo.h" line="22"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved3" introspectable="0">
        <callback name="_xb_reserved3">
          <source-position filename="../src/xb-silo.h" line="23"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved4" introspectable="0">
        <callback name="_xb_reserved4">
          <source-position filename="../src/xb-silo.h" line="24"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved5" introspectable="0">
        <callback name="_xb_reserved5">
          <source-position filename="../src/xb-silo.h" line="25"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved6" introspectable="0">
        <callback name="_xb_reserved6">
          <source-position filename="../src/xb-silo.h" line="26"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_xb_reserved7" introspectable="0">
        <callback name="_xb_reserved7">
          <source-position filename="../src/xb-silo.h" line="27"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <bitfield name="SiloLoadFlags" c:type="XbSiloLoadFlags">
      <doc xml:space="preserve"
           filename="../src/xb-silo.h"
           line="30">The flags for loading a silo.</doc>
      <source-position filename="../src/xb-silo.h" line="44"/>
      <member name="none" value="0" c:identifier="XB_SILO_LOAD_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../src/xb-silo.h"
             line="32">No extra flags to use</doc>
      </member>
      <member name="no_magic"
              value="1"
              c:identifier="XB_SILO_LOAD_FLAG_NO_MAGIC">
        <doc xml:space="preserve"
             filename="../src/xb-silo.h"
             line="33">No not check header signature</doc>
      </member>
      <member name="watch_blob"
              value="2"
              c:identifier="XB_SILO_LOAD_FLAG_WATCH_BLOB">
        <doc xml:space="preserve"
             filename="../src/xb-silo.h"
             line="34">Watch the XMLB file for changes</doc>
      </member>
    </bitfield>
    <bitfield name="SiloProfileFlags" c:type="XbSiloProfileFlags">
      <doc xml:space="preserve"
           filename="../src/xb-silo.h"
           line="46">The flags used when profiling a silo.</doc>
      <source-position filename="../src/xb-silo.h" line="62"/>
      <member name="none" value="0" c:identifier="XB_SILO_PROFILE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="../src/xb-silo.h"
             line="48">No extra flags to use</doc>
      </member>
      <member name="debug" value="1" c:identifier="XB_SILO_PROFILE_FLAG_DEBUG">
        <doc xml:space="preserve"
             filename="../src/xb-silo.h"
             line="49">Output profiling as debug</doc>
      </member>
      <member name="append"
              value="2"
              c:identifier="XB_SILO_PROFILE_FLAG_APPEND">
        <doc xml:space="preserve"
             filename="../src/xb-silo.h"
             line="50">Save profiling in an appended string</doc>
      </member>
      <member name="xpath" value="4" c:identifier="XB_SILO_PROFILE_FLAG_XPATH">
        <doc xml:space="preserve"
             filename="../src/xb-silo.h"
             line="51">Save XPATH queries</doc>
      </member>
    </bitfield>
    <record name="Stack"
            c:type="XbStack"
            glib:type-name="XbStack"
            glib:get-type="xb_stack_get_type"
            c:symbol-prefix="stack">
      <source-position filename="../src/xb-stack.h" line="15"/>
      <method name="pop"
              c:identifier="xb_stack_pop"
              version="0.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-stack.c"
             line="61">Pops an opcode off the stack.</doc>
        <source-position filename="../src/xb-stack.h" line="19"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-stack.c"
               line="69">%TRUE if popping succeeded, %FALSE if the stack was empty already</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-stack.c"
                 line="63">a #XbStack</doc>
            <type name="Stack" c:type="XbStack*"/>
          </instance-parameter>
          <parameter name="opcode_out"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../src/xb-stack.c"
                 line="64">return location for the popped #XbOpcode</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="push"
              c:identifier="xb_stack_push"
              version="0.2.0"
              throws="1">
        <doc xml:space="preserve"
             filename="../src/xb-stack.c"
             line="161">Pushes a new empty opcode onto the end of the stack. A pointer to the opcode
is returned in @opcode_out so that the caller can initialise it. This must be
done before the stack is next used as, for performance reasons, the newly
pushed opcode is not zero-initialised.</doc>
        <source-position filename="../src/xb-stack.h" line="22"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-stack.c"
               line="172">%TRUE if a new empty opcode was returned, or %FALSE if the stack has
   reached its maximum size</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-stack.c"
                 line="163">a #XbStack</doc>
            <type name="Stack" c:type="XbStack*"/>
          </instance-parameter>
          <parameter name="opcode_out"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="../src/xb-stack.c"
                 line="164">return location for the new #XbOpcode</doc>
            <type name="Opcode" c:type="XbOpcode**"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string"
              c:identifier="xb_stack_to_string"
              version="0.1.4">
        <doc xml:space="preserve"
             filename="../src/xb-stack.c"
             line="227">Returns a string representing a stack.</doc>
        <source-position filename="../src/xb-stack.h" line="18"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../src/xb-stack.c"
               line="233">text</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../src/xb-stack.c"
                 line="229">a #XbStack</doc>
            <type name="Stack" c:type="XbStack*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <function name="opcode_kind_from_string"
              c:identifier="xb_opcode_kind_from_string"
              moved-to="Opcode.kind_from_string"
              version="0.1.1">
      <doc xml:space="preserve"
           filename="../src/xb-opcode.c"
           line="47">Converts a string to an opcode kind.</doc>
      <source-position filename="../src/xb-opcode.h" line="72"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="53">a #XbOpcodeKind, e.g. %XB_OPCODE_KIND_TEXT</doc>
        <type name="OpcodeKind" c:type="XbOpcodeKind"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-opcode.c"
               line="49">a string, e.g. `FUNC`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="opcode_kind_to_string"
              c:identifier="xb_opcode_kind_to_string"
              moved-to="Opcode.kind_to_string"
              version="0.1.1">
      <doc xml:space="preserve"
           filename="../src/xb-opcode.c"
           line="15">Converts the opcode kind to a string.</doc>
      <source-position filename="../src/xb-opcode.h" line="71"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="../src/xb-opcode.c"
             line="21">opcode kind, e.g. `FUNC`</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="kind" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-opcode.c"
               line="17">a #XbOpcodeKind, e.g. %XB_OPCODE_KIND_FUNCTION</doc>
          <type name="OpcodeKind" c:type="XbOpcodeKind"/>
        </parameter>
      </parameters>
    </function>
    <function name="string_append_union"
              c:identifier="xb_string_append_union"
              version="0.1.2"
              introspectable="0">
      <doc xml:space="preserve"
           filename="../src/xb-string.c"
           line="79">Appends an XPath query into the string, automatically adding the union
operator (`|`) if required.</doc>
      <source-position filename="../src/xb-string.h" line="13"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="xpath" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-string.c"
               line="81">The #GString to operate on</doc>
          <type name="GLib.String" c:type="GString*"/>
        </parameter>
        <parameter name="fmt" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-string.c"
               line="82">The format string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-string.c"
               line="83">varargs for @fmt</doc>
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="string_escape"
              c:identifier="xb_string_escape"
              version="0.1.2">
      <doc xml:space="preserve"
           filename="../src/xb-string.c"
           line="181">Escapes XPath control sequences such as newlines, tabs, and forward slashes.</doc>
      <source-position filename="../src/xb-string.h" line="16"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="../src/xb-string.c"
             line="187">new string that is safe to use for queries</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../src/xb-string.c"
               line="183">string, e.g. `app/org.gnome.ghex/x86_64/stable`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
