<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:doc="http://www.gtk.org/introspection/doc/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <package name="xmlb"/>
  <c:include name="xmlb.h"/>
  <doc:format name="unknown"/>
  <namespace name="Xmlb"
             version="2.0"
             shared-library="libxmlb.so.0.2"
             c:identifier-prefixes="Xb"
             c:symbol-prefixes="xb,xmlb,libxmlb">
    <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="31"/>
      <constructor name="new" c:identifier="xb_builder_new" version="0.1.0">
        <doc xml:space="preserve"
             filename="src/xb-builder.c"
             line="1272">Creates a new builder.

The #XbSilo returned by the methods of this #XbBuilder will use the
thread-default main context at the time of calling this function for its
future signal emissions.</doc>
        <source-position filename="src/xb-builder.h" line="58"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-builder.c"
               line="1281">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="1213">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="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.c"
                 line="1215">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="1216">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="755">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="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.c"
                 line="757">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="758">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="1178">Adds the GUID to the internal correctness hash.</doc>
        <source-position filename="src/xb-builder.h" line="60"/>
        <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="1180">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="1181">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="821">Compiles a #XbSilo.</doc>
        <source-position filename="src/xb-builder.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-builder.c"
               line="830">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="823">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="824">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="825">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="1078">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.

The returned #XbSilo will use the thread-default main context at the time of
calling this function for its future signal emissions.</doc>
        <source-position filename="src/xb-builder.h" line="71"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-builder.c"
               line="1094">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="1080">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="1081">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="1082">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="1083">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="727">Adds a node tree to the builder.

If you are manually adding dynamic data sourced from a non-static source then you MUST use
xb_builder_append_guid() with the appropriate GUID value, e.g. the file name and mtime.

If no appropriate value is available, the caller can use something like:

    g_autofree gchar *tmp = xb_builder_node_export(bn, XB_NODE_EXPORT_FLAG_NONE, NULL);
    xb_builder_append_guid(builder, tmp);

Failure to include an appropriate GUID value would allow an out-of-data silo to be used.</doc>
        <source-position filename="src/xb-builder.h" line="64"/>
        <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="729">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="730">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="223">Adds a #XbBuilderSource to the #XbBuilder.</doc>
        <source-position filename="src/xb-builder.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-builder.c"
                 line="225">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="226">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="1196">Enables or disables the collection of profiling data.</doc>
        <source-position filename="src/xb-builder.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.c"
                 line="1198">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="1199">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="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.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.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.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.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.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.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.h" line="30"/>
          <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="33">The flags for converting to XML.</doc>
      <source-position filename="src/xb-builder.h" line="55"/>
      <member name="none"
              value="0"
              c:identifier="XB_BUILDER_COMPILE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="src/xb-builder.h"
             line="35">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="36">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="37">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="38">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="39">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="40">Ignore the cache GUID value</doc>
      </member>
      <member name="single_root"
              value="64"
              c:identifier="XB_BUILDER_COMPILE_FLAG_SINGLE_ROOT">
        <doc xml:space="preserve"
             filename="src/xb-builder.h"
             line="41">Require at most one root node</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="27"/>
      <constructor name="new"
                   c:identifier="xb_builder_fixup_new"
                   version="0.1.3">
        <doc xml:space="preserve"
             filename="src/xb-builder-fixup.c"
             line="174">Creates a function that will get run on every #XbBuilderNode compile creates.</doc>
        <source-position filename="src/xb-builder-fixup.h" line="35"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-builder-fixup.c"
               line="183">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="176">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="177">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="178">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="179">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="108">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="114">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="110">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="126">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="42"/>
        <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="128">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="129">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="27"/>
      <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="20"/>
          <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="21"/>
          <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="22"/>
          <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="23"/>
          <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="24"/>
          <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="25"/>
          <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="26"/>
          <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="29"/>
      <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="27"/>
      <constructor name="new"
                   c:identifier="xb_builder_node_new"
                   version="0.1.0">
        <doc xml:space="preserve"
             filename="src/xb-builder-node.c"
             line="989">Creates a new builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="58"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="995">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="991">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="519">Adds a child builder node.</doc>
        <source-position filename="src/xb-builder-node.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-builder-node.c"
                 line="521">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="522">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="70">Adds a flag to 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="72">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="73">a #XbBuilderNodeFlags</doc>
            <type name="BuilderNodeFlags" c:type="XbBuilderNodeFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_token"
              c:identifier="xb_builder_node_add_token"
              version="0.3.1">
        <doc xml:space="preserve"
             filename="src/xb-builder-node.c"
             line="1193">Adds a token to the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="133"/>
        <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="1195">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="token" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-builder-node.c"
                 line="1196">a new token</doc>
            <type name="utf8" c:type="const gchar*"/>
          </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="499">Gets the depth of the node tree, where 0 is the root node.</doc>
        <source-position filename="src/xb-builder-node.h" line="116"/>
        <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="501">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="1163">Exports the node to XML.</doc>
        <source-position filename="src/xb-builder-node.h" line="128"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="1171">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="1165">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="1166">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="135">Gets an attribute from the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="90"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="142">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="137">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="138">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="164">Gets an attribute from the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="92"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="171">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="166">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="167">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="675">Finds a child builder node by the element name, and optionally text value.</doc>
        <source-position filename="src/xb-builder-node.h" line="109"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="683">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="677">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="678">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="679">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="611">Gets the children of the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="103"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="617">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="613">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="99">Gets the element 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="105">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="101">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="635">Gets the first child of the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="105"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="641">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="637">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="655">Gets the last child of the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="107"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="661">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="657">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="591">Gets the parent node for the current node.</doc>
        <source-position filename="src/xb-builder-node.h" line="114"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="597">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="593">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="225">Gets the tail from the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="231">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="227">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="186">Gets the text from the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="76"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="192">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="188">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="204">Gets the text from the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="210">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="206">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_tokens"
              c:identifier="xb_builder_node_get_tokens"
              version="0.3.1">
        <doc xml:space="preserve"
             filename="src/xb-builder-node.c"
             line="1215">Gets the tokens of the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="131"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="1221">tokens</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-builder-node.c"
                 line="1217">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="51">Checks a flag on the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="58">%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="53">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="54">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="1008">Creates a new builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="60"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-builder-node.c"
               line="1016">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="1010">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="1011">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="1012">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="1048">Creates a new builder node with optional node text.</doc>
        <source-position filename="src/xb-builder-node.h" line="64"/>
        <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="1050">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="1051">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="1052">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="1053">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="470">Removes an attribute from the builder node.</doc>
        <source-position filename="src/xb-builder-node.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-builder-node.c"
                 line="472">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="473">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="546">Removes a child builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="101"/>
        <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="548">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="549">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="428">Adds an attribute to the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="94"/>
        <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="430">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="431">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="432">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="117">Sets the element name 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="119">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="120">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="405">Sets the tail on the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="87"/>
        <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="407">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="tail"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/xb-builder-node.c"
                 line="408">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="409">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="374">Sets the text on the builder node.</doc>
        <source-position filename="src/xb-builder-node.h" line="80"/>
        <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="376">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-parameter>
          <parameter name="text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/xb-builder-node.c"
                 line="377">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="378">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="800">Sorts the node children using a custom sort function.</doc>
        <source-position filename="src/xb-builder-node.h" line="125"/>
        <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="802">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="803">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="804">user pointer to pass to @func, or %NULL</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="tokenize_text"
              c:identifier="xb_builder_node_tokenize_text"
              version="0.3.1">
        <doc xml:space="preserve"
             filename="src/xb-builder-node.c"
             line="311">Tokenize text added with xb_builder_node_set_text().

When searching, libxmlb often has to tokenize strings before they can be
compared. This is done in the "fast path" and makes searching for non-ASCII
text much slower.

Adding the tokens to the deduplicated string table allows much faster
searching at the expense of a ~5% size increase of the silo.

This function adds all valid UTF-8 and ASCII search words generated from
the value of xb_builder_node_set_text().

The transliteration locale (e.g. `en_GB`) is read from the `xml:lang`
node attribute if set.</doc>
        <source-position filename="src/xb-builder-node.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-node.c"
                 line="313">a #XbBuilderNode</doc>
            <type name="BuilderNode" c:type="XbBuilderNode*"/>
          </instance-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="748">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="118"/>
        <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="750">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="751">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="752">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="753">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="754">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="755">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="568">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="112"/>
        <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="570">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="27"/>
      <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="20"/>
          <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="21"/>
          <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="22"/>
          <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="23"/>
          <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="24"/>
          <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="25"/>
          <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="26"/>
          <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="29">The flags used when building a node.</doc>
      <source-position filename="src/xb-builder-node.h" line="52"/>
      <member name="none" value="0" c:identifier="XB_BUILDER_NODE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="src/xb-builder-node.h"
             line="31">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="32">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="33">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="34">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="35">If the node has trailing text</doc>
      </member>
      <member name="tokenize_text"
              value="16"
              c:identifier="XB_BUILDER_NODE_FLAG_TOKENIZE_TEXT">
        <doc xml:space="preserve"
             filename="src/xb-builder-node.h"
             line="36">Tokenize and fold text to ASCII (Since: 0.3.1)</doc>
      </member>
      <member name="strip_text"
              value="32"
              c:identifier="XB_BUILDER_NODE_FLAG_STRIP_TEXT">
        <doc xml:space="preserve"
             filename="src/xb-builder-node.h"
             line="37">Strip leading and trailing spaces from text (Since:
0.3.4)</doc>
      </member>
    </bitfield>
    <callback name="BuilderNodeSortFunc" c:type="XbBuilderNodeSortFunc">
      <source-position filename="src/xb-builder-node.h" line="55"/>
      <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="54"/>
      <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="30"/>
      <constructor name="new"
                   c:identifier="xb_builder_source_new"
                   version="0.1.1">
        <doc xml:space="preserve"
             filename="src/xb-builder-source.c"
             line="628">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="633">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="302">Adds a function that can be used to convert streams loaded with
xb_builder_source_load_xml().

This will decompress multiple layers of content, for instance decompressing a gzip stream into a
different content type that can then be parsed. Use xb_builder_source_add_simple_adapter() when
this recursive behaviour is not desired.</doc>
        <source-position filename="src/xb-builder-source.h" line="87"/>
        <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="304">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="305">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="306">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="307">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="308">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="254">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="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-source.c"
                 line="256">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="257">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="329">Adds a function that can be used to convert streams loaded with
xb_builder_source_load_xml().

This function is similar to xb_builder_source_add_adapter() but is limited to one "layer" of
content, for instance handling application/xml or a single simple type added using
xb_builder_source_add_adapter().</doc>
        <source-position filename="src/xb-builder-source.h" line="93"/>
        <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="331">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="332">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="333">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="334">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="335">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="212">Loads XML data and begins to build a #XbSilo.</doc>
        <source-position filename="src/xb-builder-source.h" line="76"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-source.c"
               line="221">%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="214">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="215">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="216">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="60">Loads an optionally compressed XML file to build a #XbSilo.</doc>
        <source-position filename="src/xb-builder-source.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-source.c"
               line="70">%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="62">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="63">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="64">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="65">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="170">Loads XML data and begins to build a #XbSilo.</doc>
        <source-position filename="src/xb-builder-source.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-builder-source.c"
               line="179">%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="172">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="173">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="174">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="134">Sets an optional information metadata node on the root node.</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="136">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="137">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="151">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="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="153">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="154">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="56"/>
      <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="30"/>
      <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="23"/>
          <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="24"/>
          <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="25"/>
          <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="26"/>
          <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="27"/>
          <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="28"/>
          <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="29"/>
          <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="82">Returns the data currently being processed.

If the #XbBuilderSourceCtx is backed by a file, the returned #GBytes may be
memory-mapped, and the backing file must not be modified until the #GBytes is
destroyed.</doc>
        <source-position filename="src/xb-builder-source-ctx.h" line="33"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-builder-source-ctx.c"
               line="94">a #GBytes</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="84">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="85">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="125">Returns the basename of the file currently being processed.</doc>
        <source-position filename="src/xb-builder-source-ctx.h" line="31"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/xb-builder-source-ctx.c"
               line="131">a basename, 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="127">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="26">Returns the input stream 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="32">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="28">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="32">The flags for converting to XML.</doc>
      <source-position filename="src/xb-builder-source.h" line="50"/>
      <member name="none" value="0" c:identifier="XB_BUILDER_SOURCE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="src/xb-builder-source.h"
             line="34">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="35">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="36">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="37">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="52"/>
      <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>
    <function-macro name="CHECK_VERSION"
                    c:identifier="LIBXMLB_CHECK_VERSION"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="src/xb-version.h"
           line="45">Check whether a libxmlb version equal to or greater than
major.minor.micro.</doc>
      <source-position filename="src/xb-version.h" line="54"/>
      <parameters>
        <parameter name="major">
          <doc xml:space="preserve"
               filename="src/xb-version.h"
               line="47">Major version number</doc>
        </parameter>
        <parameter name="minor">
          <doc xml:space="preserve"
               filename="src/xb-version.h"
               line="48">Minor version number</doc>
        </parameter>
        <parameter name="micro">
          <doc xml:space="preserve"
               filename="src/xb-version.h"
               line="49">Micro version number</doc>
        </parameter>
      </parameters>
    </function-macro>
    <constant name="MAJOR_VERSION" value="0" c:type="XMLB_MAJOR_VERSION">
      <doc xml:space="preserve"
           filename="src/xb-version.h"
           line="18">The compile-time major version</doc>
      <source-position filename="src/xb-version.h" line="24"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MICRO_VERSION" value="27" c:type="XMLB_MICRO_VERSION">
      <doc xml:space="preserve"
           filename="src/xb-version.h"
           line="36">The compile-time micro version</doc>
      <source-position filename="src/xb-version.h" line="42"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MINOR_VERSION" value="3" c:type="XMLB_MINOR_VERSION">
      <doc xml:space="preserve"
           filename="src/xb-version.h"
           line="27">The compile-time minor version</doc>
      <source-position filename="src/xb-version.h" line="33"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <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="28"/>
      <constructor name="new" c:identifier="xb_machine_new" version="0.1.1">
        <doc xml:space="preserve"
             filename="src/xb-machine.c"
             line="2431">Creates a new virtual machine.</doc>
        <source-position filename="src/xb-machine.h" line="84"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="2436">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="125">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="125"/>
        <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="127">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="128">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="129">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="130">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="131">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="132">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="171">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="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="173">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="174">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="175">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="176">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="177">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="93">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="132"/>
        <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="95">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="96">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="97">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="200">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="120"/>
        <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="202">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="203">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="204">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="205">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="1364">Gets the maximum stack size used for the machine.</doc>
        <source-position filename="src/xb-machine.h" line="160"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="1370">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="1366">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="238">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="136"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="248">%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="240">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="241">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="242">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="866">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="89"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="877">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="868">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="869">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="870">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="787">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="92"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="799">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="789">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="790">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="791">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="792">#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"
              deprecated="1"
              deprecated-version="0.3.0"
              throws="1">
        <doc xml:space="preserve"
             filename="src/xb-machine.c"
             line="935">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>
        <doc-deprecated xml:space="preserve">Use xb_machine_run_with_bindings() instead.</doc-deprecated>
        <source-position filename="src/xb-machine.h" line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="948">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="937">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="938">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="939">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="940">per-run user data that is passed to all the #XbMachineMethodFunc functions</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="run_with_bindings"
              c:identifier="xb_machine_run_with_bindings"
              version="0.3.0"
              throws="1">
        <doc xml:space="preserve"
             filename="src/xb-machine.c"
             line="963">Runs a set of opcodes on the virtual machine, using the bound values given in
@bindings to substitute for bound opcodes.

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="106"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="980">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="965">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="966">a #XbStack of opcodes</doc>
            <type name="Stack" c:type="XbStack*"/>
          </parameter>
          <parameter name="bindings"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/xb-machine.c"
                 line="967">values bound to opcodes of type
    %XB_OPCODE_KIND_BOUND_INTEGER or %XB_OPCODE_KIND_BOUND_TEXT, or %NULL if
    the query doesn’t need any bound values</doc>
            <type name="ValueBindings" c:type="XbValueBindings*"/>
          </parameter>
          <parameter name="result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/xb-machine.c"
                 line="970">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="971">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="76">Sets the debug level of the virtual machine.</doc>
        <source-position filename="src/xb-machine.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-machine.c"
                 line="78">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="79">#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="1342">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="158"/>
        <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="1344">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="1345">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="1114">Pops an opcode from the stack.</doc>
        <source-position filename="src/xb-machine.h" line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="1123">%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="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="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="1118">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="1185">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="143"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="1197">%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="1187">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="1188">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="1189">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="1310">Adds an integer literal to the stack.

Errors are as for xb_machine_stack_push().</doc>
        <source-position filename="src/xb-machine.h" line="155"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="1321">%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="1312">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="1313">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="1314">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="1213">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="146"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="1224">%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="1215">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="1216">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="1217">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="1245">Adds static text literal to the stack.

Errors are as for xb_machine_stack_push().</doc>
        <source-position filename="src/xb-machine.h" line="149"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="1256">%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="1247">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="1248">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="1249">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="1277">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="152"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-machine.c"
               line="1288">%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="1279">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="1280">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="1281">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="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-machine.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-machine.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-machine.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-machine.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-machine.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-machine.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-machine.h" line="27"/>
          <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="30">The flags to control the amount of debugging is generated.</doc>
      <source-position filename="src/xb-machine.h" line="48"/>
      <member name="none" value="0" c:identifier="XB_MACHINE_DEBUG_FLAG_NONE">
        <doc xml:space="preserve"
             filename="src/xb-machine.h"
             line="32">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="33">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="34">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="35">Show the optimizer operation</doc>
      </member>
      <member name="show_slow_path"
              value="8"
              c:identifier="XB_MACHINE_DEBUG_FLAG_SHOW_SLOW_PATH">
        <doc xml:space="preserve"
             filename="src/xb-machine.h"
             line="36">Show the query slow paths</doc>
      </member>
    </bitfield>
    <callback name="MachineMethodFunc" c:type="XbMachineMethodFunc" throws="1">
      <source-position filename="src/xb-machine.h" line="76"/>
      <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="64"/>
      <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="50">The flags to control the parsing behaviour.</doc>
      <source-position filename="src/xb-machine.h" line="62"/>
      <member name="none" value="0" c:identifier="XB_MACHINE_PARSE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="src/xb-machine.h"
             line="52">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="53">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="69"/>
      <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="654">Exports the node back to XML.</doc>
        <source-position filename="src/xb-node.h" line="81"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="662">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="656">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="657">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="503">Gets some attribute text data for a specific node.</doc>
        <source-position filename="src/xb-node.h" line="106"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="510">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="505">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="506">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="531">Gets some attribute text data for a specific node.</doc>
        <source-position filename="src/xb-node.h" line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="538">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="533">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="534">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="237">Gets the first child node for the current node.</doc>
        <source-position filename="src/xb-node.h" line="94"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="243">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="239">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="263">Gets all the children for the current node.</doc>
        <source-position filename="src/xb-node.h" line="96"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="269">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="265">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="72">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="83"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="84">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="74">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="75">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="634">Gets the depth of the node to a root.</doc>
        <source-position filename="src/xb-node.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="640">a integer, where 0 is the root node itself.</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="636">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="483">Gets the element name for a specific node.</doc>
        <source-position filename="src/xb-node.h" line="98"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="489">a string, or %NULL for the root node</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="485">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="211">Gets the next sibling node for the current node.</doc>
        <source-position filename="src/xb-node.h" line="92"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="217">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="213">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="185">Gets the parent node for the current node.</doc>
        <source-position filename="src/xb-node.h" line="90"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="191">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="187">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="161">Gets the root node for the node.</doc>
        <source-position filename="src/xb-node.h" line="88"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="167">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="163">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="144">Gets the #XbSilo for the node.</doc>
        <source-position filename="src/xb-node-silo.h" line="15"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="150">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="146">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="461">Gets the tail data for a specific node.</doc>
        <source-position filename="src/xb-node.h" line="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="467">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="463">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="416">Gets the text data for a specific node.</doc>
        <source-position filename="src/xb-node.h" line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="422">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="418">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="438">Gets some attribute text data for a specific node.</doc>
        <source-position filename="src/xb-node.h" line="102"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="444">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="440">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="19">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="18"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="src/xb-node-query.c"
               line="33">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="21">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="22">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="23">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="249">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="42"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node-query.c"
               line="263">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="251">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="252">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="253">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="370">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="45"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node-query.c"
               line="384">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="372">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="373">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="374">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="293">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="48"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node-query.c"
               line="307">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="295">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="296">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="179">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="27"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-node-query.c"
               line="189">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="181">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="182">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="113">Searches the silo using a prepared query, returning up to one result. To
search using a query with bound values, use
xb_node_query_first_with_context().

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="30"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-node-query.c"
               line="128">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="115">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="116">an #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_first_with_context"
              c:identifier="xb_node_query_first_with_context"
              version="0.3.0"
              throws="1">
        <doc xml:space="preserve"
             filename="src/xb-node-query.c"
             line="138">Searches the silo using a 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="32"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-node-query.c"
               line="154">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="140">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="141">an #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </parameter>
          <parameter name="context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/xb-node-query.c"
                 line="142">context including values bound to opcodes of type
    %XB_OPCODE_KIND_BOUND_INTEGER or %XB_OPCODE_KIND_BOUND_TEXT, or %NULL if
    the query doesn’t need any context</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </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="46">Searches the silo using a prepared query. To search using a query with
bound values, use xb_node_query_with_context().

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="21"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="src/xb-node-query.c"
               line="60">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="48">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="49">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="209">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="38"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node-query.c"
               line="222">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="211">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="212">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="335">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="40"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node-query.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-query.c"
                 line="337">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="338">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_with_context"
              c:identifier="xb_node_query_with_context"
              version="0.3.0"
              throws="1">
        <doc xml:space="preserve"
             filename="src/xb-node-query.c"
             line="78">Searches the silo using a prepared query, substituting values from the
bindings in @context for bound opcodes as needed.

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="23"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="src/xb-node-query.c"
               line="95">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="80">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="81">an #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </parameter>
          <parameter name="context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/xb-node-query.c"
                 line="82">context including values bound to opcodes of type
    %XB_OPCODE_KIND_BOUND_INTEGER or %XB_OPCODE_KIND_BOUND_TEXT, or %NULL if
    the query doesn’t need any context</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </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="98">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="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-node.c"
                 line="100">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="101">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="102">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="678">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="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="692">%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="680">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="681">(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="682">(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="683">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="NodeAttrIter" c:type="XbNodeAttrIter" version="0.3.4">
      <doc xml:space="preserve"
           filename="src/xb-node.c"
           line="26">A #XbNodeAttrIter structure represents an iterator that can be used
to iterate over the attributes of a #XbNode. #XbNodeAttrIter
structures are typically allocated on the stack and then initialized
with xb_node_attr_iter_init().

The iteration order of a #XbNodeAttrIter is not defined.</doc>
      <source-position filename="src/xb-node.h" line="61"/>
      <field name="dummy1" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy2" readable="0" private="1">
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="dummy3" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy4" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy5" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy6" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <method name="init"
              c:identifier="xb_node_attr_iter_init"
              version="0.3.4">
        <doc xml:space="preserve"
             filename="src/xb-node.c"
             line="558">Initializes a name/value pair iterator for the node attributes
and associates it with @self.
The #XbNodeAttrIter structure is typically allocated on the stack
and does not need to be freed explicitly.</doc>
        <source-position filename="src/xb-node.h" line="113"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-node.c"
                 line="560">an uninitialized #XbNodeAttrIter</doc>
            <type name="NodeAttrIter" c:type="XbNodeAttrIter*"/>
          </instance-parameter>
          <parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-node.c"
                 line="561">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="next"
              c:identifier="xb_node_attr_iter_next"
              version="0.3.4">
        <doc xml:space="preserve"
             filename="src/xb-node.c"
             line="582">Returns the current attribute name and value and advances the iterator.
Example:
|[&lt;!-- language="C" --&gt;
XbNodeAttrIter iter;
const gchar *attr_name;
const gchar *attr_value;

xb_node_attr_iter_init (&amp;iter, node);
while (xb_node_attr_iter_next (&amp;iter, &amp;attr_name, &amp;attr_value)) {
    // use attr_name and attr_value; no need to free them
}
]|</doc>
        <source-position filename="src/xb-node.h" line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="601">%TRUE if there are more attributes.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-node.c"
                 line="584">an initialized #XbNodeAttrIter</doc>
            <type name="NodeAttrIter" c:type="XbNodeAttrIter*"/>
          </instance-parameter>
          <parameter name="name"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/xb-node.c"
                 line="585">Destination of the returned attribute name</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
          <parameter name="value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/xb-node.c"
                 line="586">Destination of the returned attribute value</doc>
            <type name="utf8" c:type="const gchar**"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <record name="NodeChildIter" c:type="XbNodeChildIter" version="0.3.4">
      <doc xml:space="preserve"
           filename="src/xb-node.c"
           line="50">A #XbNodeChildIter structure represents an iterator that can be used
to iterate over the children of a #XbNode. #XbNodeChildIter
structures are typically allocated on the stack and then initialized
with xb_node_child_iter_init().</doc>
      <source-position filename="src/xb-node.h" line="71"/>
      <field name="dummy1" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy2" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy3" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="dummy4" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy5" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="dummy6" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <method name="init"
              c:identifier="xb_node_child_iter_init"
              version="0.3.4">
        <doc xml:space="preserve"
             filename="src/xb-node.c"
             line="288">Initializes a child iterator for the node's children and associates
it with @self.
The #XbNodeChildIter structure is typically allocated on the stack
and does not need to be freed explicitly.</doc>
        <source-position filename="src/xb-node.h" line="119"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-node.c"
                 line="290">an uninitialized #XbNodeChildIter</doc>
            <type name="NodeChildIter" c:type="XbNodeChildIter*"/>
          </instance-parameter>
          <parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-node.c"
                 line="291">a #XbNode</doc>
            <type name="Node" c:type="XbNode*"/>
          </parameter>
        </parameters>
      </method>
      <method name="loop"
              c:identifier="xb_node_child_iter_loop"
              version="0.3.4"
              introspectable="0">
        <doc xml:space="preserve"
             filename="src/xb-node.c"
             line="359">Returns the current child and advances the iterator.
On the first call to this function, the @child pointer is assumed to point
at uninitialised memory.
On any later calls, it is assumed that the same pointers
will be given and that they will point to the memory as set by the
previous call to this function. This allows the previous values to
be freed, as appropriate.

Example:
|[&lt;!-- language="C" --&gt;
XbNodeChildIter iter;
XbNode *child;

xb_node_child_iter_init (&amp;iter, node);
while (xb_node_child_iter_loop (&amp;iter, &amp;child)) {
    // do something with the node child
    // no need to free 'child' unless breaking out of this loop
}
]|</doc>
        <source-position filename="src/xb-node.h" line="123"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="384">%FALSE if the last child has been reached.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-node.c"
                 line="361">an initialized #XbNodeAttrIter</doc>
            <type name="NodeChildIter" c:type="XbNodeChildIter*"/>
          </instance-parameter>
          <parameter name="child"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/xb-node.c"
                 line="362">Destination of the returned child</doc>
            <type name="Node" c:type="XbNode**"/>
          </parameter>
        </parameters>
      </method>
      <method name="next"
              c:identifier="xb_node_child_iter_next"
              version="0.3.4">
        <doc xml:space="preserve"
             filename="src/xb-node.c"
             line="314">Returns the current child and advances the iterator.
The retrieved #XbNode child needs to be dereferenced with g_object_unref().
Example:
|[&lt;!-- language="C" --&gt;
XbNodeChildIter iter;
g_autoptr(XbNode) child = NULL;

xb_node_child_iter_init (&amp;iter, node);
while (xb_node_child_iter_next (&amp;iter, &amp;child)) {
    // do something with the node child
    g_clear_pointer (&amp;child, g_object_unref);
}
]|</doc>
        <source-position filename="src/xb-node.h" line="121"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-node.c"
               line="333">%FALSE if the last child has been reached.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-node.c"
                 line="316">an initialized #XbNodeAttrIter</doc>
            <type name="NodeChildIter" c:type="XbNodeChildIter*"/>
          </instance-parameter>
          <parameter name="child"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/xb-node.c"
                 line="317">Destination of the returned child</doc>
            <type name="Node" c:type="XbNode**"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <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="51"/>
      <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>
      <member name="collapse_empty"
              value="32"
              c:identifier="XB_NODE_EXPORT_FLAG_COLLAPSE_EMPTY">
        <doc xml:space="preserve"
             filename="src/xb-node.h"
             line="36">If node has no children, collapse open and close
tags</doc>
      </member>
    </bitfield>
    <callback name="NodeTransmogrifyFunc" c:type="XbNodeTransmogrifyFunc">
      <source-position filename="src/xb-node.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="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" opaque="1">
      <source-position filename="src/xb-opcode.h" line="74"/>
      <method name="cmp_str" c:identifier="xb_opcode_cmp_str" version="0.1.1">
        <doc xml:space="preserve"
             filename="src/xb-opcode.c"
             line="229">Checks if the opcode can be compared using the string value.</doc>
        <source-position filename="src/xb-opcode.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-opcode.c"
               line="235">#%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="231">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="213">Checks if the opcode can be compared using the integer value.</doc>
        <source-position filename="src/xb-opcode.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-opcode.c"
               line="219">#%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="215">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="395">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="96"/>
        <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-opcode.c"
                 line="397">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="398">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="165">Gets the opcode kind.</doc>
        <source-position filename="src/xb-opcode.h" line="89"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-opcode.c"
               line="171">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="167">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="269">Gets the string value stored on the opcode.</doc>
        <source-position filename="src/xb-opcode.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-opcode.c"
               line="275">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="271">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="252">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="93"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-opcode.c"
               line="259">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="254">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="480">Initialises a stack allocated #XbOpcode to contain an integer literal.</doc>
        <source-position filename="src/xb-opcode.h" line="98"/>
        <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-opcode.c"
                 line="482">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="483">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="318">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="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-opcode.c"
                 line="320">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="321">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="363">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="102"/>
        <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-opcode.c"
                 line="365">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="366">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="379">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="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-opcode.c"
                 line="381">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="382">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="141">Returns a string representing the specific opcode.</doc>
        <source-position filename="src/xb-opcode.h" line="82"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-opcode.c"
               line="147">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="143">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="52">Converts a string to an opcode kind.</doc>
        <source-position filename="src/xb-opcode.h" line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-opcode.c"
               line="58">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="54">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="84"/>
        <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
token┐ │ │ │ │
 X X X X X X X
       8 4 2 1</doc>
      <source-position filename="src/xb-opcode.h" line="41"/>
      <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>
      <member name="tokenized"
              value="32"
              c:identifier="XB_OPCODE_FLAG_TOKENIZED">
        <doc xml:space="preserve"
             filename="src/xb-opcode.h"
             line="20">Tokenized text</doc>
      </member>
    </bitfield>
    <enumeration name="OpcodeKind" c:type="XbOpcodeKind">
      <source-position filename="src/xb-opcode.h" line="72"/>
      <member name="unknown" value="0" c:identifier="XB_OPCODE_KIND_UNKNOWN">
        <doc xml:space="preserve"
             filename="src/xb-opcode.h"
             line="45">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="46">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="47">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="48">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="49">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="50">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="51">An indexed text value</doc>
      </member>
      <member name="boolean" value="17" c:identifier="XB_OPCODE_KIND_BOOLEAN">
      </member>
      <member name="bound_indexed_text"
              value="11"
              c:identifier="XB_OPCODE_KIND_BOUND_INDEXED_TEXT">
        <doc xml:space="preserve"
             filename="src/xb-opcode.h"
             line="52">An bound indexed text value</doc>
      </member>
    </enumeration>
    <function-macro name="QUERY_CONTEXT_INIT"
                    c:identifier="XB_QUERY_CONTEXT_INIT"
                    version="0.3.0"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="src/xb-query-context.h"
           line="39">Static initialiser for #XbQueryContext so it can be used on the stack.

Use it in association with g_auto(), to ensure the bindings are freed once
finished with:
|[
g_auto(XbQueryContext) context = XB_QUERY_CONTEXT_INIT ();

xb_query_context_set_limit (&amp;context, 0);
]|</doc>
      <source-position filename="src/xb-query-context.h" line="54"/>
    </function-macro>
    <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="26"/>
      <constructor name="new"
                   c:identifier="xb_query_new"
                   version="0.1.4"
                   throws="1">
        <doc xml:space="preserve"
             filename="src/xb-query.c"
             line="561">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="51"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-query.c"
               line="570">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="563">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="564">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="508">Creates a query to be used by @silo. It may be quicker to create a query
manually and re-use it multiple times.

The query will point to strings inside @silo, so the lifetime of @silo must
exceed the lifetime of the returned query.</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="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="510">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="511">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="512">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"
              deprecated="1"
              deprecated-version="0.3.0"
              throws="1">
        <doc xml:space="preserve"
             filename="src/xb-query.c"
             line="221">Assigns a string to a bound value specified using `?`.</doc>
        <doc-deprecated xml:space="preserve">Use #XbValueBindings and xb_value_bindings_bind_str()
    instead. That keeps the value bindings separate from the #XbQuery,
    allowing queries to be re-used over time and between threads.</doc-deprecated>
        <source-position filename="src/xb-query.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-query.c"
               line="230">%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="223">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="224">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="225">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"
              deprecated="1"
              deprecated-version="0.3.0"
              throws="1">
        <doc xml:space="preserve"
             filename="src/xb-query.c"
             line="261">Assigns a string to a bound value specified using `?`.</doc>
        <doc-deprecated xml:space="preserve">Use #XbValueBindings and xb_value_bindings_bind_val()
    instead. That keeps the value bindings separate from the #XbQuery,
    allowing queries to be re-used over time and between threads.</doc-deprecated>
        <source-position filename="src/xb-query.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-query.c"
               line="270">%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="263">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="264">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="265">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"
              deprecated="1"
              deprecated-version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query.c"
             line="158">Gets the flags used for this query.</doc>
        <doc-deprecated xml:space="preserve">This is not thread-safe. Use xb_query_context_get_flags()
    instead.</doc-deprecated>
        <source-position filename="src/xb-query.h" line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-query.c"
               line="164">#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="160">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"
              deprecated="1"
              deprecated-version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query.c"
             line="119">Gets the results limit on this query, where 0 is 'all'.</doc>
        <doc-deprecated xml:space="preserve">This is not thread-safe. Use xb_query_context_get_limit()
    instead.</doc-deprecated>
        <source-position filename="src/xb-query.h" line="60"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-query.c"
               line="125">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="121">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="54">Gets the XPath string that created the query.</doc>
        <source-position filename="src/xb-query.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-query.c"
               line="60">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="56">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"
              deprecated="1"
              deprecated-version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query.c"
             line="178">Sets the flags to use for this query.</doc>
        <doc-deprecated xml:space="preserve">This is not thread-safe. Use xb_query_context_set_flags()
    instead.</doc-deprecated>
        <source-position filename="src/xb-query.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-query.c"
                 line="180">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="181">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"
              deprecated="1"
              deprecated-version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query.c"
             line="139">Sets the results limit on this query, where 0 is 'all'.</doc>
        <doc-deprecated xml:space="preserve">This is not thread-safe. Use xb_query_context_set_limit()
    instead.</doc-deprecated>
        <source-position filename="src/xb-query.h" line="63"/>
        <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="141">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="142">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="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-query.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-query.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-query.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-query.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-query.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-query.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-query.h" line="25"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="QueryContext"
            c:type="XbQueryContext"
            version="0.3.0"
            glib:type-name="XbQueryContext"
            glib:get-type="xb_query_context_get_type"
            c:symbol-prefix="query_context">
      <doc xml:space="preserve"
           filename="src/xb-query-context.h"
           line="20">An opaque struct which contains context for executing a query in, such as the
number of results to return, or values to bind to query placeholders.</doc>
      <source-position filename="src/xb-query-context.h" line="34"/>
      <field name="dummy0" readable="0" private="1">
        <type name="gint" c:type="gint"/>
      </field>
      <field name="dummy1" readable="0" private="1">
        <type name="guint" c:type="guint"/>
      </field>
      <field name="dummy2" readable="0" private="1">
        <type name="ValueBindings" c:type="XbValueBindings"/>
      </field>
      <field name="dummy3" readable="0" private="1">
        <array zero-terminated="0" fixed-size="5">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <method name="clear"
              c:identifier="xb_query_context_clear"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query-context.c"
             line="60">Clear an #XbQueryContext, freeing any allocated memory it points to.

After this function has been called, the contents of the #XbQueryContext are
undefined, and it’s only safe to call xb_query_context_init() on it.</doc>
        <source-position filename="src/xb-query-context.h" line="65"/>
        <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-context.c"
                 line="62">an #XbQueryContext</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="xb_query_context_copy" version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query-context.c"
             line="79">Copy @self into a new heap-allocated #XbQueryContext instance.</doc>
        <source-position filename="src/xb-query-context.h" line="70"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-query-context.c"
               line="85">a copy of @self</doc>
          <type name="QueryContext" c:type="XbQueryContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-query-context.c"
                 line="81">an #XbQueryContext</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="xb_query_context_free" version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query-context.c"
             line="107">Free a heap-allocated #XbQueryContext instance. This should be used on
#XbQueryContext instances created with xb_query_context_copy().

For stack-allocated instances, xb_query_context_clear() should be used
instead.</doc>
        <source-position filename="src/xb-query-context.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-query-context.c"
                 line="109">a heap-allocated #XbQueryContext</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bindings"
              c:identifier="xb_query_context_get_bindings"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query-context.c"
             line="128">Get the #XbValueBindings for this query context.</doc>
        <source-position filename="src/xb-query-context.h" line="77"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-query-context.c"
               line="134">bindings</doc>
          <type name="ValueBindings" c:type="XbValueBindings*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-query-context.c"
                 line="130">an #XbQueryContext</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_flags"
              c:identifier="xb_query_context_get_flags"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query-context.c"
             line="186">Get the flags set on the context. See xb_query_context_set_flags().</doc>
        <source-position filename="src/xb-query-context.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-query-context.c"
               line="192">query flags</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-context.c"
                 line="188">an #XbQueryContext</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_limit"
              c:identifier="xb_query_context_get_limit"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query-context.c"
             line="147">Get the limit on the number of query results. See
xb_query_context_set_limit().</doc>
        <source-position filename="src/xb-query-context.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-query-context.c"
               line="154">limit on results, or `0` if unlimited</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-context.c"
                 line="149">an #XbQueryContext</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init" c:identifier="xb_query_context_init" version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query-context.c"
             line="38">Initialise a stack-allocated #XbQueryContext struct so it can be used.

Stack-allocated #XbQueryContext instances should be freed once finished
with, using xb_query_context_clear() (or `g_auto(XbQueryContext)`, which is
equivalent).</doc>
        <source-position filename="src/xb-query-context.h" line="63"/>
        <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-context.c"
                 line="40">an uninitialised #XbQueryContext to initialise</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_flags"
              c:identifier="xb_query_context_set_flags"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query-context.c"
             line="205">Set flags which affect the behaviour of the query.</doc>
        <source-position filename="src/xb-query-context.h" line="87"/>
        <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-context.c"
                 line="207">an #XbQueryContext</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-query-context.c"
                 line="208">query flags, or %XB_QUERY_FLAG_NONE for none</doc>
            <type name="QueryFlags" c:type="XbQueryFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_limit"
              c:identifier="xb_query_context_set_limit"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-query-context.c"
             line="167">Set the limit on the number of results to return from the query.</doc>
        <source-position filename="src/xb-query-context.h" line="82"/>
        <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-context.c"
                 line="169">an #XbQueryContext</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </instance-parameter>
          <parameter name="limit" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-query-context.c"
                 line="170">number of query results to return, or `0` for unlimited</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <bitfield name="QueryFlags" c:type="XbQueryFlags">
      <doc xml:space="preserve"
           filename="src/xb-query.h"
           line="28">The flags used for queries.</doc>
      <source-position filename="src/xb-query.h" line="46"/>
      <member name="none" value="0" c:identifier="XB_QUERY_FLAG_NONE">
        <doc xml:space="preserve"
             filename="src/xb-query.h"
             line="30">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="31">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="32">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="33">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="34">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="30"/>
      <constructor name="new" c:identifier="xb_silo_new" version="0.1.0">
        <doc xml:space="preserve"
             filename="src/xb-silo.c"
             line="1900">Creates a new silo.</doc>
        <source-position filename="src/xb-silo.h" line="69"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="1905">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="1181">Creates a new silo from an XML string.</doc>
        <source-position filename="src/xb-silo.h" line="71"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="1188">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="1183">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="232">Exports the silo back to XML.</doc>
        <source-position filename="src/xb-silo-export.h" line="17"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-silo-export.c"
               line="240">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="234">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="235">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="256">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="266">%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="258">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="259">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="260">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="261">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="684">Gets the backing object that created the blob.

You should never *ever* modify this data.</doc>
        <source-position filename="src/xb-silo.h" line="73"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="692">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="686">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"
              glib:get-property="enable-node-cache"
              version="0.2.0">
        <doc xml:space="preserve"
             filename="src/xb-silo.c"
             line="898">Get #XbSilo:enable-node-cache.</doc>
        <source-position filename="src/xb-silo.h" line="107"/>
        <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="900">an #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_guid"
              c:identifier="xb_silo_get_guid"
              glib:get-property="guid"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="src/xb-silo.c"
             line="706">Gets the GUID used to identify this silo.</doc>
        <source-position filename="src/xb-silo.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="712">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="708">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="855">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="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="862">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="857">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="328">Gets the root node for the silo. (MIGHT BE MORE).</doc>
        <source-position filename="src/xb-silo.h" line="93"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="334">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="330">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="537">Gets the number of nodes in the silo.</doc>
        <source-position filename="src/xb-silo.h" line="89"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="543">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="539">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="637">Invalidates a silo. Future calls xb_silo_is_valid() will return %FALSE.</doc>
        <source-position filename="src/xb-silo.h" line="95"/>
        <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="639">a #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_valid"
              c:identifier="xb_silo_is_valid"
              glib:get-property="valid"
              version="0.1.0">
        <doc xml:space="preserve"
             filename="src/xb-silo.c"
             line="569">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="97"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="577">%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="571">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="733">Loads a silo from memory location.</doc>
        <source-position filename="src/xb-silo.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="742">%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="735">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="736">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="737">#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="1072">Loads a silo from file.</doc>
        <source-position filename="src/xb-silo.h" line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="1082">%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="1074">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="1075">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="1076">#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="1077">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_query"
              c:identifier="xb_silo_lookup_query"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-silo.c"
             line="1965">Create an #XbQuery from the given @xpath XPath string, or return it from the
query cache in the #XbSilo.

@xpath must be valid: it is a programmer error if creating the query fails
(i.e. if xb_query_new() returns an error).

This function is thread-safe.</doc>
        <source-position filename="src/xb-silo.h" line="115"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="1978">an #XbQuery representing @xpath</doc>
          <type name="Query" c:type="XbQuery*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-silo.c"
                 line="1967">an #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-silo.c"
                 line="1968">an XPath query string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_query_full"
              c:identifier="xb_silo_lookup_query_full"
              version="0.3.27"
              throws="1">
        <doc xml:space="preserve"
             filename="src/xb-silo.c"
             line="1915">Create an #XbQuery from the given @xpath XPath string, or return it from the
query cache in the #XbSilo.

@xpath must be valid: it is a programmer error if creating the query fails
(i.e. if xb_query_new() returns an error).

This function is thread-safe.</doc>
        <source-position filename="src/xb-silo.h" line="117"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="1929">an #XbQuery representing @xpath</doc>
          <type name="Query" c:type="XbQuery*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-silo.c"
                 line="1917">an #XbSilo</doc>
            <type name="Silo" c:type="XbSilo*"/>
          </instance-parameter>
          <parameter name="xpath" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-silo.c"
                 line="1918">an XPath query string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </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="690">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="19"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="src/xb-silo-query.c"
               line="704">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="692">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="693">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="694">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="744">Adds the `attr()` or `text()` results of a query to the index.</doc>
        <source-position filename="src/xb-silo-query.h" line="39"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-silo-query.c"
               line="753">%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="746">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="747">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="748">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="717">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="28"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-silo-query.c"
               line="730">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="719">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="720">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="632">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="31"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-silo-query.c"
               line="645">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="634">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="635">an #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_first_with_context"
              c:identifier="xb_silo_query_first_with_context"
              version="0.3.0"
              throws="1">
        <doc xml:space="preserve"
             filename="src/xb-silo-query.c"
             line="655">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="33"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-silo-query.c"
               line="671">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="657">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="658">an #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </parameter>
          <parameter name="context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/xb-silo-query.c"
                 line="659">context including values bound to opcodes of type
    %XB_OPCODE_KIND_BOUND_INTEGER or %XB_OPCODE_KIND_BOUND_TEXT, or %NULL if
    the query doesn’t need any context</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </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="580">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="22"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="src/xb-silo-query.c"
               line="593">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="582">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="583">an #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </parameter>
        </parameters>
      </method>
      <method name="query_with_context"
              c:identifier="xb_silo_query_with_context"
              version="0.3.0"
              throws="1">
        <doc xml:space="preserve"
             filename="src/xb-silo-query.c"
             line="603">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="24"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="src/xb-silo-query.c"
               line="619">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="605">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="606">an #XbQuery</doc>
            <type name="Query" c:type="XbQuery*"/>
          </parameter>
          <parameter name="context"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/xb-silo-query.c"
                 line="607">context including values bound to opcodes of type
    %XB_OPCODE_KIND_BOUND_INTEGER or %XB_OPCODE_KIND_BOUND_TEXT, or %NULL if
    the query doesn’t need any context</doc>
            <type name="QueryContext" c:type="XbQueryContext*"/>
          </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="1132">Saves a silo to a file.</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="1141">%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="1134">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="1135">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="1136">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"
              glib:set-property="enable-node-cache"
              version="0.2.0">
        <doc xml:space="preserve"
             filename="src/xb-silo.c"
             line="914">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="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-silo.c"
                 line="916">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="917">%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="874">Enables or disables the collection of profiling data.</doc>
        <source-position filename="src/xb-silo.h" line="102"/>
        <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="876">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="877">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="367">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="87"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="375">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="369">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="991">Adds a file monitor to the silo. If the file or directory for @file changes
then the silo will be invalidated.

The monitor will internally use the #GMainContext which was the thread
default when the #XbSilo was created, so that #GMainContext must be iterated
for monitoring to work.</doc>
        <source-position filename="src/xb-silo.h" line="99"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-silo.c"
               line="1005">%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="993">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="994">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="995">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"
                setter="set_enable_node_cache"
                getter="get_enable_node_cache"
                default-value="TRUE">
        <doc xml:space="preserve"
             filename="src/xb-silo.c"
             line="1869">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"
                getter="get_guid"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="valid"
                transfer-ownership="none"
                getter="is_valid"
                default-value="TRUE">
        <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="30"/>
      <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="23"/>
          <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="24"/>
          <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="25"/>
          <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="26"/>
          <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="27"/>
          <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="28"/>
          <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="29"/>
          <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="32">The flags for loading a silo.</doc>
      <source-position filename="src/xb-silo.h" line="46"/>
      <member name="none" value="0" c:identifier="XB_SILO_LOAD_FLAG_NONE">
        <doc xml:space="preserve"
             filename="src/xb-silo.h"
             line="34">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="35">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="36">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="48">The flags used when profiling a silo.</doc>
      <source-position filename="src/xb-silo.h" line="66"/>
      <member name="none" value="0" c:identifier="XB_SILO_PROFILE_FLAG_NONE">
        <doc xml:space="preserve"
             filename="src/xb-silo.h"
             line="50">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="51">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="52">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="53">Save XPATH queries</doc>
      </member>
      <member name="optimizer"
              value="8"
              c:identifier="XB_SILO_PROFILE_FLAG_OPTIMIZER">
        <doc xml:space="preserve"
             filename="src/xb-silo.h"
             line="54">Output the machine optimizer as debug</doc>
      </member>
    </bitfield>
    <record name="Stack"
            c:type="XbStack"
            opaque="1"
            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="54">Pops an opcode off the stack.</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="62">%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="56">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="57">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="148">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="24"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-stack.c"
               line="159">%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="150">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="151">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="212">Returns a string representing a stack.</doc>
        <source-position filename="src/xb-stack.h" line="20"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-stack.c"
               line="218">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="214">a #XbStack</doc>
            <type name="Stack" c:type="XbStack*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <function-macro name="VALUE_BINDINGS_INIT"
                    c:identifier="XB_VALUE_BINDINGS_INIT"
                    version="0.3.0"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="src/xb-value-bindings.h"
           line="46">Static initialiser for #XbValueBindings so it can be used on the stack.

Use it in association with g_auto(), to ensure the bindings are freed once
finished with:
|[
g_auto(XbValueBindings) bindings = XB_VALUE_BINDINGS_INIT ();

xb_value_bindings_bind_str (&amp;bindings, 0, "test", NULL);
]|</doc>
      <source-position filename="src/xb-value-bindings.h" line="61"/>
    </function-macro>
    <record name="ValueBindings"
            c:type="XbValueBindings"
            version="0.3.0"
            glib:type-name="XbValueBindings"
            glib:get-type="xb_value_bindings_get_type"
            c:symbol-prefix="value_bindings">
      <doc xml:space="preserve"
           filename="src/xb-value-bindings.h"
           line="19">An opaque struct which contains values bound to a query.</doc>
      <source-position filename="src/xb-value-bindings.h" line="41"/>
      <field name="dummy0" readable="0" private="1">
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="dummy1" readable="0" private="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="dummy2" readable="0" private="1">
        <array zero-terminated="0" fixed-size="2">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="dummy3" readable="0" private="1">
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="dummy4" readable="0" private="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="dummy5" readable="0" private="1">
        <array zero-terminated="0" fixed-size="2">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="dummy6" readable="0" private="1">
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="dummy7" readable="0" private="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="dummy8" readable="0" private="1">
        <array zero-terminated="0" fixed-size="2">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="dummy9" readable="0" private="1">
        <type name="guint8" c:type="guint8"/>
      </field>
      <field name="dummy10" readable="0" private="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="dummy11" readable="0" private="1">
        <array zero-terminated="0" fixed-size="2">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="dummy12" readable="0" private="1">
        <array zero-terminated="0" fixed-size="3">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <method name="bind_str"
              c:identifier="xb_value_bindings_bind_str"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-value-bindings.c"
             line="195">Bind @str to @idx in the value bindings.

This will overwrite any previous binding at @idx. It will take ownership of
@str, and an appropriate @destroy_func must be provided to free @str once the
binding is no longer needed. @destroy_func will be called exactly once at
some point before the #XbValueBindings is cleared or freed.</doc>
        <source-position filename="src/xb-value-bindings.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-value-bindings.c"
                 line="197">an #XbValueBindings</doc>
            <type name="ValueBindings" c:type="XbValueBindings*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="198">0-based index to bind to</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="str" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="199">a string to bind to @idx</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="destroy_func"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="200">function to free @str</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="bind_val"
              c:identifier="xb_value_bindings_bind_val"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-value-bindings.c"
             line="233">Bind @val to @idx in the value bindings.

This will overwrite any previous binding at @idx.</doc>
        <source-position filename="src/xb-value-bindings.h" line="91"/>
        <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-value-bindings.c"
                 line="235">an #XbValueBindings</doc>
            <type name="ValueBindings" c:type="XbValueBindings*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="236">0-based index to bind to</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="val" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="237">an integer to bind to @idx</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear"
              c:identifier="xb_value_bindings_clear"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-value-bindings.c"
             line="82">Clear an #XbValueBindings, freeing any allocated memory it points to.

After this function has been called, the contents of the #XbValueBindings are
undefined, and it’s only safe to call xb_value_bindings_init() on it.</doc>
        <source-position filename="src/xb-value-bindings.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-value-bindings.c"
                 line="84">an #XbValueBindings</doc>
            <type name="ValueBindings" c:type="XbValueBindings*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="copy"
              c:identifier="xb_value_bindings_copy"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-value-bindings.c"
             line="129">Copy @self into a new heap-allocated #XbValueBindings instance.</doc>
        <source-position filename="src/xb-value-bindings.h" line="77"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/xb-value-bindings.c"
               line="135">a copy of @self</doc>
          <type name="ValueBindings" c:type="XbValueBindings*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="131">an #XbValueBindings</doc>
            <type name="ValueBindings" c:type="XbValueBindings*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="copy_binding"
              c:identifier="xb_value_bindings_copy_binding"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-value-bindings.c"
             line="318">Copies the value bound at @idx on @self to @dest_idx on @dest. If no value is
bound at @idx, @dest is not modified and %FALSE is returned.

@dest must be initialised. If a binding already exists at @dest_idx, it will
be overwritten.</doc>
        <source-position filename="src/xb-value-bindings.h" line="98"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-value-bindings.c"
               line="331">%TRUE if @idx was bound, %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-value-bindings.c"
                 line="320">an #XbValueBindings to copy from</doc>
            <type name="ValueBindings" c:type="XbValueBindings*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="321">0-based index to look up the binding from in @self</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="322">an #XbValueBindings to copy to</doc>
            <type name="ValueBindings" c:type="XbValueBindings*"/>
          </parameter>
          <parameter name="dest_idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="323">0-based index to copy the binding to in @dest</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="xb_value_bindings_free"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-value-bindings.c"
             line="154">Free a heap-allocated #XbValueBindings instance. This should be used on
#XbValueBindings instances created with xb_value_bindings_copy().

For stack-allocated instances, xb_value_bindings_clear() should be used
instead.</doc>
        <source-position filename="src/xb-value-bindings.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-value-bindings.c"
                 line="156">a heap-allocated #XbValueBindings</doc>
            <type name="ValueBindings" c:type="XbValueBindings*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init"
              c:identifier="xb_value_bindings_init"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-value-bindings.c"
             line="47">Initialise a stack-allocated #XbValueBindings struct so it can be used.

Stack-allocated #XbValueBindings instances should be freed once finished
with, using xb_value_bindings_clear() (or `g_auto(XbValueBindings)`, which is
equivalent).</doc>
        <source-position filename="src/xb-value-bindings.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-value-bindings.c"
                 line="49">an uninitialised #XbValueBindings to initialise</doc>
            <type name="ValueBindings" c:type="XbValueBindings*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_bound"
              c:identifier="xb_value_bindings_is_bound"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-value-bindings.c"
             line="175">Check whether a value has been bound to the given index using (for example)
xb_value_bindings_bind_str().</doc>
        <source-position filename="src/xb-value-bindings.h" line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-value-bindings.c"
               line="183">%TRUE if a value is bound to @idx, %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-value-bindings.c"
                 line="177">an #XbValueBindings</doc>
            <type name="ValueBindings" c:type="XbValueBindings*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="178">0-based index of the binding to check</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_opcode"
              c:identifier="xb_value_bindings_lookup_opcode"
              version="0.3.0">
        <doc xml:space="preserve"
             filename="src/xb-value-bindings.c"
             line="263">Initialises an #XbOpcode with the value bound to @idx, if a value is bound.
If no value is bound, @opcode_out is not touched and %FALSE is returned.

@opcode_out is initialised to point to the data inside the #XbValueBindings,
so must have a shorter lifetime than the #XbValueBindings. It will be of kind
%XB_OPCODE_KIND_BOUND_TEXT or %XB_OPCODE_KIND_BOUND_INTEGER.</doc>
        <source-position filename="src/xb-value-bindings.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/xb-value-bindings.c"
               line="277">%TRUE if @idx was bound, %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-value-bindings.c"
                 line="265">an #XbValueBindings</doc>
            <type name="ValueBindings" c:type="XbValueBindings*"/>
          </instance-parameter>
          <parameter name="idx" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="266">0-based index to look up the binding from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="opcode_out"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/xb-value-bindings.c"
                 line="267">pointer to an #XbOpcode
    to initialise from the binding</doc>
            <type name="Opcode" c:type="XbOpcode*"/>
          </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="52">Converts a string to an opcode kind.</doc>
      <source-position filename="src/xb-opcode.h" line="86"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/xb-opcode.c"
             line="58">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="54">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="84"/>
      <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="77">Appends an XPath query into the string, automatically adding the union
operator (`|`) if required.</doc>
      <source-position filename="src/xb-string.h" line="14"/>
      <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="79">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="80">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="81">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="238">Escapes XPath control sequences such as newlines, tabs, and forward slashes.</doc>
      <source-position filename="src/xb-string.h" line="19"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="src/xb-string.c"
             line="244">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="240">string, e.g. `app/org.gnome.ghex/x86_64/stable`</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="version_string"
              c:identifier="xb_version_string"
              version="0.3.19">
      <doc xml:space="preserve"
           filename="src/xb-version.c"
           line="11">Gets the XMLb installed runtime version.</doc>
      <source-position filename="src/xb-version.h" line="62"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/xb-version.c"
             line="16">a version number, e.g. "0.3.19"</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
    </function>
    <docsection name="xb-silo">
      <doc xml:space="preserve"
           filename="src/xb-silo.c"
           line="7">#XbSilo provides read-only access and querying of a previously parsed blob
of XML data.

All signal emissions from #XbSilo (currently only #GObject::notify emissions)
will happen in the #GMainContext which is the thread default when the #XbSilo
is constructed.

This #GMainContext must be iterated for file monitoring using
xb_silo_watch_file() to function correctly.</doc>
    </docsection>
    <docsection name="xb-version">
      <doc xml:space="preserve"
           filename="src/xb-version.h"
           line="6">These compile time macros allow the user to enable parts of client code
depending on the version of libxmlb installed.</doc>
    </docsection>
  </namespace>
</repository>
