<?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="GLib" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <package name="dee-1.0"/>
  <c:include name="dee.h"/>
  <doc:format name="unknown"/>
  <namespace name="Dee"
             version="1.0"
             shared-library="libdee-1.0.so.4"
             c:identifier-prefixes="Dee"
             c:symbol-prefixes="dee">
    <function-macro name="ANALYZER"
                    c:identifier="DEE_ANALYZER"
                    introspectable="0">
      <source-position filename="dee-analyzer.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ANALYZER_CLASS"
                    c:identifier="DEE_ANALYZER_CLASS"
                    introspectable="0">
      <source-position filename="dee-analyzer.h" line="40"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="ANALYZER_GET_CLASS"
                    c:identifier="DEE_ANALYZER_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-analyzer.h" line="49"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Analyzer"
           c:symbol-prefix="analyzer"
           c:type="DeeAnalyzer"
           parent="GObject.Object"
           glib:type-name="DeeAnalyzer"
           glib:get-type="dee_analyzer_get_type"
           glib:type-struct="AnalyzerClass">
      <doc xml:space="preserve"
           filename="dee-analyzer.h"
           line="88">All fields in the DeeAnalyzer structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-analyzer.h" line="134"/>
      <constructor name="new" c:identifier="dee_analyzer_new">
        <source-position filename="dee-analyzer.h" line="170"/>
        <return-value transfer-ownership="full">
          <type name="Analyzer" c:type="DeeAnalyzer*"/>
        </return-value>
      </constructor>
      <function name="collate_cmp_func"
                c:identifier="dee_analyzer_collate_cmp_func">
        <doc xml:space="preserve"
             filename="dee-analyzer.c"
             line="474">A #GCompareDataFunc using a #DeeAnalyzer to compare the keys. This is just
a convenience wrapper around dee_analyzer_collate_cmp().</doc>
        <source-position filename="dee-analyzer.h" line="166"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-analyzer.c"
               line="483">-1, 0 or 1, if @key1 is &amp;lt;, == or &amp;gt; than @key2.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <parameter name="key1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="476">The first key to compare</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="key2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="477">The second key to compare</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="analyzer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="478">The #DeeAnalyzer to use for the comparison</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="add_term_filter" invoker="add_term_filter">
        <doc xml:space="preserve"
             filename="dee-analyzer.c"
             line="390">Register a #DeeTermFilterFunc to be called whenever dee_analyzer_analyze()
is called.

Term filters can be used to normalize, add, or remove terms from an input
data stream.</doc>
        <source-position filename="dee-analyzer.h" line="116"/>
        <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="dee-analyzer.c"
                 line="392">The analyzer to add a term filter to</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </instance-parameter>
          <parameter name="filter_func"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="393">Function to call</doc>
            <type name="TermFilterFunc" c:type="DeeTermFilterFunc"/>
          </parameter>
          <parameter name="filter_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="394">Data to pass to @filter_func when it is invoked</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="filter_destroy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="395">Called on @filter_data when the #DeeAnalyzer
                               owning the filter is destroyed</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="analyze" invoker="analyze">
        <doc xml:space="preserve"
             filename="dee-analyzer.c"
             line="328">Extract terms and or collation keys from some input data (which is normally,
but not necessarily, a UTF-8 string).

The terms and corresponding collation keys will be written in order to the
provided #DeeTermList&lt;!-- --&gt;s.

Implementation notes for subclasses:
The analysis process must call dee_analyzer_tokenize() and run the tokens
through all term filters added with dee_analyzer_add_term_filter().
Collation keys must be generated with dee_analyzer_collate_key().</doc>
        <source-position filename="dee-analyzer.h" line="107"/>
        <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="dee-analyzer.c"
                 line="330">The analyzer to use</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="331">The input data to analyze</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="terms_out"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="332">A #DeeTermList to place the generated terms in.
                          If %NULL to terms are generated</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </parameter>
          <parameter name="colkeys_out"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="334">A #DeeTermList to place generated collation keys in.
                            If %NULL no collation keys are generated</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="collate_cmp" invoker="collate_cmp">
        <doc xml:space="preserve"
             filename="dee-analyzer.c"
             line="446">Compare collation keys generated by dee_analyzer_collate_key() with similar
semantics as strcmp(). See also dee_analyzer_collate_cmp_func() if you
need a version of this function that works as a #GCompareDataFunc.

The default implementation in #DeeAnalyzer just uses strcmp().</doc>
        <source-position filename="dee-analyzer.h" line="124"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-analyzer.c"
               line="458">-1, 0 or 1, if @key1 is &amp;lt;, == or &amp;gt; than @key2.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="448">The analyzer to use when comparing collation keys</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </instance-parameter>
          <parameter name="key1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="449">The first collation key to compare</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="key2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="450">The second collation key to compare</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="collate_key" invoker="collate_key">
        <doc xml:space="preserve"
             filename="dee-analyzer.c"
             line="419">Generate a collation key for a set of input data (usually a UTF-8 string
passed through tokenization and term filters of the analyzer).

The default implementation just calls g_strdup().</doc>
        <source-position filename="dee-analyzer.h" line="121"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-analyzer.c"
               line="429">A newly allocated collation key. Use dee_analyzer_collate_cmp() or
         dee_analyzer_collate_cmp_func() to compare collation keys. Free
         with g_free().</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="421">The analyzer to generate a collation key with</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="422">The input data to generate a collation key for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="tokenize" invoker="tokenize">
        <doc xml:space="preserve"
             filename="dee-analyzer.c"
             line="363">Tokenize some input data (which is normally, but not necessarily,
a UTF-8 string).

Tokenization splits the input data into constituents (in most cases words),
but does not run it through any of the term filters set for the analyzer.
It is undefined if the tokenization process itself does any normalization.</doc>
        <source-position filename="dee-analyzer.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="dee-analyzer.c"
                 line="365">The analyzer to use</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="366">The input data to analyze</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="terms_out" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="367">A #DeeTermList to place the generated tokens in.</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_term_filter"
              c:identifier="dee_analyzer_add_term_filter">
        <doc xml:space="preserve"
             filename="dee-analyzer.c"
             line="390">Register a #DeeTermFilterFunc to be called whenever dee_analyzer_analyze()
is called.

Term filters can be used to normalize, add, or remove terms from an input
data stream.</doc>
        <source-position filename="dee-analyzer.h" line="154"/>
        <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="dee-analyzer.c"
                 line="392">The analyzer to add a term filter to</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </instance-parameter>
          <parameter name="filter_func"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="393">Function to call</doc>
            <type name="TermFilterFunc" c:type="DeeTermFilterFunc"/>
          </parameter>
          <parameter name="filter_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="394">Data to pass to @filter_func when it is invoked</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="filter_destroy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="395">Called on @filter_data when the #DeeAnalyzer
                               owning the filter is destroyed</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="analyze" c:identifier="dee_analyzer_analyze">
        <doc xml:space="preserve"
             filename="dee-analyzer.c"
             line="328">Extract terms and or collation keys from some input data (which is normally,
but not necessarily, a UTF-8 string).

The terms and corresponding collation keys will be written in order to the
provided #DeeTermList&lt;!-- --&gt;s.

Implementation notes for subclasses:
The analysis process must call dee_analyzer_tokenize() and run the tokens
through all term filters added with dee_analyzer_add_term_filter().
Collation keys must be generated with dee_analyzer_collate_key().</doc>
        <source-position filename="dee-analyzer.h" line="145"/>
        <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="dee-analyzer.c"
                 line="330">The analyzer to use</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="331">The input data to analyze</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="terms_out"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="332">A #DeeTermList to place the generated terms in.
                          If %NULL to terms are generated</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </parameter>
          <parameter name="colkeys_out"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="334">A #DeeTermList to place generated collation keys in.
                            If %NULL no collation keys are generated</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </parameter>
        </parameters>
      </method>
      <method name="collate_cmp" c:identifier="dee_analyzer_collate_cmp">
        <doc xml:space="preserve"
             filename="dee-analyzer.c"
             line="446">Compare collation keys generated by dee_analyzer_collate_key() with similar
semantics as strcmp(). See also dee_analyzer_collate_cmp_func() if you
need a version of this function that works as a #GCompareDataFunc.

The default implementation in #DeeAnalyzer just uses strcmp().</doc>
        <source-position filename="dee-analyzer.h" line="162"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-analyzer.c"
               line="458">-1, 0 or 1, if @key1 is &amp;lt;, == or &amp;gt; than @key2.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="448">The analyzer to use when comparing collation keys</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </instance-parameter>
          <parameter name="key1" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="449">The first collation key to compare</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="key2" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="450">The second collation key to compare</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="collate_key" c:identifier="dee_analyzer_collate_key">
        <doc xml:space="preserve"
             filename="dee-analyzer.c"
             line="419">Generate a collation key for a set of input data (usually a UTF-8 string
passed through tokenization and term filters of the analyzer).

The default implementation just calls g_strdup().</doc>
        <source-position filename="dee-analyzer.h" line="159"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-analyzer.c"
               line="429">A newly allocated collation key. Use dee_analyzer_collate_cmp() or
         dee_analyzer_collate_cmp_func() to compare collation keys. Free
         with g_free().</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="421">The analyzer to generate a collation key with</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="422">The input data to generate a collation key for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="tokenize" c:identifier="dee_analyzer_tokenize">
        <doc xml:space="preserve"
             filename="dee-analyzer.c"
             line="363">Tokenize some input data (which is normally, but not necessarily,
a UTF-8 string).

Tokenization splits the input data into constituents (in most cases words),
but does not run it through any of the term filters set for the analyzer.
It is undefined if the tokenization process itself does any normalization.</doc>
        <source-position filename="dee-analyzer.h" line="150"/>
        <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="dee-analyzer.c"
                 line="365">The analyzer to use</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="366">The input data to analyze</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="terms_out" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="367">A #DeeTermList to place the generated tokens in.</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="AnalyzerPrivate" c:type="DeeAnalyzerPrivate*"/>
      </field>
    </class>
    <record name="AnalyzerClass"
            c:type="DeeAnalyzerClass"
            glib:is-gtype-struct-for="Analyzer">
      <source-position filename="dee-analyzer.h" line="134"/>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="analyze">
        <callback name="analyze">
          <source-position filename="dee-analyzer.h" line="107"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="330">The analyzer to use</doc>
              <type name="Analyzer" c:type="DeeAnalyzer*"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="331">The input data to analyze</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="terms_out"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="332">A #DeeTermList to place the generated terms in.
                          If %NULL to terms are generated</doc>
              <type name="TermList" c:type="DeeTermList*"/>
            </parameter>
            <parameter name="colkeys_out"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="334">A #DeeTermList to place generated collation keys in.
                            If %NULL no collation keys are generated</doc>
              <type name="TermList" c:type="DeeTermList*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tokenize">
        <callback name="tokenize">
          <source-position filename="dee-analyzer.h" line="112"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="365">The analyzer to use</doc>
              <type name="Analyzer" c:type="DeeAnalyzer*"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="366">The input data to analyze</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="terms_out" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="367">A #DeeTermList to place the generated tokens in.</doc>
              <type name="TermList" c:type="DeeTermList*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="add_term_filter">
        <callback name="add_term_filter">
          <source-position filename="dee-analyzer.h" line="116"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="392">The analyzer to add a term filter to</doc>
              <type name="Analyzer" c:type="DeeAnalyzer*"/>
            </parameter>
            <parameter name="filter_func"
                       transfer-ownership="none"
                       scope="notified"
                       closure="2"
                       destroy="3">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="393">Function to call</doc>
              <type name="TermFilterFunc" c:type="DeeTermFilterFunc"/>
            </parameter>
            <parameter name="filter_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="394">Data to pass to @filter_func when it is invoked</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
            <parameter name="filter_destroy"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       scope="async">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="395">Called on @filter_data when the #DeeAnalyzer
                               owning the filter is destroyed</doc>
              <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="collate_key">
        <callback name="collate_key">
          <source-position filename="dee-analyzer.h" line="121"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="429">A newly allocated collation key. Use dee_analyzer_collate_cmp() or
         dee_analyzer_collate_cmp_func() to compare collation keys. Free
         with g_free().</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="421">The analyzer to generate a collation key with</doc>
              <type name="Analyzer" c:type="DeeAnalyzer*"/>
            </parameter>
            <parameter name="data" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="422">The input data to generate a collation key for</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="collate_cmp">
        <callback name="collate_cmp">
          <source-position filename="dee-analyzer.h" line="124"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-analyzer.c"
                 line="458">-1, 0 or 1, if @key1 is &amp;lt;, == or &amp;gt; than @key2.</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="448">The analyzer to use when comparing collation keys</doc>
              <type name="Analyzer" c:type="DeeAnalyzer*"/>
            </parameter>
            <parameter name="key1" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="449">The first collation key to compare</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="key2" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-analyzer.c"
                   line="450">The second collation key to compare</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_dee_analyzer_1" introspectable="0">
        <callback name="_dee_analyzer_1">
          <source-position filename="dee-analyzer.h" line="130"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_analyzer_2" introspectable="0">
        <callback name="_dee_analyzer_2">
          <source-position filename="dee-analyzer.h" line="131"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_analyzer_3" introspectable="0">
        <callback name="_dee_analyzer_3">
          <source-position filename="dee-analyzer.h" line="132"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_analyzer_4" introspectable="0">
        <callback name="_dee_analyzer_4">
          <source-position filename="dee-analyzer.h" line="133"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="AnalyzerPrivate"
            c:type="DeeAnalyzerPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-text-analyzer.c"
           line="39">Ignore this structure.</doc>
      <source-position filename="dee-analyzer.h" line="54"/>
    </record>
    <function-macro name="CLIENT" c:identifier="DEE_CLIENT" introspectable="0">
      <source-position filename="dee-client.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CLIENT_CLASS"
                    c:identifier="DEE_CLIENT_CLASS"
                    introspectable="0">
      <source-position filename="dee-client.h" line="38"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CLIENT_GET_CLASS"
                    c:identifier="DEE_CLIENT_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-client.h" line="47"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Client"
           c:symbol-prefix="client"
           c:type="DeeClient"
           parent="Peer"
           glib:type-name="DeeClient"
           glib:get-type="dee_client_get_type"
           glib:type-struct="ClientClass">
      <source-position filename="dee-client.h" line="62"/>
      <constructor name="new" c:identifier="dee_client_new">
        <doc xml:space="preserve"
             filename="dee-client.c"
             line="239">Creates a new instance of #DeeClient and tries to connect to #DeeServer
created using dee_server_new(). The #DeePeer:swarm-leader property will
be set once the client connects.</doc>
        <source-position filename="dee-client.h" line="73"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-client.c"
               line="247">A newly constructed #DeeClient.</doc>
          <type name="Client" c:type="DeeClient*"/>
        </return-value>
        <parameters>
          <parameter name="swarm_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-client.c"
                 line="241">Name of swarm to join.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_for_address"
                   c:identifier="dee_client_new_for_address">
        <doc xml:space="preserve"
             filename="dee-client.c"
             line="258">Creates a new instance of #DeeClient and tries to connect to @bus_address.
The #DeePeer:swarm-leader property will be set once the client connects.</doc>
        <source-position filename="dee-client.h" line="75"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-client.c"
               line="266">A newly constructed #DeeClient.</doc>
          <type name="Client" c:type="DeeClient*"/>
        </return-value>
        <parameters>
          <parameter name="swarm_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-client.c"
                 line="260">Name of swarm to join.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="bus_address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-client.c"
                 line="261">D-Bus address to use when connecting to the server.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="bus-address"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="Peer" c:type="DeePeer"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ClientPrivate" c:type="DeeClientPrivate*"/>
      </field>
    </class>
    <record name="ClientClass"
            c:type="DeeClientClass"
            glib:is-gtype-struct-for="Client">
      <source-position filename="dee-client.h" line="62"/>
      <field name="parent_class" readable="0" private="1">
        <type name="PeerClass" c:type="DeePeerClass"/>
      </field>
    </record>
    <record name="ClientPrivate"
            c:type="DeeClientPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-client.c"
           line="40">Ignore this structure.</doc>
      <source-position filename="dee-client.h" line="50"/>
    </record>
    <callback name="CollatorFunc" c:type="DeeCollatorFunc">
      <doc xml:space="preserve"
           filename="dee-analyzer.h"
           line="56">A collator takes an input string, most often a term produced from a
#DeeAnalyzer, and outputs a collation key.</doc>
      <source-position filename="dee-analyzer.h" line="67"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="dee-analyzer.h"
             line="64">The collation key. Free with g_free() when done
                          using it.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="input" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-analyzer.h"
               line="58">The string to produce a collation key for</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="dee-analyzer.h"
               line="59">User data set when registering the collator</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="CompareRowFunc" c:type="DeeCompareRowFunc">
      <doc xml:space="preserve"
           filename="dee-model.h"
           line="65">Compares @row1 and @row2. Mainly used with dee_model_insert_sorted() and
dee_model_find_sorted().</doc>
      <source-position filename="dee-model.h" line="77"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="dee-model.h"
             line="74">-1, 0, or 1 if @row1 is respectively less than, equal, or greater
than @row2.</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="row1" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.h"
               line="67">The model being indexed</doc>
          <array zero-terminated="0" c:type="GVariant**">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </array>
        </parameter>
        <parameter name="row2" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.h"
               line="68">The row to extract terms for</doc>
          <array zero-terminated="0" c:type="GVariant**">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </array>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <doc xml:space="preserve"
               filename="dee-model.h"
               line="69">User data to pass to comparison function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="CompareRowSizedFunc" c:type="DeeCompareRowSizedFunc">
      <doc xml:space="preserve"
           filename="dee-model.h"
           line="81">Compares @row1 and @row2. Mainly used with
dee_model_insert_row_sorted_with_sizes() and
dee_model_find_row_sorted_with_sizes().</doc>
      <source-position filename="dee-model.h" line="96"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="dee-model.h"
             line="93">-1, 0, or 1 if @row1 is respectively less than, equal, or greater
than @row2.</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="row1" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.h"
               line="83">Row data</doc>
          <array length="1" zero-terminated="0" c:type="GVariant**">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </array>
        </parameter>
        <parameter name="row1_length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.h"
               line="84">The number of elements in row1 array</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="row2" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.h"
               line="85">Row data to compare with</doc>
          <array length="3" zero-terminated="0" c:type="GVariant**">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </array>
        </parameter>
        <parameter name="row2_length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.h"
               line="86">The number of elements in row2 array</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="4">
          <doc xml:space="preserve"
               filename="dee-model.h"
               line="87">User data passed to comparison function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <function-macro name="FILE_RESOURCE_MANAGER"
                    c:identifier="DEE_FILE_RESOURCE_MANAGER"
                    introspectable="0">
      <source-position filename="dee-file-resource-manager.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILE_RESOURCE_MANAGER_CLASS"
                    c:identifier="DEE_FILE_RESOURCE_MANAGER_CLASS"
                    introspectable="0">
      <source-position filename="dee-file-resource-manager.h" line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILE_RESOURCE_MANAGER_GET_CLASS"
                    c:identifier="DEE_FILE_RESOURCE_MANAGER_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-file-resource-manager.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILTER_MODEL"
                    c:identifier="DEE_FILTER_MODEL"
                    introspectable="0">
      <source-position filename="dee-filter-model.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILTER_MODEL_CLASS"
                    c:identifier="DEE_FILTER_MODEL_CLASS"
                    introspectable="0">
      <source-position filename="dee-filter-model.h" line="40"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILTER_MODEL_GET_CLASS"
                    c:identifier="DEE_FILTER_MODEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-filter-model.h" line="49"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="FileResourceManager"
           c:symbol-prefix="file_resource_manager"
           c:type="DeeFileResourceManager"
           parent="GObject.Object"
           glib:type-name="DeeFileResourceManager"
           glib:get-type="dee_file_resource_manager_get_type"
           glib:type-struct="FileResourceManagerClass">
      <source-position filename="dee-file-resource-manager.h" line="57"/>
      <implements name="ResourceManager"/>
      <constructor name="new" c:identifier="dee_file_resource_manager_new">
        <doc xml:space="preserve"
             filename="dee-file-resource-manager.c"
             line="173">Create a new #DeeFileResourceManager with its primary store- and load
path set to @primary_path.

You can manually add fallback search paths by calling
dee_file_resource_manager_add_search_path().

You normally don't need to create you own resource managers. Instead
you should call dee_resource_manager_get_default().</doc>
        <source-position filename="dee-file-resource-manager.h" line="61"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-file-resource-manager.c"
               line="187">A newly allocated #DeeFileResourceManager.
              Free with g_object_unref().</doc>
          <type name="FileResourceManager" c:type="DeeResourceManager*"/>
        </return-value>
        <parameters>
          <parameter name="primary_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-file-resource-manager.c"
                 line="175">The primary path used to store and load resources.
               If you pass %NULL the manager will use a default path.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_search_path"
              c:identifier="dee_file_resource_manager_add_search_path">
        <doc xml:space="preserve"
             filename="dee-file-resource-manager.c"
             line="202">Add a path to the set of paths searched for resources. The manager will
first search the primary path as specified in the constructor and then
search paths in the order they where added.</doc>
        <source-position filename="dee-file-resource-manager.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="dee-file-resource-manager.c"
                 line="204">The resource manager to add a search
path to</doc>
            <type name="FileResourceManager" c:type="DeeResourceManager*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-file-resource-manager.c"
                 line="206">The path to add to the set of searched paths</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_primary_path"
              c:identifier="dee_file_resource_manager_get_primary_path"
              glib:get-property="primary-path">
        <doc xml:space="preserve"
             filename="dee-file-resource-manager.c"
             line="226">Helper method to access the :primary-path property.</doc>
        <source-position filename="dee-file-resource-manager.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-file-resource-manager.c"
               line="232">The value of the :primary-path property</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-file-resource-manager.c"
                 line="228">The resource manager to inspect</doc>
            <type name="FileResourceManager" c:type="DeeResourceManager*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="primary-path"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_primary_path"
                default-value="NULL">
        <doc xml:space="preserve"
             filename="dee-file-resource-manager.c"
             line="147">Property holding the primary path used to store and load resources</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="FileResourceManagerClass"
            c:type="DeeFileResourceManagerClass"
            glib:is-gtype-struct-for="FileResourceManager">
      <source-position filename="dee-file-resource-manager.h" line="57"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="Filter" c:type="DeeFilter">
      <doc xml:space="preserve"
           filename="dee-filter.h"
           line="75">Structure encapsulating the mapping logic used to construct a #DeeFilterModel</doc>
      <source-position filename="dee-filter.h" line="98"/>
      <field name="map_func" writable="1">
        <doc xml:space="preserve"
             filename="dee-filter.h"
             line="77">The #DeeModelMapFunc used to construct
                             the initial contents of a #DeeFilterModel</doc>
        <type name="FilterMapFunc" c:type="DeeFilterMapFunc"/>
      </field>
      <field name="map_notify" writable="1">
        <doc xml:space="preserve"
             filename="dee-filter.h"
             line="79">Callback invoked when the original model changes</doc>
        <type name="FilterMapNotify" c:type="DeeFilterMapNotify"/>
      </field>
      <field name="destroy" writable="1">
        <doc xml:space="preserve"
             filename="dee-filter.h"
             line="80">Callback for freeing the @user_data
@userdata (closure): Free form user data associated with the filter.
                      This pointer will be passed to @map_func and @map_notify</doc>
        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
      </field>
      <field name="userdata" writable="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="_padding_1" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="_padding_2" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="_padding_3" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="_padding_4" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <method name="destroy" c:identifier="dee_filter_destroy">
        <doc xml:space="preserve"
             filename="dee-filter.c"
             line="397">Call the #GDestroyNotify function on the userdata pointer of a #DeeFilter
(if the destroy member is set, that is).

When using a #DeeFilterModel you should not call this method yourself.

This method will not free the memory allocated for @filter.</doc>
        <source-position filename="dee-filter.h" line="109"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="399">The filter to destroy</doc>
            <type name="Filter" c:type="DeeFilter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="map" c:identifier="dee_filter_map">
        <doc xml:space="preserve"
             filename="dee-filter.c"
             line="377">Call the #DeeFilterMapFunc function of a #DeeFilter.
When using a #DeeFilterModel you should not call this method yourself.</doc>
        <source-position filename="dee-filter.h" line="105"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="379">The filter to apply</doc>
            <type name="Filter" c:type="DeeFilter*"/>
          </instance-parameter>
          <parameter name="orig_model" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="380">The model that is being filtered</doc>
            <type name="Model" c:type="DeeModel*"/>
          </parameter>
          <parameter name="filter_model" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="381">The #DeeFilterModel that holds the
               filtered subset of @orig_model</doc>
            <type name="FilterModel" c:type="DeeFilterModel*"/>
          </parameter>
        </parameters>
      </method>
      <method name="notify" c:identifier="dee_filter_notify">
        <doc xml:space="preserve"
             filename="dee-filter.c"
             line="351">Call the #DeeFilterMapNotify function of a #DeeFilter.
When using a #DeeFilterModel you should not call this method yourself.</doc>
        <source-position filename="dee-filter.h" line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="362">The return value from the #DeeFilterMapNotify. That is; %TRUE
         if @orig_iter was added to @filter_model</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="353">The filter to apply</doc>
            <type name="Filter" c:type="DeeFilter*"/>
          </instance-parameter>
          <parameter name="orig_iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="354">The #DeeModelIter added to @orig_model</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="orig_model" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="355">The model that is being filtered</doc>
            <type name="Model" c:type="DeeModel*"/>
          </parameter>
          <parameter name="filter_model" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="356">The #DeeFilterModel that holds the
               filtered subset of @orig_model</doc>
            <type name="FilterModel" c:type="DeeFilterModel*"/>
          </parameter>
        </parameters>
      </method>
      <function name="new" c:identifier="dee_filter_new">
        <doc xml:space="preserve"
             filename="dee-filter.c"
             line="417">Create a new #DeeFilter with the given parameters. This call will zero
the @out_filter struct.</doc>
        <source-position filename="dee-filter.h" line="111"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="map_func"
                     transfer-ownership="none"
                     scope="notified">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="419">The #DeeFilterMapFunc to use for the filter</doc>
            <type name="FilterMapFunc" c:type="DeeFilterMapFunc"/>
          </parameter>
          <parameter name="map_notify"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2"
                     destroy="3">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="420">The #DeeFilterMapNotify to use for the filter</doc>
            <type name="FilterMapNotify" c:type="DeeFilterMapNotify"/>
          </parameter>
          <parameter name="userdata"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="421">The user data to pass to @map_func and @map_notify</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="422">The #GDestroyNotify to call on
                        @userdata when disposing of the filter</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="out_filter"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="424">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
            <type name="Filter" c:type="DeeFilter*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_collator" c:identifier="dee_filter_new_collator">
        <doc xml:space="preserve"
             filename="dee-filter.c"
             line="484">Create a #DeeFilter that takes string values from a column in the model
and builds a #DeeFilterModel with the rows sorted according to the
collation rules of the current locale.</doc>
        <source-position filename="dee-filter.h" line="122"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="486">The index of a column containing the strings to sort after</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="out_filter"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="487">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
            <type name="Filter" c:type="DeeFilter*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_collator_desc"
                c:identifier="dee_filter_new_collator_desc">
        <doc xml:space="preserve"
             filename="dee-filter.c"
             line="503">Create a #DeeFilter that takes string values from a column in the model
and builds a #DeeFilterModel with the rows sorted descending according to the
collation rules of the current locale.</doc>
        <source-position filename="dee-filter.h" line="125"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="505">The index of a column containing the strings to sort after</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="out_filter"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="506">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
            <type name="Filter" c:type="DeeFilter*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_for_any_column"
                c:identifier="dee_filter_new_for_any_column">
        <doc xml:space="preserve"
             filename="dee-filter.c"
             line="554">Create a #DeeFilter that only includes rows from the original model
which match a variant value in a given column. A #DeeFilterModel
created with this filter will be ordered in accordance with its parent model.

This method will work on any column, disregarding its schema, since the
value comparison is done using g_variant_equal(). This means you can use
this filter as a convenient fallback when there is no predefined filter
for your column type if raw performance is not paramount.</doc>
        <source-position filename="dee-filter.h" line="132"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="556">The index of a column containing the string to match</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="557">A #GVariant value columns must match exactly.
        The matching semantics are those of g_variant_equal(). If @value
        is floating the ownership will be transfered to the filter</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="out_filter"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="560">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
            <type name="Filter" c:type="DeeFilter*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_for_key_column"
                c:identifier="dee_filter_new_for_key_column">
        <doc xml:space="preserve"
             filename="dee-filter.c"
             line="523">Create a #DeeFilter that only includes rows from the original model
which has an exact match on some string column. A #DeeFilterModel created
with this filter will be ordered in accordance with its parent model.</doc>
        <source-position filename="dee-filter.h" line="128"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="525">The index of a column containing the string key to match</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="key" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_filter"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="526">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
            <type name="Filter" c:type="DeeFilter*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_regex" c:identifier="dee_filter_new_regex">
        <doc xml:space="preserve"
             filename="dee-filter.c"
             line="593">Create a #DeeFilter that only includes rows from the original model
which match a regular expression on some string column. A #DeeFilterModel
created with this filter will be ordered in accordance with its parent model.</doc>
        <source-position filename="dee-filter.h" line="136"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="595">The index of a column containing the string to match</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="regex" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="596">The regular expression @column must match</doc>
            <type name="GLib.Regex" c:type="GRegex*"/>
          </parameter>
          <parameter name="out_filter"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="597">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
            <type name="Filter" c:type="DeeFilter*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_sort" c:identifier="dee_filter_new_sort">
        <doc xml:space="preserve"
             filename="dee-filter.c"
             line="451">Create a new #DeeFilter sorting a model according to a #DeeCompareRowFunc.</doc>
        <source-position filename="dee-filter.h" line="117"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="cmp_row"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="453">A #DeeCompareRowFunc to use for sorting</doc>
            <type name="CompareRowFunc" c:type="DeeCompareRowFunc"/>
          </parameter>
          <parameter name="cmp_user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="454">User data passed to @cmp_row</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="cmp_destroy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="455">The #GDestroyNotify to call on
                        @cmp_user_data when disposing of the filter</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="out_filter"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter.c"
                 line="457">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
            <type name="Filter" c:type="DeeFilter*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <callback name="FilterMapFunc" c:type="DeeFilterMapFunc">
      <doc xml:space="preserve"
           filename="dee-filter.h"
           line="33">Function used to collect the rows from a model that should be included in
a #DeeFilterModel. To add rows to @filter_model use the methods
dee_filter_model_append_iter(), dee_filter_model_prepend_iter(),
dee_filter_model_insert_iter(), and dee_filter_model_insert_iter_before().

The iteration over the original model is purposely left to the map func
in order to allow optimized iterations if the the caller has a priori
knowledge of the sorting and grouping of the data in the original model.</doc>
      <source-position filename="dee-filter.h" line="51"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="orig_model" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.h"
               line="35">The model containing the original data to filter</doc>
          <type name="Model" c:type="DeeModel*"/>
        </parameter>
        <parameter name="filter_model" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.h"
               line="36">The model that will contain the filtered results. The
               filter func must iterate over @orig_model and add all relevant
               rows to @filter_model. This model is guaranteed to be empty
               when the filter func is invoked</doc>
          <type name="FilterModel" c:type="DeeFilterModel*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <doc xml:space="preserve"
               filename="dee-filter.h"
               line="40">User data passed together with the filter func</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="FilterMapNotify" c:type="DeeFilterMapNotify">
      <doc xml:space="preserve"
           filename="dee-filter.h"
           line="55">Callback invoked when a row is added to @orig_model. To add rows to
@filter_model use the methods dee_filter_model_append_iter(),
dee_filter_model_prepend_iter(), dee_filter_model_insert_iter(),
and dee_filter_model_insert_iter_before().</doc>
      <source-position filename="dee-filter.h" line="70"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="dee-filter.h"
             line="68">%TRUE if @orig_iter was added to @filter_model</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="orig_model" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.h"
               line="57">The model containing the added row</doc>
          <type name="Model" c:type="DeeModel*"/>
        </parameter>
        <parameter name="orig_iter" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.h"
               line="58">A #DeeModelIter pointing to the new row in @orig_model</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </parameter>
        <parameter name="filter_model" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.h"
               line="59">The model that was also passed to the #DeeModelMapFunc
               of the #DeeFilter this functions is a part of</doc>
          <type name="FilterModel" c:type="DeeFilterModel*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <doc xml:space="preserve"
               filename="dee-filter.h"
               line="61">User data for the #DeeFilter</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="FilterModel"
           c:symbol-prefix="filter_model"
           c:type="DeeFilterModel"
           parent="ProxyModel"
           glib:type-name="DeeFilterModel"
           glib:get-type="dee_filter_model_get_type"
           glib:type-struct="FilterModelClass">
      <doc xml:space="preserve"
           filename="dee-filter-model.h"
           line="59">All fields in the DeeFilterModel structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-filter-model.h" line="83"/>
      <implements name="Model"/>
      <implements name="Serializable"/>
      <constructor name="new" c:identifier="dee_filter_model_new">
        <source-position filename="dee-filter-model.h" line="94"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-filter-model.c"
               line="385">A newly allocated #DeeFilterModel. Free with g_object_unref().</doc>
          <type name="FilterModel" c:type="DeeModel*"/>
        </return-value>
        <parameters>
          <parameter name="orig_model" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter-model.c"
                 line="382">The back end model. This will be set as the
             #DeeProxyModel:back-end property</doc>
            <type name="Model" c:type="DeeModel*"/>
          </parameter>
          <parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter-model.c"
                 line="378">Structure containing the logic used to create the filter model.
         The filter model will create it's own copy of @filter so unless
         @filter is allocated statically or on the stack you need to free it
         after calling this method.</doc>
            <type name="Filter" c:type="DeeFilter*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="append_iter" c:identifier="dee_filter_model_append_iter">
        <doc xml:space="preserve"
             filename="dee-filter-model.c"
             line="421">Includes @iter from the back end model in the filtered model, appending
it to the end of the filtered rows.

This method is usually called when implementing #DeeFilterMapFunc or
#DeeFilterMapNotify methods.</doc>
        <source-position filename="dee-filter-model.h" line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter-model.c"
               line="432">Always returns @iter</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FilterModel" c:type="DeeFilterModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="contains" c:identifier="dee_filter_model_contains">
        <doc xml:space="preserve"
             filename="dee-filter-model.c"
             line="403">Check if @iter from the back end model is mapped in @self.</doc>
        <source-position filename="dee-filter-model.h" line="97"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter-model.c"
               line="410">%TRUE if and only if @iter is contained in @self.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter-model.c"
                 line="405">The #DeeFilterModel to check</doc>
            <type name="FilterModel" c:type="DeeFilterModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter-model.c"
                 line="406">The #DeeModelIter to check</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_iter" c:identifier="dee_filter_model_insert_iter">
        <doc xml:space="preserve"
             filename="dee-filter-model.c"
             line="502">Includes @iter from the back end model in the filtered model, inserting it at
@pos pushing other rows down.

This method is usually called when implementing #DeeFilterMapFunc or
#DeeFilterMapNotify methods.</doc>
        <source-position filename="dee-filter-model.h" line="106"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter-model.c"
               line="514">Always returns @iter</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FilterModel" c:type="DeeFilterModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="pos" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_iter_before"
              c:identifier="dee_filter_model_insert_iter_before">
        <doc xml:space="preserve"
             filename="dee-filter-model.c"
             line="530">Includes @iter from the back end model in the filtered model, inserting it at
the position before @pos pushing other rows down.

This method is usually called when implementing #DeeFilterMapFunc or
#DeeFilterMapNotify methods.</doc>
        <source-position filename="dee-filter-model.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter-model.c"
               line="542">Always returns @iter</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FilterModel" c:type="DeeFilterModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="pos" transfer-ownership="none">
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_iter_with_original_order"
              c:identifier="dee_filter_model_insert_iter_with_original_order">
        <doc xml:space="preserve"
             filename="dee-filter-model.c"
             line="580">Inserts @iter in @self in a way that is consistent with the ordering of the
rows in the original #DeeModel behind @self. THis method assumes that @self
is already ordered this way. If that's not the case then this method has
undefined behaviour.

This method is mainly intended as a helper for #DeeFilterMapNotify functions
of #DeeFilter implementations that creates filter models sorted in
accordance with the original models.</doc>
        <source-position filename="dee-filter-model.h" line="114"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter-model.c"
               line="595">Always returns @iter</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter-model.c"
                 line="583">A #DeeFilterModel instance</doc>
            <type name="FilterModel" c:type="DeeFilterModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-filter-model.c"
                 line="584">Iterator</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepend_iter" c:identifier="dee_filter_model_prepend_iter">
        <doc xml:space="preserve"
             filename="dee-filter-model.c"
             line="462">Includes @iter from the back end model in the filtered model, prepending
it to the beginning of the filtered rows.

This method is usually called when implementing #DeeFilterMapFunc or
#DeeFilterMapNotify methods.</doc>
        <source-position filename="dee-filter-model.h" line="103"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter-model.c"
               line="473">Always returns @iter</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FilterModel" c:type="DeeFilterModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <property name="filter"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="dee-filter-model.c"
             line="320">Property holding the #DeeFilter used to filter the model
defined in the #DeeFilterModel:back-end property.</doc>
        <type name="Filter" c:type="gpointer"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="ProxyModel" c:type="DeeProxyModel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="FilterModelPrivate" c:type="DeeFilterModelPrivate*"/>
      </field>
    </class>
    <record name="FilterModelClass"
            c:type="DeeFilterModelClass"
            glib:is-gtype-struct-for="FilterModel">
      <source-position filename="dee-filter-model.h" line="83"/>
      <field name="parent_class" readable="0" private="1">
        <type name="ProxyModelClass" c:type="DeeProxyModelClass"/>
      </field>
      <field name="_dee_filter_model_1" introspectable="0">
        <callback name="_dee_filter_model_1">
          <source-position filename="dee-filter-model.h" line="79"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_filter_model_2" introspectable="0">
        <callback name="_dee_filter_model_2">
          <source-position filename="dee-filter-model.h" line="80"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_filter_model_3" introspectable="0">
        <callback name="_dee_filter_model_3">
          <source-position filename="dee-filter-model.h" line="81"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_filter_model_4" introspectable="0">
        <callback name="_dee_filter_model_4">
          <source-position filename="dee-filter-model.h" line="82"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="FilterModelPrivate"
            c:type="DeeFilterModelPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-filter-model.c"
           line="68">Ignore this structure.</doc>
      <source-position filename="dee-filter-model.h" line="54"/>
    </record>
    <function-macro name="GLIST_RESULT_SET"
                    c:identifier="DEE_GLIST_RESULT_SET"
                    introspectable="0">
      <source-position filename="dee-glist-result-set.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="GLIST_RESULT_SET_CLASS"
                    c:identifier="DEE_GLIST_RESULT_SET_CLASS"
                    introspectable="0">
      <source-position filename="dee-glist-result-set.h" line="35"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="GLIST_RESULT_SET_GET_CLASS"
                    c:identifier="DEE_GLIST_RESULT_SET_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-glist-result-set.h" line="44"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="GListResultSet"
           c:symbol-prefix="glist_result_set"
           c:type="DeeGListResultSet"
           parent="GObject.Object"
           glib:type-name="DeeGListResultSet"
           glib:get-type="dee_glist_result_set_get_type"
           glib:type-struct="GListResultSetClass">
      <source-position filename="dee-glist-result-set.h" line="58"/>
      <implements name="ResultSet"/>
      <function name="new"
                c:identifier="dee_glist_result_set_new"
                introspectable="0">
        <source-position filename="dee-glist-result-set.h" line="62"/>
        <return-value>
          <type name="ResultSet" c:type="DeeResultSet*"/>
        </return-value>
        <parameters>
          <parameter name="rows" transfer-ownership="none">
            <type name="GLib.List" c:type="GList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
          <parameter name="model" transfer-ownership="none">
            <type name="Model" c:type="DeeModel*"/>
          </parameter>
          <parameter name="row_owner" transfer-ownership="none">
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
        </parameters>
      </function>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="GListResultSetClass"
            c:type="DeeGListResultSetClass"
            glib:is-gtype-struct-for="GListResultSet">
      <source-position filename="dee-glist-result-set.h" line="58"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function-macro name="HASH_INDEX"
                    c:identifier="DEE_HASH_INDEX"
                    introspectable="0">
      <source-position filename="dee-hash-index.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="HASH_INDEX_CLASS"
                    c:identifier="DEE_HASH_INDEX_CLASS"
                    introspectable="0">
      <source-position filename="dee-hash-index.h" line="40"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="HASH_INDEX_GET_CLASS"
                    c:identifier="DEE_HASH_INDEX_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-hash-index.h" line="49"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="HashIndex"
           c:symbol-prefix="hash_index"
           c:type="DeeHashIndex"
           parent="Index"
           glib:type-name="DeeHashIndex"
           glib:get-type="dee_hash_index_get_type"
           glib:type-struct="HashIndexClass">
      <doc xml:space="preserve"
           filename="dee-hash-index.h"
           line="56">All fields in the DeeHashIndex structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-hash-index.h" line="73"/>
      <constructor name="new" c:identifier="dee_hash_index_new">
        <doc xml:space="preserve"
             filename="dee-hash-index.c"
             line="401">Create a new hash index.</doc>
        <source-position filename="dee-hash-index.h" line="77"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-hash-index.c"
               line="410">A newly allocated hash index. Free with g_object_unref().</doc>
          <type name="HashIndex" c:type="DeeHashIndex*"/>
        </return-value>
        <parameters>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-hash-index.c"
                 line="403">The model to index</doc>
            <type name="Model" c:type="DeeModel*"/>
          </parameter>
          <parameter name="analyzer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-hash-index.c"
                 line="404">The #DeeAnalyzer used to tokenize and filter the terms extracted
           by @reader</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </parameter>
          <parameter name="reader" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-hash-index.c"
                 line="406">The #DeeModelReader used to extract terms from the model</doc>
            <type name="ModelReader" c:type="DeeModelReader*"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent" readable="0" private="1">
        <type name="Index" c:type="DeeIndex"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="HashIndexPrivate" c:type="DeeHashIndexPrivate*"/>
      </field>
    </class>
    <record name="HashIndexClass"
            c:type="DeeHashIndexClass"
            glib:is-gtype-struct-for="HashIndex">
      <source-position filename="dee-hash-index.h" line="73"/>
      <field name="parent_class">
        <type name="IndexClass" c:type="DeeIndexClass"/>
      </field>
    </record>
    <record name="HashIndexPrivate"
            c:type="DeeHashIndexPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="dee-hash-index.h" line="54"/>
    </record>
    <enumeration name="ICUError"
                 c:type="DeeICUError"
                 glib:error-domain="dee-icu-error-quark">
      <doc xml:space="preserve"
           filename="dee-icu.h"
           line="36">Error codes for the ICU extension to Dee. These codes will be set when the
error domain is #DEE_ICU_ERROR.</doc>
      <source-position filename="dee-icu.h" line="51"/>
      <member name="bad_rule" value="0" c:identifier="DEE_ICU_ERROR_BAD_RULE">
        <doc xml:space="preserve"
             filename="dee-icu.h"
             line="42">Error parsing a transliteration rule</doc>
      </member>
      <member name="bad_id" value="1" c:identifier="DEE_ICU_ERROR_BAD_ID">
        <doc xml:space="preserve"
             filename="dee-icu.h"
             line="43">Error parsing a transliterator system id</doc>
      </member>
      <member name="unknown" value="2" c:identifier="DEE_ICU_ERROR_UNKNOWN">
        <doc xml:space="preserve"
             filename="dee-icu.h"
             line="44">The ICU subsystem returned an error that is not
                        handled in Dee</doc>
      </member>
    </enumeration>
    <record name="ICUTermFilter"
            c:type="DeeICUTermFilter"
            disguised="1"
            opaque="1">
      <source-position filename="dee-icu.h" line="53"/>
      <method name="apply" c:identifier="dee_icu_term_filter_apply">
        <doc xml:space="preserve"
             filename="dee-icu-term-filter.c"
             line="204">Apply a #DeeICUTermFilter on a piece of UTF-8 text.</doc>
        <source-position filename="dee-icu.h" line="61"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-icu-term-filter.c"
               line="211">A newly allocated string. Free with g_free().</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-icu-term-filter.c"
                 line="206">The filter to apply</doc>
            <type name="ICUTermFilter" c:type="DeeICUTermFilter*"/>
          </instance-parameter>
          <parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-icu-term-filter.c"
                 line="207">The text to apply the filter on</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="destroy" c:identifier="dee_icu_term_filter_destroy">
        <doc xml:space="preserve"
             filename="dee-icu-term-filter.c"
             line="258">Free all resources allocated by a #DeeICUTermFilter.</doc>
        <source-position filename="dee-icu.h" line="64"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-icu-term-filter.c"
                 line="260">The filter to free</doc>
            <type name="ICUTermFilter" c:type="DeeICUTermFilter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="new"
                c:identifier="dee_icu_term_filter_new"
                introspectable="0"
                throws="1">
        <doc xml:space="preserve"
             filename="dee-icu-term-filter.c"
             line="134">Create a new #DeeICUTermFilter for a given ICU transliterator system id
and/or set of transliteration rules.</doc>
        <source-position filename="dee-icu.h" line="55"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-icu-term-filter.c"
               line="145">A newly allocated #DeeICUTermFilter.
                          Free with dee_icu_term_filter_destroy().</doc>
          <type name="ICUTermFilter" c:type="DeeICUTermFilter*"/>
        </return-value>
        <parameters>
          <parameter name="system_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-icu-term-filter.c"
                 line="136">A system id for the transliterator to use.
            See &lt;link anchor="http://userguide.icu-project.org/transforms/general"&gt;userguide.icu-project.org/transforms/general&lt;/link&gt;</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="rules"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-icu-term-filter.c"
                 line="138">A set of transliteration rules to use.
                      See &lt;link anchor="http://userguide.icu-project.org/transforms/general/rules"&gt;userguide.icu-project.org/transforms/general/rules&lt;/link&gt;</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_ascii_folder"
                c:identifier="dee_icu_term_filter_new_ascii_folder"
                introspectable="0">
        <doc xml:space="preserve"
             filename="dee-icu-term-filter.c"
             line="190">Construct a term filter that folds any UTF-8 string into ASCII.</doc>
        <source-position filename="dee-icu.h" line="59"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-icu-term-filter.c"
               line="195">A newly allocated #DeeICUTermFilter. Free with
                          dee_icu_term_filter_destroy().</doc>
          <type name="ICUTermFilter" c:type="DeeICUTermFilter*"/>
        </return-value>
      </function>
    </record>
    <function-macro name="INDEX" c:identifier="DEE_INDEX" introspectable="0">
      <source-position filename="dee-index.h" line="39"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="INDEX_CLASS"
                    c:identifier="DEE_INDEX_CLASS"
                    introspectable="0">
      <source-position filename="dee-index.h" line="42"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="INDEX_GET_CLASS"
                    c:identifier="DEE_INDEX_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-index.h" line="51"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ANALYZER"
                    c:identifier="DEE_IS_ANALYZER"
                    introspectable="0">
      <source-position filename="dee-analyzer.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_ANALYZER_CLASS"
                    c:identifier="DEE_IS_ANALYZER_CLASS"
                    introspectable="0">
      <source-position filename="dee-analyzer.h" line="46"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CLIENT"
                    c:identifier="DEE_IS_CLIENT"
                    introspectable="0">
      <source-position filename="dee-client.h" line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CLIENT_CLASS"
                    c:identifier="DEE_IS_CLIENT_CLASS"
                    introspectable="0">
      <source-position filename="dee-client.h" line="44"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILE_RESOURCE_MANAGER"
                    c:identifier="DEE_IS_FILE_RESOURCE_MANAGER"
                    introspectable="0">
      <source-position filename="dee-file-resource-manager.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILE_RESOURCE_MANAGER_CLASS"
                    c:identifier="DEE_IS_FILE_RESOURCE_MANAGER_CLASS"
                    introspectable="0">
      <source-position filename="dee-file-resource-manager.h" line="40"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILTER_MODEL"
                    c:identifier="DEE_IS_FILTER_MODEL"
                    introspectable="0">
      <source-position filename="dee-filter-model.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILTER_MODEL_CLASS"
                    c:identifier="DEE_IS_FILTER_MODEL_CLASS"
                    introspectable="0">
      <source-position filename="dee-filter-model.h" line="46"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_GLIST_RESULT_SET"
                    c:identifier="DEE_IS_GLIST_RESULT_SET"
                    introspectable="0">
      <source-position filename="dee-glist-result-set.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_GLIST_RESULT_SET_CLASS"
                    c:identifier="DEE_IS_GLIST_RESULT_SET_CLASS"
                    introspectable="0">
      <source-position filename="dee-glist-result-set.h" line="41"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_HASH_INDEX"
                    c:identifier="DEE_IS_HASH_INDEX"
                    introspectable="0">
      <source-position filename="dee-hash-index.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_HASH_INDEX_CLASS"
                    c:identifier="DEE_IS_HASH_INDEX_CLASS"
                    introspectable="0">
      <source-position filename="dee-hash-index.h" line="46"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_INDEX"
                    c:identifier="DEE_IS_INDEX"
                    introspectable="0">
      <source-position filename="dee-index.h" line="45"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_INDEX_CLASS"
                    c:identifier="DEE_IS_INDEX_CLASS"
                    introspectable="0">
      <source-position filename="dee-index.h" line="48"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_MODEL"
                    c:identifier="DEE_IS_MODEL"
                    introspectable="0">
      <source-position filename="dee-model.h" line="40"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PEER"
                    c:identifier="DEE_IS_PEER"
                    introspectable="0">
      <source-position filename="dee-peer.h" line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PEER_CLASS"
                    c:identifier="DEE_IS_PEER_CLASS"
                    introspectable="0">
      <source-position filename="dee-peer.h" line="44"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PROXY_MODEL"
                    c:identifier="DEE_IS_PROXY_MODEL"
                    introspectable="0">
      <source-position filename="dee-proxy-model.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PROXY_MODEL_CLASS"
                    c:identifier="DEE_IS_PROXY_MODEL_CLASS"
                    introspectable="0">
      <source-position filename="dee-proxy-model.h" line="46"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_RESOURCE_MANAGER"
                    c:identifier="DEE_IS_RESOURCE_MANAGER"
                    introspectable="0">
      <source-position filename="dee-resource-manager.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_RESULT_SET"
                    c:identifier="DEE_IS_RESULT_SET"
                    introspectable="0">
      <source-position filename="dee-result-set.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SEQUENCE_MODEL"
                    c:identifier="DEE_IS_SEQUENCE_MODEL"
                    introspectable="0">
      <source-position filename="dee-sequence-model.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SEQUENCE_MODEL_CLASS"
                    c:identifier="DEE_IS_SEQUENCE_MODEL_CLASS"
                    introspectable="0">
      <source-position filename="dee-sequence-model.h" line="46"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SERIALIZABLE"
                    c:identifier="DEE_IS_SERIALIZABLE"
                    introspectable="0">
      <source-position filename="dee-serializable.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SERIALIZABLE_MODEL"
                    c:identifier="DEE_IS_SERIALIZABLE_MODEL"
                    introspectable="0">
      <source-position filename="dee-serializable-model.h" line="42"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SERIALIZABLE_MODEL_CLASS"
                    c:identifier="DEE_IS_SERIALIZABLE_MODEL_CLASS"
                    introspectable="0">
      <source-position filename="dee-serializable-model.h" line="45"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SERVER"
                    c:identifier="DEE_IS_SERVER"
                    introspectable="0">
      <source-position filename="dee-server.h" line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SERVER_CLASS"
                    c:identifier="DEE_IS_SERVER_CLASS"
                    introspectable="0">
      <source-position filename="dee-server.h" line="44"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SHARED_MODEL"
                    c:identifier="DEE_IS_SHARED_MODEL"
                    introspectable="0">
      <source-position filename="dee-shared-model.h" line="44"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SHARED_MODEL_CLASS"
                    c:identifier="DEE_IS_SHARED_MODEL_CLASS"
                    introspectable="0">
      <source-position filename="dee-shared-model.h" line="47"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_TERM_LIST"
                    c:identifier="DEE_IS_TERM_LIST"
                    introspectable="0">
      <source-position filename="dee-term-list.h" line="40"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_TERM_LIST_CLASS"
                    c:identifier="DEE_IS_TERM_LIST_CLASS"
                    introspectable="0">
      <source-position filename="dee-term-list.h" line="43"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_TEXT_ANALYZER"
                    c:identifier="DEE_IS_TEXT_ANALYZER"
                    introspectable="0">
      <source-position filename="dee-text-analyzer.h" line="44"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_TEXT_ANALYZER_CLASS"
                    c:identifier="DEE_IS_TEXT_ANALYZER_CLASS"
                    introspectable="0">
      <source-position filename="dee-text-analyzer.h" line="47"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_TRANSACTION"
                    c:identifier="DEE_IS_TRANSACTION"
                    introspectable="0">
      <source-position filename="dee-transaction.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_TRANSACTION_CLASS"
                    c:identifier="DEE_IS_TRANSACTION_CLASS"
                    introspectable="0">
      <source-position filename="dee-transaction.h" line="46"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_TREE_INDEX"
                    c:identifier="DEE_IS_TREE_INDEX"
                    introspectable="0">
      <source-position filename="dee-tree-index.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_TREE_INDEX_CLASS"
                    c:identifier="DEE_IS_TREE_INDEX_CLASS"
                    introspectable="0">
      <source-position filename="dee-tree-index.h" line="46"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Index"
           c:symbol-prefix="index"
           c:type="DeeIndex"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="DeeIndex"
           glib:get-type="dee_index_get_type"
           glib:type-struct="IndexClass">
      <doc xml:space="preserve"
           filename="dee-index.h"
           line="100">All fields in the DeeIndex structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-index.h" line="143"/>
      <virtual-method name="foreach" invoker="foreach">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="275">Iterate over an index optionally starting from some given term. Note that
unordered indexes (like #DeeHashIndex) has undefined behaviour with
this method.</doc>
        <source-position filename="dee-index.h" line="123"/>
        <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="dee-index.c"
                 line="277">The index to iterate over</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
          <parameter name="start_term" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="278">The term to start from or %NULL to iterate over all terms</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="279">Called for each term in the index</doc>
            <type name="IndexIterFunc" c:type="DeeIndexIterFunc"/>
          </parameter>
          <parameter name="userdata"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="280">Arbitrary data to pass back to @func</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_rows" invoker="get_n_rows">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="370">Get the number of indexed rows. A row is only indexed if it has at least one
term associated with it. If the analyzer has returned 0 terms then the row
is omitted from the index.</doc>
        <source-position filename="dee-index.h" line="130"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="378">The number of rows in the index. Note that this may less than or
         equal to dee_model_get_n_rows().</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="372">The index to get the number of rows for</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_rows_for_term" invoker="get_n_rows_for_term">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="393">Get the number of rows that matches a given term</doc>
        <source-position filename="dee-index.h" line="132"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="400">The number of rows in the index registered for the given term</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="395">The index to inspect</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
          <parameter name="term" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="396">The term to look for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_terms" invoker="get_n_terms">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="350">Get the number of terms in the index</doc>
        <source-position filename="dee-index.h" line="128"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="356">The number of unique terms in the index</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="352">The index to get the number of terms for</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_supported_term_match_flags"
                      invoker="get_supported_term_match_flags">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="415">Get the #DeeTermMatchFlag&lt;!-- --&gt; supported by this #DeeIndex instance</doc>
        <source-position filename="dee-index.h" line="135"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="421">A bit mask of the acceptedd #DeeTermMatchFlag&lt;!-- --&gt;s</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="417">The index to inspect</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="lookup" invoker="lookup">
        <source-position filename="dee-index.h" line="119"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="210">A #DeeResultSet. Free with g_object_unref().</doc>
          <type name="ResultSet" c:type="DeeResultSet*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="205">The index to perform the lookup in</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
          <parameter name="term" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="206">The term to look up on</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="207">A bitmask of #DeeTermMatchFlag&lt;!-- --&gt; to control how matching is
        done</doc>
            <type name="TermMatchFlag" c:type="DeeTermMatchFlag"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="foreach" c:identifier="dee_index_foreach">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="275">Iterate over an index optionally starting from some given term. Note that
unordered indexes (like #DeeHashIndex) has undefined behaviour with
this method.</doc>
        <source-position filename="dee-index.h" line="154"/>
        <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="dee-index.c"
                 line="277">The index to iterate over</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
          <parameter name="start_term" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="278">The term to start from or %NULL to iterate over all terms</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="279">Called for each term in the index</doc>
            <type name="IndexIterFunc" c:type="DeeIndexIterFunc"/>
          </parameter>
          <parameter name="userdata"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="280">Arbitrary data to pass back to @func</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_analyzer"
              c:identifier="dee_index_get_analyzer"
              glib:get-property="analyzer">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="317">Get the analyzer being used to analyze terms extracted with the
#DeeModelReader used by this index.</doc>
        <source-position filename="dee-index.h" line="161"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="324">The #DeeAnalyzer used to analyze terms with</doc>
          <type name="Analyzer" c:type="DeeAnalyzer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="319">The index to get the analyzer for</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_model"
              c:identifier="dee_index_get_model"
              glib:get-property="model">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="301">Get the model being indexed by this index</doc>
        <source-position filename="dee-index.h" line="159"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="307">The #DeeModel being indexed by this index</doc>
          <type name="Model" c:type="DeeModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="303">The index to get the model for</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_rows" c:identifier="dee_index_get_n_rows">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="370">Get the number of indexed rows. A row is only indexed if it has at least one
term associated with it. If the analyzer has returned 0 terms then the row
is omitted from the index.</doc>
        <source-position filename="dee-index.h" line="167"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="378">The number of rows in the index. Note that this may less than or
         equal to dee_model_get_n_rows().</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="372">The index to get the number of rows for</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_rows_for_term"
              c:identifier="dee_index_get_n_rows_for_term">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="393">Get the number of rows that matches a given term</doc>
        <source-position filename="dee-index.h" line="169"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="400">The number of rows in the index registered for the given term</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="395">The index to inspect</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
          <parameter name="term" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="396">The term to look for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_n_terms" c:identifier="dee_index_get_n_terms">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="350">Get the number of terms in the index</doc>
        <source-position filename="dee-index.h" line="165"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="356">The number of unique terms in the index</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="352">The index to get the number of terms for</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_reader" c:identifier="dee_index_get_reader">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="334">Get the reader being used to extract terms from rows in the model</doc>
        <source-position filename="dee-index.h" line="163"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="340">The #DeeModelReader used to extract terms with</doc>
          <type name="ModelReader" c:type="DeeModelReader*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="336">The index to get the reader for</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_supported_term_match_flags"
              c:identifier="dee_index_get_supported_term_match_flags">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="415">Get the #DeeTermMatchFlag&lt;!-- --&gt; supported by this #DeeIndex instance</doc>
        <source-position filename="dee-index.h" line="172"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="421">A bit mask of the acceptedd #DeeTermMatchFlag&lt;!-- --&gt;s</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="417">The index to inspect</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lookup" c:identifier="dee_index_lookup">
        <source-position filename="dee-index.h" line="147"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="210">A #DeeResultSet. Free with g_object_unref().</doc>
          <type name="ResultSet" c:type="DeeResultSet*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="205">The index to perform the lookup in</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
          <parameter name="term" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="206">The term to look up on</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="207">A bitmask of #DeeTermMatchFlag&lt;!-- --&gt; to control how matching is
        done</doc>
            <type name="TermMatchFlag" c:type="DeeTermMatchFlag"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_one" c:identifier="dee_index_lookup_one">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="226">Convenience function in for cases where you have a priori guarantee that
a dee_index_lookup() call will return exactly 0 or 1 row. If the lookup
returns more than 1 row a warning will be printed on standard error and
%NULL will be returned.

The typical use case for this function is if you need something akin to
a primary key in a relational database.</doc>
        <source-position filename="dee-index.h" line="151"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.c"
               line="239">A #DeeModelIter pointing to the matching
              row or %NULL in case no rows matches @term</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="228">The index to do the lookup in</doc>
            <type name="Index" c:type="DeeIndex*"/>
          </instance-parameter>
          <parameter name="term" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="229">The exact term to match</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="analyzer"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_analyzer">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="169">The #DeeAnalyzer used to analyze terms extracted by the model reader</doc>
        <type name="Analyzer"/>
      </property>
      <property name="model"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_model">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="157">The #DeeModel being indexed</doc>
        <type name="Model"/>
      </property>
      <property name="reader"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="dee-index.c"
             line="183">The #DeeModelReader used to extract terms from rows in the model</doc>
        <type name="ModelReader" c:type="gpointer"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="IndexPrivate" c:type="DeeIndexPrivate*"/>
      </field>
    </class>
    <record name="IndexClass"
            c:type="DeeIndexClass"
            glib:is-gtype-struct-for="Index">
      <source-position filename="dee-index.h" line="143"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="lookup">
        <callback name="lookup">
          <source-position filename="dee-index.h" line="119"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="210">A #DeeResultSet. Free with g_object_unref().</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="205">The index to perform the lookup in</doc>
              <type name="Index" c:type="DeeIndex*"/>
            </parameter>
            <parameter name="term" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="206">The term to look up on</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="207">A bitmask of #DeeTermMatchFlag&lt;!-- --&gt; to control how matching is
        done</doc>
              <type name="TermMatchFlag" c:type="DeeTermMatchFlag"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="foreach">
        <callback name="foreach">
          <source-position filename="dee-index.h" line="123"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="277">The index to iterate over</doc>
              <type name="Index" c:type="DeeIndex*"/>
            </parameter>
            <parameter name="start_term" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="278">The term to start from or %NULL to iterate over all terms</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="func"
                       transfer-ownership="none"
                       scope="call"
                       closure="3">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="279">Called for each term in the index</doc>
              <type name="IndexIterFunc" c:type="DeeIndexIterFunc"/>
            </parameter>
            <parameter name="userdata"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="280">Arbitrary data to pass back to @func</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_terms">
        <callback name="get_n_terms">
          <source-position filename="dee-index.h" line="128"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="356">The number of unique terms in the index</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="352">The index to get the number of terms for</doc>
              <type name="Index" c:type="DeeIndex*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_rows">
        <callback name="get_n_rows">
          <source-position filename="dee-index.h" line="130"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="378">The number of rows in the index. Note that this may less than or
         equal to dee_model_get_n_rows().</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="372">The index to get the number of rows for</doc>
              <type name="Index" c:type="DeeIndex*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_rows_for_term">
        <callback name="get_n_rows_for_term">
          <source-position filename="dee-index.h" line="132"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="400">The number of rows in the index registered for the given term</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="395">The index to inspect</doc>
              <type name="Index" c:type="DeeIndex*"/>
            </parameter>
            <parameter name="term" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="396">The term to look for</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_supported_term_match_flags">
        <callback name="get_supported_term_match_flags">
          <source-position filename="dee-index.h" line="135"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-index.c"
                 line="421">A bit mask of the acceptedd #DeeTermMatchFlag&lt;!-- --&gt;s</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-index.c"
                   line="417">The index to inspect</doc>
              <type name="Index" c:type="DeeIndex*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_dee_index_1" introspectable="0">
        <callback name="_dee_index_1">
          <source-position filename="dee-index.h" line="138"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_index_2" introspectable="0">
        <callback name="_dee_index_2">
          <source-position filename="dee-index.h" line="139"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_index_3" introspectable="0">
        <callback name="_dee_index_3">
          <source-position filename="dee-index.h" line="140"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_index_4" introspectable="0">
        <callback name="_dee_index_4">
          <source-position filename="dee-index.h" line="141"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_index_5" introspectable="0">
        <callback name="_dee_index_5">
          <source-position filename="dee-index.h" line="142"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <callback name="IndexIterFunc" c:type="DeeIndexIterFunc">
      <doc xml:space="preserve"
           filename="dee-index.h"
           line="58">The signature of the function passed to dee_index_foreach().

Be cautious if you plan on modifying the rows in the model via the
DeeModelIter&lt;!-- --&gt;s you find. Your code may have to be reentrant since
the index may change in reaction to the changes in the model. It's not
impossible to do this in a non-broken manner, but it may likely require
you calling dee_model_freeze_signals() and dee_model_thaw_signals() at
strategic points.</doc>
      <source-position filename="dee-index.h" line="75"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="dee-index.h"
             line="73">%FALSE if iteration should stop, %TRUE if it should continue</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.h"
               line="60">A key in the index being traversed</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="rows" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-index.h"
               line="61">A #DeeResultSet. Do not free or modify.</doc>
          <type name="ResultSet" c:type="DeeResultSet*"/>
        </parameter>
        <parameter name="userdata"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <doc xml:space="preserve"
               filename="dee-index.h"
               line="62">The pointer passed to dee_index_foreach()</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="IndexPrivate"
            c:type="DeeIndexPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-index.c"
           line="46">Ignore this structure.</doc>
      <source-position filename="dee-index.h" line="56"/>
    </record>
    <function-macro name="MODEL" c:identifier="DEE_MODEL" introspectable="0">
      <source-position filename="dee-model.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MODEL_GET_IFACE"
                    c:identifier="DEE_MODEL_GET_IFACE"
                    introspectable="0">
      <source-position filename="dee-model.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <interface name="Model"
               c:symbol-prefix="model"
               c:type="DeeModel"
               glib:type-name="DeeModel"
               glib:get-type="dee_model_get_type"
               glib:type-struct="ModelIface">
      <source-position filename="dee-model.h" line="281"/>
      <virtual-method name="append_row" invoker="append_row">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1232">Like dee_model_append() but intended for language bindings or
situations where you work with models on a meta level and may not have
a prior knowledge of the column schemas of the models. See also
dee_model_build_row().</doc>
        <source-position filename="dee-model.h" line="152"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1245">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1234">The model to prepend a row to</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1235">An array of  #GVariants with type
              signature matching those of the column schemas of @self.
              If any of the variants have floating references they will be
              consumed</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="begin_changeset" invoker="begin_changeset">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="689">Notify listeners that the model is about to be changed, which means that
multiple row additions / changes / removals will follow.
The default implementation of this method will emit
the ::changeset-started signal.

It is not stricly necessary to enclose every change to a model
in a dee_model_begin_changeset() and dee_model_end_changeset() calls, but
doing so is highly recommended and allows implementing various optimizations.

The usual way to perform multiple changes to a model is as follows:

&lt;programlisting&gt;
void update_model (DeeModel *model)
{
  GVariant **added_row_data1 = ...;
  GVariant **added_row_data2 = ...;

  dee_model_begin_changeset (model);

  dee_model_remove (model, dee_model_get_first_iter (model));
  dee_model_append_row (model, added_row_data1);
  dee_model_append_row (model, added_row_data2);

  dee_model_end_changeset (model);
}
&lt;/programlisting&gt;</doc>
        <source-position filename="dee-model.h" line="269"/>
        <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="dee-model.c"
                 line="691">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="changeset_finished">
        <source-position filename="dee-model.h" line="275"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="changeset_started">
        <source-position filename="dee-model.h" line="273"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="clear" invoker="clear">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1864">Removes all rows in the model. Signals are emitted for each row in the model</doc>
        <source-position filename="dee-model.h" line="180"/>
        <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="dee-model.c"
                 line="1866">a #DeeModel object to clear</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="end_changeset" invoker="end_changeset">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="735">Notify listeners that all changes have been committed to the model.
The default implementation of this method will emit
the ::changeset-finished signal.

See also dee_model_begin_changeset().</doc>
        <source-position filename="dee-model.h" line="271"/>
        <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="dee-model.c"
                 line="737">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="find_row_sorted" invoker="find_row_sorted">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1694">Finds a row in @self according to the sorting specified by @cmp_func.
This method will assume that @self is already sorted by @cmp_func.

If you use this method for searching you should only use
dee_model_insert_row_sorted() to insert rows in the model.</doc>
        <source-position filename="dee-model.h" line="171"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1714">If @out_was_found is set to
          %TRUE then a #DeeModelIter pointing to the last matching row.
          If it is %FALSE then the iter pointing to the row just after where
          @row_spec_would have been inserted.</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1696">The model to search</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row_spec" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1697">An array of
      #GVariants with type signature matching those of the
      column schemas of @self. No references will be taken on the variants.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
          <parameter name="cmp_func"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1700">Callback used for comparison or rows</doc>
            <type name="CompareRowFunc" c:type="DeeCompareRowFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="2">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1701">Arbitrary pointer passed to @cmp_func during search</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="out_was_found"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1702">A place to store a boolean value that will be set when
                this method returns. If %TRUE then an exact match was found.
                If %FALSE then the returned iter points to a row just after
                where @row_spec would have been inserted.
                Pass %NULL to ignore.</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_bool" invoker="get_bool">
        <source-position filename="dee-model.h" line="206"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2209">if @iter and @column are valid, the boolean stored at @column.
              Otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2205">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2206">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2207">the column to retrieve a boolean from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_column_index" invoker="get_column_index">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="570">Get the column index of a column.</doc>
        <source-position filename="dee-model.h" line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="577">0-based index of the column or -1 if column with this name
              wasn't found</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="572">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="column_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="573">the column name to retrieve the index of</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_column_names" invoker="get_column_names">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="468">Get a %NULL-terminated array of column names for the columns of @self.
These names can be used in calls to dee_model_build_named_row().</doc>
        <source-position filename="dee-model.h" line="138"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="477">
         A %NULL-terminated array of #GVariant type strings. The length of
         the returned array is written to @num_columns. The returned array
         should not be freed or modified. It is owned by the model.</doc>
          <array length="0" zero-terminated="0" c:type="const gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="470">The #DeeModel to get the the schema for</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="num_columns"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="471">Address of an integer in which to store the
              number of columns in @self. Or %NULL to ignore the array length.</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_column_schema" invoker="get_column_schema">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="522">Get the #GVariant signature of a column</doc>
        <source-position filename="dee-model.h" line="124"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="529">the #GVariant signature of the column at index @column</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="524">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="525">the column to get retrieve the #GVariant type string of</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_double" invoker="get_double">
        <source-position filename="dee-model.h" line="230"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2349">if @iter and @column are valid, the double stored at @column.
 Otherwise 0.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2345">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2346">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2347">the column to retrieve a double from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_field_schema" invoker="get_field_schema">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="544">Get the #GVariant signature of field previously registered with
dee_model_register_vardict_schema().</doc>
        <source-position filename="dee-model.h" line="127"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="553">the #GVariant signature for the field, or %NULL if given field
              wasn't registered with dee_model_register_vardict_schema().</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="546">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="field_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="547">name of vardict field to get schema of</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_column"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="548">column index of the associated vardict</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_first_iter" invoker="get_first_iter">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2389">Retrieves a #DeeModelIter representing the first row in @self.</doc>
        <source-position filename="dee-model.h" line="199"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2395">A #DeeModelIter (owned by @self, do not
 free it)</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2391">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_int32" invoker="get_int32">
        <source-position filename="dee-model.h" line="214"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2255">if @iter and @column are valid, the int stored at @column.
 Otherwise 0.</doc>
          <type name="gint32" c:type="gint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2251">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2252">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2253">the column to retrieve a int from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_int64" invoker="get_int64">
        <source-position filename="dee-model.h" line="222"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2302">if @iter and @column are valid, the int64 stored at @column.
 Otherwise 0.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2298">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2299">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2300">the column to retrieve a int64 from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_iter_at_row" invoker="get_iter_at_row">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2436">Retrieves a #DeeModelIter representing the row at the given index.

Note that this method does not have any performance guarantees. In particular
it is not guaranteed to be &lt;emphasis&gt;O(1)&lt;/emphasis&gt;.</doc>
        <source-position filename="dee-model.h" line="203"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2446">A new #DeeModelIter, or %NULL if @row
  was out of bounds. The returned iter is owned by @self, so do not free it.</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2438">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2439">position of the row to retrieve</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_last_iter" invoker="get_last_iter">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2410">Retrieves a #DeeModelIter pointing right &lt;emphasis&gt;after&lt;/emphasis&gt; the
last row in @self. This is refered to also the the
&lt;emphasis&gt;end iter&lt;/emphasis&gt;.

As with other iters the end iter, in particular, is stable over inserts,
changes, or removals.</doc>
        <source-position filename="dee-model.h" line="201"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2421">A #DeeModelIter (owned by @self, do not
 free it)</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2412">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_columns" invoker="get_n_columns">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="649">Gets the number of columns in @self</doc>
        <source-position filename="dee-model.h" line="148"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="655">the number of columns per row in @self</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="651">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_rows" invoker="get_n_rows">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="669">Gets the number of rows in @self</doc>
        <source-position filename="dee-model.h" line="150"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="675">the number of rows in @self</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="671">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_position" invoker="get_position">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2552">Get the numeric offset of @iter into @self. Note that this method is
&lt;emphasis&gt;not&lt;/emphasis&gt;  guaranteed to be &lt;emphasis&gt;O(1)&lt;/emphasis&gt;.</doc>
        <source-position filename="dee-model.h" line="250"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2560">The integer offset of @iter in @self</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2554">The model to inspect</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2555">The iter to get the position of</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_row">
        <source-position filename="dee-model.h" line="265"/>
        <return-value transfer-ownership="full">
          <type name="GLib.Variant" c:type="GVariant**"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="out_row_members" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_schema" invoker="get_schema">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="495">Get a %NULL-terminated array of #GVariant type strings that defines the
required formats for the columns of @self.</doc>
        <source-position filename="dee-model.h" line="121"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="504">
         A %NULL-terminated array of #GVariant type strings. The length of
         the returned array is written to @num_columns. The returned array
         should not be freed or modified. It is owned by the model.</doc>
          <array length="0" zero-terminated="0" c:type="const gchar* const*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="497">The #DeeModel to get the the schema for</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="num_columns"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="498">Address of an integer in which to store the
              number of columns in @self. Or %NULL to ignore the array length.</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_string" invoker="get_string">
        <source-position filename="dee-model.h" line="234"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2372">if @iter and @column are valid, the string stored at @column.
              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="dee-model.c"
                 line="2368">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2369">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2370">the column to retrieve a string from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_tag" invoker="get_tag">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2613">Look up a tag value for a given row in a model. This method is guaranteed
to be O(1).</doc>
        <source-position filename="dee-model.h" line="256"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2622">Returns %NULL if @tag is unset otherwise the
              value of the tag as it was set with dee_model_set_tag().</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2615">The model to get a tag from</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2616">A #DeeModelIter pointing to the row to get the tag from</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2617">The tag handle to retrieve the tag value for</doc>
            <type name="ModelTag" c:type="DeeModelTag*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_uchar" invoker="get_uchar">
        <source-position filename="dee-model.h" line="210"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2232">if @iter and @column are valid, the uchar stored at @column.
 Otherwise 0.</doc>
          <type name="guint8" c:type="guchar"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2228">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2229">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2230">the column to retrieve a uchar from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_uint32" invoker="get_uint32">
        <source-position filename="dee-model.h" line="218"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2278">if @iter and @column are valid, the uint stored at @column.
 Otherwise 0.</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2274">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2275">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2276">the column to retrieve a uint from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_uint64" invoker="get_uint64">
        <source-position filename="dee-model.h" line="226"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2326">if @iter and @column are valid, the uint64 stored at @column.
 Otherwise 0.</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2322">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2323">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2324">the column to retrieve a uint64 from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_value" invoker="get_value">
        <source-position filename="dee-model.h" line="191"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2163">A, guaranteed non-floating, reference to a
         #GVariant containing the row data. Free with g_variant_unref().</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2159">The #DeeModel to inspect</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2160">a #DeeModelIter pointing to the row to inspect</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2161">column number to retrieve the value from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_value_by_name" invoker="get_value_by_name">
        <source-position filename="dee-model.h" line="195"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2186">A, guaranteed non-floating, reference to a
         #GVariant containing the row data. Free with g_variant_unref().</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2182">The #DeeModel to inspect</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2183">a #DeeModelIter pointing to the row to inspect</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column_name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_vardict_schema" invoker="get_vardict_schema">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="623">Get a schema for variant dictionary column previously registered using
dee_model_register_vardict_schema().</doc>
        <source-position filename="dee-model.h" line="145"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="631">Hashtable
              containing a mapping from field names to schemas or NULL.
              Note that keys and values in the hashtable may be owned
              by the model, so you need to create a deep copy if you
              intend to keep the hashtable around.</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="625">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="num_column" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="insert_row" invoker="insert_row">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1424">As dee_model_insert(), but intended for language bindings or
situations where you work with models on a meta level and may not have
a priori knowledge of the column schemas of the models. See also
dee_model_build_row().</doc>
        <source-position filename="dee-model.h" line="158"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1438">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1426">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1427">The index to insert the row on. The existing row will be pushed down.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1428">An array of
              #GVariants with type signature matching those of
              the column schemas of @self. If any of the variants have
              floating references they will be consumed.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="insert_row_before" invoker="insert_row_before">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1537">As dee_model_insert_before(), but intended for language bindings or
situations where you work with models on a meta level and may not have
a priori knowledge of the column schemas of the models. See also
dee_model_build_row().</doc>
        <source-position filename="dee-model.h" line="162"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1551">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1539">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1540">An iter pointing to the row before which to insert the new one</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1541">An array of
      #GVariants with type signature matching those of the
      column schemas of @self. If any of the variants have floating
      references they will be consumed.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="insert_row_sorted" invoker="insert_row_sorted">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1583">Inserts a row in @self according to the sorting specified by @cmp_func.
If you use this method for insertion you should not use other methods as this
method assumes the model to be already sorted by @cmp_func.</doc>
        <source-position filename="dee-model.h" line="166"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1597">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1585">The model to do a sorted insert on</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1586">An array of
      #GVariants with type signature matching those of the
      column schemas of @self. If any of the variants have floating
      references they will be consumed.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
          <parameter name="cmp_func"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1590">Callback used for comparison or rows</doc>
            <type name="CompareRowFunc" c:type="DeeCompareRowFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     closure="2">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1591">Arbitrary pointer passed to @cmp_func during search</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_first" invoker="is_first">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2507">Checks if @iter is the very first iter @self.</doc>
        <source-position filename="dee-model.h" line="244"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2514">#TRUE if @iter is the first iter in the model</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2509">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2510">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_last" invoker="is_last">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2529">Whether @iter is the end iter of @self. Note that the end iter points
right &lt;emphasis&gt;after&lt;/emphasis&gt; the last valid row in @self.</doc>
        <source-position filename="dee-model.h" line="247"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2537">#TRUE if @iter is the last iter in the model</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2531">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2532">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="next" invoker="next">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2461">Returns a #DeeModelIter that points to the next position in the model.</doc>
        <source-position filename="dee-model.h" line="238"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2468">A #DeeModelIter, pointing to the next row in
  the model. The iter is owned by @self, do not free it.</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2463">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2464">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="prepend_row" invoker="prepend_row">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1329">Like dee_model_prepend() but intended for language bindings or
situations where you work with models on a meta level and may not have
a priori knowledge of the column schemas of the models. See also
dee_model_build_row().</doc>
        <source-position filename="dee-model.h" line="155"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1342">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1331">The model to prepend a row to</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1332">An array of
              #GVariants with type signature matching those of
              the column schemas of @self. If any of the variants have
              floating references they will be consumed.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="prev" invoker="prev">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2484">Returns a #DeeModelIter that points to the previous position in the model.</doc>
        <source-position filename="dee-model.h" line="241"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2491">A #DeeModelIter, pointing to the previous
  row in the model. The iter is owned by @self, do not free it.</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2486">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2487">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="register_tag" invoker="register_tag">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2575">Register a new tag on a #DeeModel. A &lt;emphasis&gt;tag&lt;/emphasis&gt; is an extra
value attached to a given row on a model. The tags are invisible to all
that doesn't have the tag handle returned by this method. #DeeModel
implementations must ensure that dee_model_get_tag() is an O(1) operation.

Tags can be very useful in associating some extra data to a row in a model
and have that automatically synced when the model changes. If you're
writing a tiled view for a model you might want to tag each row with the
tile widget for that row. That way you have very convenient access to the
tile widget given any row in the model.

The private nature of tags and the fact that you can store arbitrary pointers
and binary data in them also means that they are not serialized if you
utilize a model implementation that exposes the #DeeSerializable interface.</doc>
        <source-position filename="dee-model.h" line="253"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2597">A #DeeModelTag handle
              that you can use to set and get tags with</doc>
          <type name="ModelTag" c:type="DeeModelTag*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2577">The model to register a tag on</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="tag_destroy"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2578">Function called when a tagged row is removed from the model.
              This function will also be called on all tagged rows when the
              model is finalized.</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="register_vardict_schema"
                      invoker="register_vardict_schema">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="593">Register schema for fields in a model containing column with variant
dictionary schema ('a{sv}').
The keys registered with this function can be later used
with dee_model_build_named_row() function, as well as
dee_model_get_value_by_name(). Note that it is possible to register
the same field name for multiple columns, in which case you need to use
fully-qualified "column_name::field" name in the calls to
dee_model_build_named_row() and dee_model_get_field_schema().</doc>
        <source-position filename="dee-model.h" line="141"/>
        <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="dee-model.c"
                 line="595">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="num_column" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="schemas" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="597">hashtable with keys specifying
          names of the fields and values defining their schema</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove" invoker="remove">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1842">Removes the row at the given position from the model.</doc>
        <source-position filename="dee-model.h" line="177"/>
        <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="dee-model.c"
                 line="1844">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1845">a #DeeModelIter pointing to the row to remove</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="row_added">
        <source-position filename="dee-model.h" line="107"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="row_changed">
        <source-position filename="dee-model.h" line="113"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="row_removed">
        <source-position filename="dee-model.h" line="110"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_column_names_full"
                      invoker="set_column_names_full">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="438">Set column names used by @self.
This method must be called exactly once, but only after setting
a schema of the model. Note that some constructors will do this for you.</doc>
        <source-position filename="dee-model.h" line="134"/>
        <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="dee-model.c"
                 line="440">A #DeeModel.</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="column_names" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="441">A list of column names terminated by a %NULL</doc>
            <array length="1" zero-terminated="1" c:type="const gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="num_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="442">an integer specifying the array length for @annotations</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_row" invoker="set_row">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1988">Sets all columns in the row @iter points to, to those found in
@row_members. The variants in @row_members must match the types defined in
the model's schema.</doc>
        <source-position filename="dee-model.h" line="187"/>
        <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="dee-model.c"
                 line="1990">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1991">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1992">And array of
              #GVariant&lt;!-- --&gt;s with type signature matching
              those from the model schema. If any of the variants have
              floating references these will be consumed</doc>
            <array zero-terminated="0" c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_schema_full" invoker="set_schema_full">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="363">Set the #GVariant types and the number of columns used by @self.
This method must be called exactly once before using @self. Note that
some constructors will do this for you.</doc>
        <source-position filename="dee-model.h" line="117"/>
        <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="dee-model.c"
                 line="365">The #DeeModel to set the column layout for</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="column_schemas" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="366">A list of #GVariant type strings terminated by a %NULL</doc>
            <array length="1" zero-terminated="1" c:type="const char* const*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="num_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="367">an integer specifying the array length for @VarArgs</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_tag" invoker="set_tag">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2639">Set a tag on a row in a model. This function is guaranteed to be O(1).
See also dee_model_register_tag().

If @tag is already set on this row the existing tag value will be destroyed
with the #GDestroyNotify passed to the dee_model_register_tag().</doc>
        <source-position filename="dee-model.h" line="260"/>
        <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="dee-model.c"
                 line="2641">The model to set a tag on</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2642">The row to set the tag on</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2643">The tag handle for the tag as obtained from dee_model_register_tag()</doc>
            <type name="ModelTag" c:type="DeeModelTag*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2644">The value to set for @tag. Note that %NULL represents an unset tag</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_value" invoker="set_value">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1956">Sets the data in @column for the row @iter points to, to @value. The type
of @value must be convertible to the type of the column.

When this method call completes the model will emit ::row-changed. You can
edit the model in place without triggering the change signals by calling
dee_model_set_value_silently().</doc>
        <source-position filename="dee-model.h" line="182"/>
        <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="dee-model.c"
                 line="1958">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1959">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1960">column number to set the value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1961">New value for cell. If @value is a floating reference the model
        will assume ownership of the variant</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="append" c:identifier="dee_model_append" introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1171">Creates and appends a new row to the end of a #DeeModel, setting the row
values upon creation.

For and example see dee_model_insert_before().</doc>
        <source-position filename="dee-model.h" line="336"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1185">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1173">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="append_row" c:identifier="dee_model_append_row">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1232">Like dee_model_append() but intended for language bindings or
situations where you work with models on a meta level and may not have
a prior knowledge of the column schemas of the models. See also
dee_model_build_row().</doc>
        <source-position filename="dee-model.h" line="339"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1245">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1234">The model to prepend a row to</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1235">An array of  #GVariants with type
              signature matching those of the column schemas of @self.
              If any of the variants have floating references they will be
              consumed</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="begin_changeset" c:identifier="dee_model_begin_changeset">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="689">Notify listeners that the model is about to be changed, which means that
multiple row additions / changes / removals will follow.
The default implementation of this method will emit
the ::changeset-started signal.

It is not stricly necessary to enclose every change to a model
in a dee_model_begin_changeset() and dee_model_end_changeset() calls, but
doing so is highly recommended and allows implementing various optimizations.

The usual way to perform multiple changes to a model is as follows:

&lt;programlisting&gt;
void update_model (DeeModel *model)
{
  GVariant **added_row_data1 = ...;
  GVariant **added_row_data2 = ...;

  dee_model_begin_changeset (model);

  dee_model_remove (model, dee_model_get_first_iter (model));
  dee_model_append_row (model, added_row_data1);
  dee_model_append_row (model, added_row_data2);

  dee_model_end_changeset (model);
}
&lt;/programlisting&gt;</doc>
        <source-position filename="dee-model.h" line="501"/>
        <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="dee-model.c"
                 line="691">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="build_named_row"
              c:identifier="dee_model_build_named_row"
              introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="878">Build an array of #GVariant&lt;!-- --&gt;s with values from the variadic argument
list according to the column names and model schema for @self.
The caller must call g_variant_ref_sink() and g_variant_unref()
on all the returned variants and g_free() the array itself if %NULL
was passed as @out_row_members.

This is utility function and will not touch or modify @self in any way.

For example, to append a row to model with signature ("s", "u", "s") and
column names set to ("uri", "count", "description") you could do:
&lt;informalexample&gt;&lt;programlisting&gt;
 GVariant    *row_buf[3];

 dee_model_append_row (model,
   dee_model_build_named_row (model, row_buf,
                              "uri", "http://example.org",
                              "count", 435,
                              "description", "Example.org site", NULL));
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <source-position filename="dee-model.h" line="509"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="913">If @out_row_members is %NULL a newly allocated array of variants
         will be returned and the array must be freed with g_free().
         If @out_row_members is non-%NULL it will be reused, and variants in
         the array may or may not have floating references, which means the
         caller must make sure that g_variant_ref_sink() and
         g_variant_unref() are called on them.</doc>
          <type name="GLib.Variant" c:type="GVariant**"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="880">The model to create a row for</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="out_row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="881">An array to write the values to or %NULL to allocate
                  a new array. If non-%NULL it must have a length
                  that is longer or equal to the number of columns in @self</doc>
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
          <parameter name="first_column_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="884">A column name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="build_named_row_sunk"
              c:identifier="dee_model_build_named_row_sunk"
              introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="942">Version of dee_model_build_named_row() for language bindings - as opposed to
dee_model_build_named_row(), the returned variants will be strong
references, therefore you always have to call g_variant_unref() on the items
and g_free() the array itself if %NULL was passed as @out_row_members.

If @out_row_members is non-%NULL, g_variant_unref() will be called
on its elements (if also non-%NULL), which allows easy reuse of the array
memory in loops.

This is utility function and will not touch or modify @self in any way.

Example of memory management for model with schema ("s", "i") and
column names ("uri", "count"):
&lt;informalexample&gt;&lt;programlisting&gt;
 GVariant    **row_buf;

 row_buf = dee_model_build_named_row_sunk (model, NULL, "uri", "file:///",
                                           "count", 0, NULL);
 dee_model_append_row (model, row_buf);

 for (int i = 1; i &lt; 100; i++)
 {
   dee_model_append_row (model,
     dee_model_build_named_row_sunk (model, row_buf, "uri", "file:///",
                                     "count", i, NULL));
 }
 
 g_variant_unref (row_buf[0]);
 g_variant_unref (row_buf[1]);
 g_free (row_buf);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <source-position filename="dee-model.h" line="519"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="988">If @out_row_members is %NULL
         a newly allocated array of variants will be returned and the array
         must be freed with g_free().
         If @out_row_members is non-%NULL it will be reused. Variants in
         the array will have strong references, which means the
         caller must make sure that g_variant_unref() is called on them.</doc>
          <array length="1" zero-terminated="0" c:type="GVariant**">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="944">The model to create a row for</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="out_row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="945">An array to write the values to or %NULL to
                  allocate a new array. If non-%NULL it must have a length
                  that is longer or equal to the number of columns in @self</doc>
            <array zero-terminated="0" c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
          <parameter name="out_array_length"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="948">Length of the returned variant array</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="first_column_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="949">A column name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="build_named_row_valist"
              c:identifier="dee_model_build_named_row_valist"
              introspectable="0">
        <source-position filename="dee-model.h" line="514"/>
        <return-value transfer-ownership="full">
          <type name="GLib.Variant" c:type="GVariant**"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="out_row_members" transfer-ownership="none">
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
          <parameter name="first_column_name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <type name="va_list" c:type="va_list*"/>
          </parameter>
        </parameters>
      </method>
      <method name="build_row"
              c:identifier="dee_model_build_row"
              introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="786">Build an array of #GVariant&lt;!-- --&gt;s with values from the variadic argument
list according to the model schema for @self. The caller must call
g_variant_ref_sink() and g_variant_unref() on all the returned variants and
g_free() the array itself if %NULL was passed as @out_row_members.

This is utility function and will not touch or modify @self in any way.</doc>
        <source-position filename="dee-model.h" line="505"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="806">If @out_row_members is %NULL a newly allocated array of variants
         will be returned and the array must be freed with g_free().
         If @out_row_members is non-%NULL it will be reused, and variants in
         the array may or may not have floating references, which means the
         caller must make sure that g_variant_ref_sink() and
         g_variant_unref() are called on them.</doc>
          <type name="GLib.Variant" c:type="GVariant**"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="788">The model to create a row for</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="out_row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="789">An array to write the values to or %NULL to allocate
                  a new array. If non-%NULL it must have a length
                  that is longer or equal to the number of columns in @self</doc>
            <type name="GLib.Variant" c:type="GVariant**"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="clear" c:identifier="dee_model_clear">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1864">Removes all rows in the model. Signals are emitted for each row in the model</doc>
        <source-position filename="dee-model.h" line="400"/>
        <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="dee-model.c"
                 line="1866">a #DeeModel object to clear</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="clear_tag" c:identifier="dee_model_clear_tag">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2667">This method is purely syntactic sugar for calling dee_model_set_tag() with
a @value of %NULL. It's included in order to help developers write more
readable code.</doc>
        <source-position filename="dee-model.h" line="497"/>
        <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="dee-model.c"
                 line="2669">The model to clear a tag on</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2670">The row to clear the tag from</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2671">The tag to clear from @iter</doc>
            <type name="ModelTag" c:type="DeeModelTag*"/>
          </parameter>
        </parameters>
      </method>
      <method name="end_changeset" c:identifier="dee_model_end_changeset">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="735">Notify listeners that all changes have been committed to the model.
The default implementation of this method will emit
the ::changeset-finished signal.

See also dee_model_begin_changeset().</doc>
        <source-position filename="dee-model.h" line="503"/>
        <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="dee-model.c"
                 line="737">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="find_row_sorted" c:identifier="dee_model_find_row_sorted">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1694">Finds a row in @self according to the sorting specified by @cmp_func.
This method will assume that @self is already sorted by @cmp_func.

If you use this method for searching you should only use
dee_model_insert_row_sorted() to insert rows in the model.</doc>
        <source-position filename="dee-model.h" line="379"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1714">If @out_was_found is set to
          %TRUE then a #DeeModelIter pointing to the last matching row.
          If it is %FALSE then the iter pointing to the row just after where
          @row_spec_would have been inserted.</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1696">The model to search</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row_spec" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1697">An array of
      #GVariants with type signature matching those of the
      column schemas of @self. No references will be taken on the variants.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
          <parameter name="cmp_func"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1700">Callback used for comparison or rows</doc>
            <type name="CompareRowFunc" c:type="DeeCompareRowFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1701">Arbitrary pointer passed to @cmp_func during search</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="out_was_found"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1702">A place to store a boolean value that will be set when
                this method returns. If %TRUE then an exact match was found.
                If %FALSE then the returned iter points to a row just after
                where @row_spec would have been inserted.
                Pass %NULL to ignore.</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_row_sorted_with_sizes"
              c:identifier="dee_model_find_row_sorted_with_sizes">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1738">Like dee_model_find_row_sorted(), but uses DeeCompareRowSizedFunc and
therefore doesn't cause trouble when used from introspected languages.

Finds a row in @self according to the sorting specified by @cmp_func.
This method will assume that @self is already sorted by @cmp_func.

If you use this method for searching you should only use
dee_model_insert_row_sorted() (or dee_model_insert_row_sorted_with_sizes())
to insert rows in the model.</doc>
        <source-position filename="dee-model.h" line="385"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1762">If @out_was_found is set to
          %TRUE then a #DeeModelIter pointing to the last matching row.
          If it is %FALSE then the iter pointing to the row just after where
          @row_spec_would have been inserted.</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1740">The model to search</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row_spec" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1741">An array of
      #GVariants with type signature matching those of the
      column schemas of @self. No references will be taken on the variants.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
          <parameter name="cmp_func"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1744">Callback used for comparison or rows</doc>
            <type name="CompareRowSizedFunc" c:type="DeeCompareRowSizedFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1745">Arbitrary pointer passed to @cmp_func during search</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="out_was_found"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1746">A place to store a boolean value that will be set when
                this method returns. If %TRUE then an exact match was found.
                If %FALSE then the returned iter points to a row just after
                where @row_spec would have been inserted.
                Pass %NULL to ignore.</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_sorted"
              c:identifier="dee_model_find_sorted"
              introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1787">Finds a row in @self according to the sorting specified by @cmp_func.
This method will assume that @self is already sorted by @cmp_func.

If you use this method for searching you should only use
dee_model_insert_row_sorted() to insert rows in the model.</doc>
        <source-position filename="dee-model.h" line="391"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1806">If @out_was_found is set to
          %TRUE then a #DeeModelIter pointing to the last matching row.
          If it is %FALSE then the iter pointing to the row just after where
          @row_spec_would have been inserted.</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1789">The model to search</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="cmp_func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1790">Callback used for comparison or rows</doc>
            <type name="CompareRowFunc" c:type="DeeCompareRowFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1791">Arbitrary pointer passed to @cmp_func during search</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="out_was_found"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1792">A place to store a boolean value that will be set when
                this method returns. If %TRUE then an exact match was found.
                If %FALSE then the returned iter points to a row just after
                where @row_spec would have been inserted.
                Pass %NULL to ignore.</doc>
            <type name="gboolean" c:type="gboolean*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get" c:identifier="dee_model_get" introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2017">Gets all the values across the entire row referenced by @iter. The
variable argument list should contain pointers to variables that match
the column schemas of this model.

For all basic variant types (see g_variant_type_is_basic()) this method
expects pointers to their native C types while for all other types it
expects a pointer to a pointer to a #GVariant.

For string values you are passed a constant reference which is owned by the
model, but any returned variants must be freed with g_variant_unref ().

For example, to get all values a model with signature ("u", "s", "as") you
would do:
&lt;informalexample&gt;&lt;programlisting&gt;
 guint32      u;
 const gchar *s;
 GVariant    *v;

 dee_model_get (model, iter, &amp;u, &amp;s, &amp;v);

 // do stuff

 g_variant_unref (v);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <source-position filename="dee-model.h" line="415"/>
        <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="dee-model.c"
                 line="2019">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2020">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bool" c:identifier="dee_model_get_bool">
        <source-position filename="dee-model.h" line="438"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2209">if @iter and @column are valid, the boolean stored at @column.
              Otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2205">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2206">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2207">the column to retrieve a boolean from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_column_index"
              c:identifier="dee_model_get_column_index">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="570">Get the column index of a column.</doc>
        <source-position filename="dee-model.h" line="311"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="577">0-based index of the column or -1 if column with this name
              wasn't found</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="572">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="column_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="573">the column name to retrieve the index of</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_column_names"
              c:identifier="dee_model_get_column_names">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="468">Get a %NULL-terminated array of column names for the columns of @self.
These names can be used in calls to dee_model_build_named_row().</doc>
        <source-position filename="dee-model.h" line="322"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="477">
         A %NULL-terminated array of #GVariant type strings. The length of
         the returned array is written to @num_columns. The returned array
         should not be freed or modified. It is owned by the model.</doc>
          <array length="0" zero-terminated="0" c:type="const gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="470">The #DeeModel to get the the schema for</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="num_columns"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="471">Address of an integer in which to store the
              number of columns in @self. Or %NULL to ignore the array length.</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_column_schema"
              c:identifier="dee_model_get_column_schema">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="522">Get the #GVariant signature of a column</doc>
        <source-position filename="dee-model.h" line="304"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="529">the #GVariant signature of the column at index @column</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="524">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="525">the column to get retrieve the #GVariant type string of</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_double" c:identifier="dee_model_get_double">
        <source-position filename="dee-model.h" line="462"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2349">if @iter and @column are valid, the double stored at @column.
 Otherwise 0.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2345">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2346">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2347">the column to retrieve a double from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_field_schema"
              c:identifier="dee_model_get_field_schema">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="544">Get the #GVariant signature of field previously registered with
dee_model_register_vardict_schema().</doc>
        <source-position filename="dee-model.h" line="307"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="553">the #GVariant signature for the field, or %NULL if given field
              wasn't registered with dee_model_register_vardict_schema().</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="546">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="field_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="547">name of vardict field to get schema of</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_column"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="548">column index of the associated vardict</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_first_iter" c:identifier="dee_model_get_first_iter">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2389">Retrieves a #DeeModelIter representing the first row in @self.</doc>
        <source-position filename="dee-model.h" line="431"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2395">A #DeeModelIter (owned by @self, do not
 free it)</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2391">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_int32" c:identifier="dee_model_get_int32">
        <source-position filename="dee-model.h" line="446"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2255">if @iter and @column are valid, the int stored at @column.
 Otherwise 0.</doc>
          <type name="gint32" c:type="gint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2251">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2252">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2253">the column to retrieve a int from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_int64" c:identifier="dee_model_get_int64">
        <source-position filename="dee-model.h" line="454"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2302">if @iter and @column are valid, the int64 stored at @column.
 Otherwise 0.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2298">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2299">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2300">the column to retrieve a int64 from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_iter_at_row" c:identifier="dee_model_get_iter_at_row">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2436">Retrieves a #DeeModelIter representing the row at the given index.

Note that this method does not have any performance guarantees. In particular
it is not guaranteed to be &lt;emphasis&gt;O(1)&lt;/emphasis&gt;.</doc>
        <source-position filename="dee-model.h" line="435"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2446">A new #DeeModelIter, or %NULL if @row
  was out of bounds. The returned iter is owned by @self, so do not free it.</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2438">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2439">position of the row to retrieve</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_last_iter" c:identifier="dee_model_get_last_iter">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2410">Retrieves a #DeeModelIter pointing right &lt;emphasis&gt;after&lt;/emphasis&gt; the
last row in @self. This is refered to also the the
&lt;emphasis&gt;end iter&lt;/emphasis&gt;.

As with other iters the end iter, in particular, is stable over inserts,
changes, or removals.</doc>
        <source-position filename="dee-model.h" line="433"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2421">A #DeeModelIter (owned by @self, do not
 free it)</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2412">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_columns" c:identifier="dee_model_get_n_columns">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="649">Gets the number of columns in @self</doc>
        <source-position filename="dee-model.h" line="332"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="655">the number of columns per row in @self</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="651">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_rows" c:identifier="dee_model_get_n_rows">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="669">Gets the number of rows in @self</doc>
        <source-position filename="dee-model.h" line="334"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="675">the number of rows in @self</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="671">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_position" c:identifier="dee_model_get_position">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2552">Get the numeric offset of @iter into @self. Note that this method is
&lt;emphasis&gt;not&lt;/emphasis&gt;  guaranteed to be &lt;emphasis&gt;O(1)&lt;/emphasis&gt;.</doc>
        <source-position filename="dee-model.h" line="482"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2560">The integer offset of @iter in @self</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2554">The model to inspect</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2555">The iter to get the position of</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_row" c:identifier="dee_model_get_row">
        <source-position filename="dee-model.h" line="419"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2138">@out_row_members if it was not %NULL
         or a newly allocated array otherwise which you must free
         with g_free(). The variants in the array will have a strong
         reference and needs to be freed with g_variant_unref().</doc>
          <array c:type="GVariant**">
            <type name="GLib.Variant" c:type="GVariant*"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2130">A #DeeModel to get a row from</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2131">A #DeeModelIter pointing to the row to get</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="out_row_members"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2132">
                  An array of variants with a length bigger than or equal to
                  the number of columns in @self, or %NULL. If you pass
                  %NULL here a new array will be allocated for you. The
                  returned variants will have a non-floating reference</doc>
            <array zero-terminated="0" c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="get_schema" c:identifier="dee_model_get_schema">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="495">Get a %NULL-terminated array of #GVariant type strings that defines the
required formats for the columns of @self.</doc>
        <source-position filename="dee-model.h" line="301"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="504">
         A %NULL-terminated array of #GVariant type strings. The length of
         the returned array is written to @num_columns. The returned array
         should not be freed or modified. It is owned by the model.</doc>
          <array length="0" zero-terminated="0" c:type="const gchar* const*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="497">The #DeeModel to get the the schema for</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="num_columns"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="498">Address of an integer in which to store the
              number of columns in @self. Or %NULL to ignore the array length.</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_string" c:identifier="dee_model_get_string">
        <source-position filename="dee-model.h" line="466"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2372">if @iter and @column are valid, the string stored at @column.
              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="dee-model.c"
                 line="2368">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2369">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2370">the column to retrieve a string from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_tag" c:identifier="dee_model_get_tag">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2613">Look up a tag value for a given row in a model. This method is guaranteed
to be O(1).</doc>
        <source-position filename="dee-model.h" line="488"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2622">Returns %NULL if @tag is unset otherwise the
              value of the tag as it was set with dee_model_set_tag().</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2615">The model to get a tag from</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2616">A #DeeModelIter pointing to the row to get the tag from</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2617">The tag handle to retrieve the tag value for</doc>
            <type name="ModelTag" c:type="DeeModelTag*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_uchar" c:identifier="dee_model_get_uchar">
        <source-position filename="dee-model.h" line="442"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2232">if @iter and @column are valid, the uchar stored at @column.
 Otherwise 0.</doc>
          <type name="guint8" c:type="guchar"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2228">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2229">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2230">the column to retrieve a uchar from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_uint32" c:identifier="dee_model_get_uint32">
        <source-position filename="dee-model.h" line="450"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2278">if @iter and @column are valid, the uint stored at @column.
 Otherwise 0.</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2274">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2275">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2276">the column to retrieve a uint from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_uint64" c:identifier="dee_model_get_uint64">
        <source-position filename="dee-model.h" line="458"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2326">if @iter and @column are valid, the uint64 stored at @column.
 Otherwise 0.</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2322">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2323">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2324">the column to retrieve a uint64 from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_value" c:identifier="dee_model_get_value">
        <source-position filename="dee-model.h" line="423"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2163">A, guaranteed non-floating, reference to a
         #GVariant containing the row data. Free with g_variant_unref().</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2159">The #DeeModel to inspect</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2160">a #DeeModelIter pointing to the row to inspect</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2161">column number to retrieve the value from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_value_by_name"
              c:identifier="dee_model_get_value_by_name">
        <source-position filename="dee-model.h" line="427"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2186">A, guaranteed non-floating, reference to a
         #GVariant containing the row data. Free with g_variant_unref().</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2182">The #DeeModel to inspect</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2183">a #DeeModelIter pointing to the row to inspect</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column_name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_vardict_schema"
              c:identifier="dee_model_get_vardict_schema">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="623">Get a schema for variant dictionary column previously registered using
dee_model_register_vardict_schema().</doc>
        <source-position filename="dee-model.h" line="329"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="631">Hashtable
              containing a mapping from field names to schemas or NULL.
              Note that keys and values in the hashtable may be owned
              by the model, so you need to create a deep copy if you
              intend to keep the hashtable around.</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="utf8"/>
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="625">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="626">the column index to get the schemas for</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert" c:identifier="dee_model_insert" introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1359">Creates and inserts a new row into a #DeeModel, pushing the existing
rows down.

For and example see dee_model_insert_before().</doc>
        <source-position filename="dee-model.h" line="348"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1374">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1361">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1362">The index to insert the row on. The existing row will be pushed down</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_before"
              c:identifier="dee_model_insert_before"
              introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1456">Creates and inserts a new row into a #DeeModel just before the row pointed
to by @iter.

For example, to insert a new row in a model with schema ("u", "s", "as")
you would do:

&lt;informalexample&gt;&lt;programlisting&gt;
 DeeModelIter    *iter;
 GVariantBuilder  b;

 g_variant_builder_init (&amp;amp;b, "as");
 g_variant_builder_add (&amp;amp;b, "s", "Hello");
 g_variant_builder_add (&amp;amp;b, "s", "World");

 iter = find_my_special_row (model);
 dee_model_insert_before (model, iter,
                          27,
                          "Howdy",
                          g_variant_builder_end (&amp;amp;b));
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <source-position filename="dee-model.h" line="356"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1487">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1458">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1459">An iter pointing to the row before which to insert the new one</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_row" c:identifier="dee_model_insert_row">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1424">As dee_model_insert(), but intended for language bindings or
situations where you work with models on a meta level and may not have
a priori knowledge of the column schemas of the models. See also
dee_model_build_row().</doc>
        <source-position filename="dee-model.h" line="352"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1438">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1426">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1427">The index to insert the row on. The existing row will be pushed down.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1428">An array of
              #GVariants with type signature matching those of
              the column schemas of @self. If any of the variants have
              floating references they will be consumed.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="insert_row_before"
              c:identifier="dee_model_insert_row_before">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1537">As dee_model_insert_before(), but intended for language bindings or
situations where you work with models on a meta level and may not have
a priori knowledge of the column schemas of the models. See also
dee_model_build_row().</doc>
        <source-position filename="dee-model.h" line="360"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1551">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1539">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1540">An iter pointing to the row before which to insert the new one</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1541">An array of
      #GVariants with type signature matching those of the
      column schemas of @self. If any of the variants have floating
      references they will be consumed.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="insert_row_sorted"
              c:identifier="dee_model_insert_row_sorted">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1583">Inserts a row in @self according to the sorting specified by @cmp_func.
If you use this method for insertion you should not use other methods as this
method assumes the model to be already sorted by @cmp_func.</doc>
        <source-position filename="dee-model.h" line="364"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1597">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1585">The model to do a sorted insert on</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1586">An array of
      #GVariants with type signature matching those of the
      column schemas of @self. If any of the variants have floating
      references they will be consumed.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
          <parameter name="cmp_func"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1590">Callback used for comparison or rows</doc>
            <type name="CompareRowFunc" c:type="DeeCompareRowFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1591">Arbitrary pointer passed to @cmp_func during search</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_row_sorted_with_sizes"
              c:identifier="dee_model_insert_row_sorted_with_sizes">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1616">Inserts a row in @self according to the sorting specified by @cmp_func.
If you use this method for insertion you should not use other methods as this
method assumes the model to be already sorted by @cmp_func.</doc>
        <source-position filename="dee-model.h" line="369"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1630">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1618">The model to do a sorted insert on</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1619">An array of
      #GVariants with type signature matching those of the
      column schemas of @self. If any of the variants have floating
      references they will be consumed.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
          <parameter name="cmp_func"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1623">Callback used for comparison or rows</doc>
            <type name="CompareRowSizedFunc" c:type="DeeCompareRowSizedFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1624">Arbitrary pointer passed to @cmp_func during search</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_sorted"
              c:identifier="dee_model_insert_sorted"
              introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1651">Convenience function for calling dee_model_insert_row_sorted().
Inserts a row in @self according to the sorting specified by @cmp_func.
If you use this method for insertion you should not use other methods as this
method assumes the model to be already sorted by @cmp_func.</doc>
        <source-position filename="dee-model.h" line="374"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1664">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1653">The model to do a sorted insert on</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="cmp_func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1654">Callback used for comparison or rows</doc>
            <type name="CompareRowFunc" c:type="DeeCompareRowFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1655">Arbitrary pointer passed to @cmp_func during search</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="is_first" c:identifier="dee_model_is_first">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2507">Checks if @iter is the very first iter @self.</doc>
        <source-position filename="dee-model.h" line="476"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2514">#TRUE if @iter is the first iter in the model</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2509">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2510">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_last" c:identifier="dee_model_is_last">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2529">Whether @iter is the end iter of @self. Note that the end iter points
right &lt;emphasis&gt;after&lt;/emphasis&gt; the last valid row in @self.</doc>
        <source-position filename="dee-model.h" line="479"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2537">#TRUE if @iter is the last iter in the model</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2531">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2532">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="next" c:identifier="dee_model_next">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2461">Returns a #DeeModelIter that points to the next position in the model.</doc>
        <source-position filename="dee-model.h" line="470"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2468">A #DeeModelIter, pointing to the next row in
  the model. The iter is owned by @self, do not free it.</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2463">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2464">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepend"
              c:identifier="dee_model_prepend"
              introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1261">Creates and prepends a new row to the beginning of a #DeeModel, setting the
row values upon creation.

Example:

&lt;informalexample&gt;&lt;programlisting&gt;
 DeeModel *model;
 model = ...
 dee_model_set_schema (model, "i", "s", NULL);
 dee_model_prepend (model, 10, "Rooney");
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <source-position filename="dee-model.h" line="342"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1282">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1263">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="prepend_row" c:identifier="dee_model_prepend_row">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1329">Like dee_model_prepend() but intended for language bindings or
situations where you work with models on a meta level and may not have
a priori knowledge of the column schemas of the models. See also
dee_model_build_row().</doc>
        <source-position filename="dee-model.h" line="345"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="1342">A #DeeModelIter pointing to the new row</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1331">The model to prepend a row to</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1332">An array of
              #GVariants with type signature matching those of
              the column schemas of @self. If any of the variants have
              floating references they will be consumed.</doc>
            <array c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="prev" c:identifier="dee_model_prev">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2484">Returns a #DeeModelIter that points to the previous position in the model.</doc>
        <source-position filename="dee-model.h" line="473"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2491">A #DeeModelIter, pointing to the previous
  row in the model. The iter is owned by @self, do not free it.</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2486">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2487">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="register_tag" c:identifier="dee_model_register_tag">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2575">Register a new tag on a #DeeModel. A &lt;emphasis&gt;tag&lt;/emphasis&gt; is an extra
value attached to a given row on a model. The tags are invisible to all
that doesn't have the tag handle returned by this method. #DeeModel
implementations must ensure that dee_model_get_tag() is an O(1) operation.

Tags can be very useful in associating some extra data to a row in a model
and have that automatically synced when the model changes. If you're
writing a tiled view for a model you might want to tag each row with the
tile widget for that row. That way you have very convenient access to the
tile widget given any row in the model.

The private nature of tags and the fact that you can store arbitrary pointers
and binary data in them also means that they are not serialized if you
utilize a model implementation that exposes the #DeeSerializable interface.</doc>
        <source-position filename="dee-model.h" line="485"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model.c"
               line="2597">A #DeeModelTag handle
              that you can use to set and get tags with</doc>
          <type name="ModelTag" c:type="DeeModelTag*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2577">The model to register a tag on</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="tag_destroy"
                     transfer-ownership="none"
                     scope="async">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2578">Function called when a tagged row is removed from the model.
              This function will also be called on all tagged rows when the
              model is finalized.</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="register_vardict_schema"
              c:identifier="dee_model_register_vardict_schema">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="593">Register schema for fields in a model containing column with variant
dictionary schema ('a{sv}').
The keys registered with this function can be later used
with dee_model_build_named_row() function, as well as
dee_model_get_value_by_name(). Note that it is possible to register
the same field name for multiple columns, in which case you need to use
fully-qualified "column_name::field" name in the calls to
dee_model_build_named_row() and dee_model_get_field_schema().</doc>
        <source-position filename="dee-model.h" line="325"/>
        <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="dee-model.c"
                 line="595">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="596">the column index to register the schemas with</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="schemas" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="597">hashtable with keys specifying
          names of the fields and values defining their schema</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="dee_model_remove">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1842">Removes the row at the given position from the model.</doc>
        <source-position filename="dee-model.h" line="397"/>
        <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="dee-model.c"
                 line="1844">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1845">a #DeeModelIter pointing to the row to remove</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="dee_model_set" introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1884">Sets all values across the entire row referenced by @iter. The
variable argument list should contain values that match the column schemas
for the model. All basic variant type (see g_variant_type_is_basic()) are
passed in as their raw C type while all other types are passed in boxed in
a #GVariant. Any floating references on variants passed to this method are
consumed.

For example, to set the values for a row on model with the schema
("u", "s", "as"):
&lt;informalexample&gt;&lt;programlisting&gt;
  GVariantBuilder b;

  g_variant_builder_init (&amp;amp;b, "as");
  g_variant_builder_add (&amp;amp;b, "Hello");
  g_variant_builder_add (&amp;amp;b, "World");

  dee_model_set (model, iter, 27, "foo", g_variant_builder_end (&amp;amp;b));
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <source-position filename="dee-model.h" line="402"/>
        <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="dee-model.c"
                 line="1886">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1887">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="set_column_names"
              c:identifier="dee_model_set_column_names"
              introspectable="0">
        <source-position filename="dee-model.h" line="314"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="first_column_name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="set_column_names_full"
              c:identifier="dee_model_set_column_names_full">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="438">Set column names used by @self.
This method must be called exactly once, but only after setting
a schema of the model. Note that some constructors will do this for you.</doc>
        <source-position filename="dee-model.h" line="318"/>
        <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="dee-model.c"
                 line="440">A #DeeModel.</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="column_names" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="441">A list of column names terminated by a %NULL</doc>
            <array length="1" zero-terminated="1" c:type="const gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="num_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="442">an integer specifying the array length for @annotations</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_row" c:identifier="dee_model_set_row">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1988">Sets all columns in the row @iter points to, to those found in
@row_members. The variants in @row_members must match the types defined in
the model's schema.</doc>
        <source-position filename="dee-model.h" line="411"/>
        <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="dee-model.c"
                 line="1990">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1991">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="row_members" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1992">And array of
              #GVariant&lt;!-- --&gt;s with type signature matching
              those from the model schema. If any of the variants have
              floating references these will be consumed</doc>
            <array zero-terminated="0" c:type="GVariant**">
              <type name="GLib.Variant" c:type="GVariant*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="set_schema"
              c:identifier="dee_model_set_schema"
              introspectable="0">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="274">Set the #GVariant types and the number of columns used by @self.
This method must be called exactly once before using @self. Note that
some constructors will do this for you.

To create a model with three columns; a 32 bit integer, a string,
and lastly an array of strings, you would do:
&lt;informalexample&gt;&lt;programlisting&gt;
 DeeModel *model;
 model = dee_sequence_model_new ();
 dee_model_set_schema (model, "i", "s", "as", NULL);
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
        <source-position filename="dee-model.h" line="294"/>
        <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="dee-model.c"
                 line="276">The #DeeModel to set the column layout for</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="..." transfer-ownership="none">
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="set_schema_full" c:identifier="dee_model_set_schema_full">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="363">Set the #GVariant types and the number of columns used by @self.
This method must be called exactly once before using @self. Note that
some constructors will do this for you.</doc>
        <source-position filename="dee-model.h" line="297"/>
        <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="dee-model.c"
                 line="365">The #DeeModel to set the column layout for</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="column_schemas" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="366">A list of #GVariant type strings terminated by a %NULL</doc>
            <array length="1" zero-terminated="1" c:type="const gchar* const*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="num_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="367">an integer specifying the array length for @VarArgs</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_tag" c:identifier="dee_model_set_tag">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="2639">Set a tag on a row in a model. This function is guaranteed to be O(1).
See also dee_model_register_tag().

If @tag is already set on this row the existing tag value will be destroyed
with the #GDestroyNotify passed to the dee_model_register_tag().</doc>
        <source-position filename="dee-model.h" line="492"/>
        <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="dee-model.c"
                 line="2641">The model to set a tag on</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2642">The row to set the tag on</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="tag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2643">The tag handle for the tag as obtained from dee_model_register_tag()</doc>
            <type name="ModelTag" c:type="DeeModelTag*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2644">The value to set for @tag. Note that %NULL represents an unset tag</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_value" c:identifier="dee_model_set_value">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="1956">Sets the data in @column for the row @iter points to, to @value. The type
of @value must be convertible to the type of the column.

When this method call completes the model will emit ::row-changed. You can
edit the model in place without triggering the change signals by calling
dee_model_set_value_silently().</doc>
        <source-position filename="dee-model.h" line="406"/>
        <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="dee-model.c"
                 line="1958">a #DeeModel</doc>
            <type name="Model" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1959">a #DeeModelIter</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1960">column number to set the value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1961">New value for cell. If @value is a floating reference the model
        will assume ownership of the variant</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="changeset-finished" when="last">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="256">Connect to this signal to be notified when a changeset that can contain
multiple row additions / changes / removals has been committed
to the model.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="changeset-started" when="last">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="235">Connect to this signal to be notified when a changeset that can contain
multiple row additions / changes / removals is about to be committed
to the model.
Note that not all model implementations use the changeset approach and
you might still get a row change signal outside of changeset-started and
changeset-finished signals. It also isn't guaranteed that a changeset
would always be non-empty.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="row-added" when="last">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="185">Connect to this signal to be notified when a row is added to @self.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="188">a #DeeModelIter pointing to the newly added row</doc>
            <type name="ModelIter"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="row-changed" when="last">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="218">Connect to this signal to be notified when a row is changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="221">a #DeeModelIter pointing to the changed row</doc>
            <type name="ModelIter"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="row-removed" when="last">
        <doc xml:space="preserve"
             filename="dee-model.c"
             line="201">Connect to this signal to be notified when a row is removed from @self.
  The row is still valid while the signal is being emitted.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="204">a #DeeModelIter pointing to the removed row</doc>
            <type name="ModelIter"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="ModelIface"
            c:type="DeeModelIface"
            glib:is-gtype-struct-for="Model">
      <source-position filename="dee-model.h" line="281"/>
      <field name="g_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="row_added">
        <callback name="row_added">
          <source-position filename="dee-model.h" line="107"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="row_removed">
        <callback name="row_removed">
          <source-position filename="dee-model.h" line="110"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="row_changed">
        <callback name="row_changed">
          <source-position filename="dee-model.h" line="113"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_schema_full">
        <callback name="set_schema_full">
          <source-position filename="dee-model.h" line="117"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="365">The #DeeModel to set the column layout for</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="column_schemas" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="366">A list of #GVariant type strings terminated by a %NULL</doc>
              <array length="2"
                     zero-terminated="1"
                     c:type="const char* const*">
                <type name="utf8"/>
              </array>
            </parameter>
            <parameter name="num_columns" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="367">an integer specifying the array length for @VarArgs</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_schema">
        <callback name="get_schema">
          <source-position filename="dee-model.h" line="121"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="504">
         A %NULL-terminated array of #GVariant type strings. The length of
         the returned array is written to @num_columns. The returned array
         should not be freed or modified. It is owned by the model.</doc>
            <array length="1" zero-terminated="0" c:type="const gchar* const*">
              <type name="utf8"/>
            </array>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="497">The #DeeModel to get the the schema for</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="num_columns"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full"
                       optional="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="498">Address of an integer in which to store the
              number of columns in @self. Or %NULL to ignore the array length.</doc>
              <type name="guint" c:type="guint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_column_schema">
        <callback name="get_column_schema">
          <source-position filename="dee-model.h" line="124"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="529">the #GVariant signature of the column at index @column</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="524">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="525">the column to get retrieve the #GVariant type string of</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_field_schema">
        <callback name="get_field_schema">
          <source-position filename="dee-model.h" line="127"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="553">the #GVariant signature for the field, or %NULL if given field
              wasn't registered with dee_model_register_vardict_schema().</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="546">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="field_name" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="547">name of vardict field to get schema of</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="out_column"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="548">column index of the associated vardict</doc>
              <type name="guint" c:type="guint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_column_index">
        <callback name="get_column_index">
          <source-position filename="dee-model.h" line="131"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="577">0-based index of the column or -1 if column with this name
              wasn't found</doc>
            <type name="gint" c:type="gint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="572">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="column_name" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="573">the column name to retrieve the index of</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_column_names_full">
        <callback name="set_column_names_full">
          <source-position filename="dee-model.h" line="134"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="440">A #DeeModel.</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="column_names" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="441">A list of column names terminated by a %NULL</doc>
              <array length="2" zero-terminated="1" c:type="const gchar**">
                <type name="utf8"/>
              </array>
            </parameter>
            <parameter name="num_columns" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="442">an integer specifying the array length for @annotations</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_column_names">
        <callback name="get_column_names">
          <source-position filename="dee-model.h" line="138"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="477">
         A %NULL-terminated array of #GVariant type strings. The length of
         the returned array is written to @num_columns. The returned array
         should not be freed or modified. It is owned by the model.</doc>
            <array length="1" zero-terminated="0" c:type="const gchar**">
              <type name="utf8"/>
            </array>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="470">The #DeeModel to get the the schema for</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="num_columns"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full"
                       optional="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="471">Address of an integer in which to store the
              number of columns in @self. Or %NULL to ignore the array length.</doc>
              <type name="guint" c:type="guint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="register_vardict_schema">
        <callback name="register_vardict_schema">
          <source-position filename="dee-model.h" line="141"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="595">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="num_column" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="schemas" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="597">hashtable with keys specifying
          names of the fields and values defining their schema</doc>
              <type name="GLib.HashTable" c:type="GHashTable*">
                <type name="utf8"/>
                <type name="utf8"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_vardict_schema">
        <callback name="get_vardict_schema">
          <source-position filename="dee-model.h" line="145"/>
          <return-value transfer-ownership="container">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="631">Hashtable
              containing a mapping from field names to schemas or NULL.
              Note that keys and values in the hashtable may be owned
              by the model, so you need to create a deep copy if you
              intend to keep the hashtable around.</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="utf8"/>
            </type>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="625">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="num_column" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_columns">
        <callback name="get_n_columns">
          <source-position filename="dee-model.h" line="148"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="655">the number of columns per row in @self</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="651">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_n_rows">
        <callback name="get_n_rows">
          <source-position filename="dee-model.h" line="150"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="675">the number of rows in @self</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="671">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="append_row">
        <callback name="append_row">
          <source-position filename="dee-model.h" line="152"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1245">A #DeeModelIter pointing to the new row</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1234">The model to prepend a row to</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="row_members" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1235">An array of  #GVariants with type
              signature matching those of the column schemas of @self.
              If any of the variants have floating references they will be
              consumed</doc>
              <array c:type="GVariant**">
                <type name="GLib.Variant" c:type="GVariant*"/>
              </array>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="prepend_row">
        <callback name="prepend_row">
          <source-position filename="dee-model.h" line="155"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1342">A #DeeModelIter pointing to the new row</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1331">The model to prepend a row to</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="row_members" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1332">An array of
              #GVariants with type signature matching those of
              the column schemas of @self. If any of the variants have
              floating references they will be consumed.</doc>
              <array c:type="GVariant**">
                <type name="GLib.Variant" c:type="GVariant*"/>
              </array>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="insert_row">
        <callback name="insert_row">
          <source-position filename="dee-model.h" line="158"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1438">A #DeeModelIter pointing to the new row</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1426">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="pos" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1427">The index to insert the row on. The existing row will be pushed down.</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="row_members" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1428">An array of
              #GVariants with type signature matching those of
              the column schemas of @self. If any of the variants have
              floating references they will be consumed.</doc>
              <array c:type="GVariant**">
                <type name="GLib.Variant" c:type="GVariant*"/>
              </array>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="insert_row_before">
        <callback name="insert_row_before">
          <source-position filename="dee-model.h" line="162"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1551">A #DeeModelIter pointing to the new row</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1539">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1540">An iter pointing to the row before which to insert the new one</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="row_members" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1541">An array of
      #GVariants with type signature matching those of the
      column schemas of @self. If any of the variants have floating
      references they will be consumed.</doc>
              <array c:type="GVariant**">
                <type name="GLib.Variant" c:type="GVariant*"/>
              </array>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="insert_row_sorted">
        <callback name="insert_row_sorted">
          <source-position filename="dee-model.h" line="166"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1597">A #DeeModelIter pointing to the new row</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1585">The model to do a sorted insert on</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="row_members" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1586">An array of
      #GVariants with type signature matching those of the
      column schemas of @self. If any of the variants have floating
      references they will be consumed.</doc>
              <array c:type="GVariant**">
                <type name="GLib.Variant" c:type="GVariant*"/>
              </array>
            </parameter>
            <parameter name="cmp_func"
                       transfer-ownership="none"
                       scope="call"
                       closure="3">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1590">Callback used for comparison or rows</doc>
              <type name="CompareRowFunc" c:type="DeeCompareRowFunc"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="3">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1591">Arbitrary pointer passed to @cmp_func during search</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="find_row_sorted">
        <callback name="find_row_sorted">
          <source-position filename="dee-model.h" line="171"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="1714">If @out_was_found is set to
          %TRUE then a #DeeModelIter pointing to the last matching row.
          If it is %FALSE then the iter pointing to the row just after where
          @row_spec_would have been inserted.</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1696">The model to search</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="row_spec" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1697">An array of
      #GVariants with type signature matching those of the
      column schemas of @self. No references will be taken on the variants.</doc>
              <array c:type="GVariant**">
                <type name="GLib.Variant" c:type="GVariant*"/>
              </array>
            </parameter>
            <parameter name="cmp_func"
                       transfer-ownership="none"
                       scope="call"
                       closure="3">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1700">Callback used for comparison or rows</doc>
              <type name="CompareRowFunc" c:type="DeeCompareRowFunc"/>
            </parameter>
            <parameter name="user_data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1"
                       closure="3">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1701">Arbitrary pointer passed to @cmp_func during search</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
            <parameter name="out_was_found"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1702">A place to store a boolean value that will be set when
                this method returns. If %TRUE then an exact match was found.
                If %FALSE then the returned iter points to a row just after
                where @row_spec would have been inserted.
                Pass %NULL to ignore.</doc>
              <type name="gboolean" c:type="gboolean*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove">
        <callback name="remove">
          <source-position filename="dee-model.h" line="177"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1844">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1845">a #DeeModelIter pointing to the row to remove</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="clear">
        <callback name="clear">
          <source-position filename="dee-model.h" line="180"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1866">a #DeeModel object to clear</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_value">
        <callback name="set_value">
          <source-position filename="dee-model.h" line="182"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1958">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1959">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1960">column number to set the value</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1961">New value for cell. If @value is a floating reference the model
        will assume ownership of the variant</doc>
              <type name="GLib.Variant" c:type="GVariant*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_row">
        <callback name="set_row">
          <source-position filename="dee-model.h" line="187"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1990">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1991">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="row_members" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="1992">And array of
              #GVariant&lt;!-- --&gt;s with type signature matching
              those from the model schema. If any of the variants have
              floating references these will be consumed</doc>
              <array zero-terminated="0" c:type="GVariant**">
                <type name="GLib.Variant" c:type="GVariant*"/>
              </array>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_value">
        <callback name="get_value">
          <source-position filename="dee-model.h" line="191"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2163">A, guaranteed non-floating, reference to a
         #GVariant containing the row data. Free with g_variant_unref().</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2159">The #DeeModel to inspect</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2160">a #DeeModelIter pointing to the row to inspect</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2161">column number to retrieve the value from</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_value_by_name">
        <callback name="get_value_by_name">
          <source-position filename="dee-model.h" line="195"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2186">A, guaranteed non-floating, reference to a
         #GVariant containing the row data. Free with g_variant_unref().</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2182">The #DeeModel to inspect</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2183">a #DeeModelIter pointing to the row to inspect</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="column_name" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_first_iter">
        <callback name="get_first_iter">
          <source-position filename="dee-model.h" line="199"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2395">A #DeeModelIter (owned by @self, do not
 free it)</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2391">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_last_iter">
        <callback name="get_last_iter">
          <source-position filename="dee-model.h" line="201"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2421">A #DeeModelIter (owned by @self, do not
 free it)</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2412">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_iter_at_row">
        <callback name="get_iter_at_row">
          <source-position filename="dee-model.h" line="203"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2446">A new #DeeModelIter, or %NULL if @row
  was out of bounds. The returned iter is owned by @self, so do not free it.</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2438">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="row" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2439">position of the row to retrieve</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_bool">
        <callback name="get_bool">
          <source-position filename="dee-model.h" line="206"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2209">if @iter and @column are valid, the boolean stored at @column.
              Otherwise %FALSE</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2205">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2206">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2207">the column to retrieve a boolean from</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_uchar">
        <callback name="get_uchar">
          <source-position filename="dee-model.h" line="210"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2232">if @iter and @column are valid, the uchar stored at @column.
 Otherwise 0.</doc>
            <type name="guint8" c:type="guchar"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2228">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2229">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2230">the column to retrieve a uchar from</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_int32">
        <callback name="get_int32">
          <source-position filename="dee-model.h" line="214"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2255">if @iter and @column are valid, the int stored at @column.
 Otherwise 0.</doc>
            <type name="gint32" c:type="gint32"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2251">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2252">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2253">the column to retrieve a int from</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_uint32">
        <callback name="get_uint32">
          <source-position filename="dee-model.h" line="218"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2278">if @iter and @column are valid, the uint stored at @column.
 Otherwise 0.</doc>
            <type name="guint32" c:type="guint32"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2274">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2275">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2276">the column to retrieve a uint from</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_int64">
        <callback name="get_int64">
          <source-position filename="dee-model.h" line="222"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2302">if @iter and @column are valid, the int64 stored at @column.
 Otherwise 0.</doc>
            <type name="gint64" c:type="gint64"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2298">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2299">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2300">the column to retrieve a int64 from</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_uint64">
        <callback name="get_uint64">
          <source-position filename="dee-model.h" line="226"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2326">if @iter and @column are valid, the uint64 stored at @column.
 Otherwise 0.</doc>
            <type name="guint64" c:type="guint64"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2322">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2323">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2324">the column to retrieve a uint64 from</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_double">
        <callback name="get_double">
          <source-position filename="dee-model.h" line="230"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2349">if @iter and @column are valid, the double stored at @column.
 Otherwise 0.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2345">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2346">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2347">the column to retrieve a double from</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_string">
        <callback name="get_string">
          <source-position filename="dee-model.h" line="234"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2372">if @iter and @column are valid, the string stored at @column.
              Otherwise %NULL.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2368">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2369">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="column" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2370">the column to retrieve a string from</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="next">
        <callback name="next">
          <source-position filename="dee-model.h" line="238"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2468">A #DeeModelIter, pointing to the next row in
  the model. The iter is owned by @self, do not free it.</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2463">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2464">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="prev">
        <callback name="prev">
          <source-position filename="dee-model.h" line="241"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2491">A #DeeModelIter, pointing to the previous
  row in the model. The iter is owned by @self, do not free it.</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2486">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2487">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_first">
        <callback name="is_first">
          <source-position filename="dee-model.h" line="244"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2514">#TRUE if @iter is the first iter in the model</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2509">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2510">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_last">
        <callback name="is_last">
          <source-position filename="dee-model.h" line="247"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2537">#TRUE if @iter is the last iter in the model</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2531">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2532">a #DeeModelIter</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_position">
        <callback name="get_position">
          <source-position filename="dee-model.h" line="250"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2560">The integer offset of @iter in @self</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2554">The model to inspect</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2555">The iter to get the position of</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="register_tag">
        <callback name="register_tag">
          <source-position filename="dee-model.h" line="253"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2597">A #DeeModelTag handle
              that you can use to set and get tags with</doc>
            <type name="ModelTag" c:type="DeeModelTag*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2577">The model to register a tag on</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="tag_destroy"
                       transfer-ownership="none"
                       scope="async">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2578">Function called when a tagged row is removed from the model.
              This function will also be called on all tagged rows when the
              model is finalized.</doc>
              <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_tag">
        <callback name="get_tag">
          <source-position filename="dee-model.h" line="256"/>
          <return-value transfer-ownership="none" nullable="1">
            <doc xml:space="preserve"
                 filename="dee-model.c"
                 line="2622">Returns %NULL if @tag is unset otherwise the
              value of the tag as it was set with dee_model_set_tag().</doc>
            <type name="gpointer" c:type="gpointer"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2615">The model to get a tag from</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2616">A #DeeModelIter pointing to the row to get the tag from</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="tag" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2617">The tag handle to retrieve the tag value for</doc>
              <type name="ModelTag" c:type="DeeModelTag*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_tag">
        <callback name="set_tag">
          <source-position filename="dee-model.h" line="260"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2641">The model to set a tag on</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2642">The row to set the tag on</doc>
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="tag" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2643">The tag handle for the tag as obtained from dee_model_register_tag()</doc>
              <type name="ModelTag" c:type="DeeModelTag*"/>
            </parameter>
            <parameter name="value"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="2644">The value to set for @tag. Note that %NULL represents an unset tag</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_row">
        <callback name="get_row">
          <source-position filename="dee-model.h" line="265"/>
          <return-value transfer-ownership="full">
            <type name="GLib.Variant" c:type="GVariant**"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <type name="ModelIter" c:type="DeeModelIter*"/>
            </parameter>
            <parameter name="out_row_members" transfer-ownership="none">
              <type name="GLib.Variant" c:type="GVariant**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="begin_changeset">
        <callback name="begin_changeset">
          <source-position filename="dee-model.h" line="269"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="691">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="end_changeset">
        <callback name="end_changeset">
          <source-position filename="dee-model.h" line="271"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-model.c"
                   line="737">a #DeeModel</doc>
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="changeset_started">
        <callback name="changeset_started">
          <source-position filename="dee-model.h" line="273"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="changeset_finished">
        <callback name="changeset_finished">
          <source-position filename="dee-model.h" line="275"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_dee_model_1" introspectable="0">
        <callback name="_dee_model_1">
          <source-position filename="dee-model.h" line="278"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_model_2" introspectable="0">
        <callback name="_dee_model_2">
          <source-position filename="dee-model.h" line="279"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_model_3" introspectable="0">
        <callback name="_dee_model_3">
          <source-position filename="dee-model.h" line="280"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="ModelIter"
            c:type="DeeModelIter"
            opaque="1"
            glib:type-name="DeeModelIter"
            glib:get-type="dee_model_iter_get_type"
            c:symbol-prefix="model_iter">
      <doc xml:space="preserve"
           filename="dee-model.h"
           line="49">The DeeModelIter structure is private and should only be used with the
provided #DeeModel API. It is owned by DeeModel and should not be freed.</doc>
      <source-position filename="dee-model.h" line="55"/>
    </record>
    <record name="ModelReader" c:type="DeeModelReader">
      <doc xml:space="preserve"
           filename="dee-model-reader.h"
           line="48">Structure encapsulating the information needed to read strings from a
model. Used for example by #DeeIndex.</doc>
      <source-position filename="dee-model-reader.h" line="69"/>
      <field name="reader_func" writable="1">
        <doc xml:space="preserve"
             filename="dee-model-reader.h"
             line="50">The #DeeModelReaderFunc used to extract
                                string from a model</doc>
        <type name="ModelReaderFunc" c:type="DeeModelReaderFunc"/>
      </field>
      <field name="userdata" writable="1">
        <doc xml:space="preserve"
             filename="dee-model-reader.h"
             line="52">user data to pass to @reader_func</doc>
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="destroy" writable="1">
        <doc xml:space="preserve"
             filename="dee-model-reader.h"
             line="53">Called when the reader is destroyed</doc>
        <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
      </field>
      <field name="_padding1" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="_padding2" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="_padding3" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="_padding4" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="_padding5" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <method name="destroy" c:identifier="dee_model_reader_destroy">
        <doc xml:space="preserve"
             filename="dee-model-reader.c"
             line="67">Release resources associated with @reader, but does not free the
#DeeModelReader structure itself.

This will call the destroy() function registered with the reader
if it is set.</doc>
        <source-position filename="dee-model-reader.h" line="75"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="reader" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="69">The reader to destroy</doc>
            <type name="ModelReader" c:type="DeeModelReader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="read" c:identifier="dee_model_reader_read">
        <doc xml:space="preserve"
             filename="dee-model-reader.c"
             line="43">Read data from a row in a #DeeModel and extract a string representation from
it.

Note that generally a #DeeModelReader need not be confined to reading from
one specific column, although in practice most are.</doc>
        <source-position filename="dee-model-reader.h" line="71"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-model-reader.c"
               line="55">A newly allocated string. Free with g_free().</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="45">The #DeeModelReader used to read @model</doc>
            <type name="ModelReader" c:type="DeeModelReader*"/>
          </instance-parameter>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="46">The #DeeModel to read a string from</doc>
            <type name="Model" c:type="DeeModel*"/>
          </parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="47">The row to read a string from</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </parameter>
        </parameters>
      </method>
      <function name="new" c:identifier="dee_model_reader_new">
        <doc xml:space="preserve"
             filename="dee-model-reader.c"
             line="86">Create a new #DeeModelReader with the given parameters. This call will zero
the @out_reader struct.</doc>
        <source-position filename="dee-model-reader.h" line="77"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="reader_func"
                     transfer-ownership="none"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="88">The #DeeModelReaderFunc to use for the reader</doc>
            <type name="ModelReaderFunc" c:type="DeeModelReaderFunc"/>
          </parameter>
          <parameter name="userdata"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="89">The user data to pass to @reader_func</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="90">The #GDestroyNotify to call on
                                       @userdata when disposing of the reader</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
          <parameter name="out_reader"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="92">A pointer to an uninitialized #DeeModelReader struct</doc>
            <type name="ModelReader" c:type="DeeModelReader*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_for_int32_column"
                c:identifier="dee_model_reader_new_for_int32_column">
        <doc xml:space="preserve"
             filename="dee-model-reader.c"
             line="148">A #DeeModelReader reading a %gint32 from a #DeeModel at a given column</doc>
        <source-position filename="dee-model-reader.h" line="85"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="150">The column index to read a %gint32 from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="out_reader"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="151">A pointer to a #DeeModelReader instance which will have
                    all fields initialized appropriately</doc>
            <type name="ModelReader" c:type="DeeModelReader*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_for_string_column"
                c:identifier="dee_model_reader_new_for_string_column">
        <doc xml:space="preserve"
             filename="dee-model-reader.c"
             line="123">A #DeeModelReader reading a string from a #DeeModel at a given column</doc>
        <source-position filename="dee-model-reader.h" line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="125">The column index to read a string from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="out_reader"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="126">A pointer to a #DeeModelReader instance which will have
                    all fields initialized appropriately</doc>
            <type name="ModelReader" c:type="DeeModelReader*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_for_uint32_column"
                c:identifier="dee_model_reader_new_for_uint32_column">
        <doc xml:space="preserve"
             filename="dee-model-reader.c"
             line="173">A #DeeModelReader reading a %guint32 from a #DeeModel at a given column</doc>
        <source-position filename="dee-model-reader.h" line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="column" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="175">The column index to read a %guint32 from</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="out_reader"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-model-reader.c"
                 line="176">A pointer to a #DeeModelReader instance which will have
                    all fields initialized appropriately</doc>
            <type name="ModelReader" c:type="DeeModelReader*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <callback name="ModelReaderFunc" c:type="DeeModelReaderFunc">
      <doc xml:space="preserve"
           filename="dee-model-reader.h"
           line="33">Extracts a string from a row in a model.</doc>
      <source-position filename="dee-model-reader.h" line="44"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="dee-model-reader.h"
             line="41">A newly allocated string with the row data to be indexed.
         Free with g_free().</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="model" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model-reader.h"
               line="35">The model being indexed</doc>
          <type name="Model" c:type="DeeModel*"/>
        </parameter>
        <parameter name="iter" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model-reader.h"
               line="36">The row to extract terms for</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </parameter>
        <parameter name="userdata"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <doc xml:space="preserve"
               filename="dee-model-reader.h"
               line="37">The data set when registering the reader</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="ModelTag" c:type="DeeModelTag" disguised="1" opaque="1">
      <doc xml:space="preserve"
           filename="dee-model.h"
           line="57">The DeeModelTag structure is private and should only be used with the
provided #DeeModel API. It is owned by DeeModel and should not be freed.</doc>
      <source-position filename="dee-model.h" line="63"/>
    </record>
    <function-macro name="PEER" c:identifier="DEE_PEER" introspectable="0">
      <source-position filename="dee-peer.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PEER_CLASS"
                    c:identifier="DEE_PEER_CLASS"
                    introspectable="0">
      <source-position filename="dee-peer.h" line="38"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="PEER_DBUS_IFACE"
              value="com.canonical.Dee.Peer"
              c:type="DEE_PEER_DBUS_IFACE">
      <source-position filename="dee-peer.h" line="54"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="PEER_GET_CLASS"
                    c:identifier="DEE_PEER_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-peer.h" line="47"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PROXY_MODEL"
                    c:identifier="DEE_PROXY_MODEL"
                    introspectable="0">
      <source-position filename="dee-proxy-model.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PROXY_MODEL_CLASS"
                    c:identifier="DEE_PROXY_MODEL_CLASS"
                    introspectable="0">
      <source-position filename="dee-proxy-model.h" line="40"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PROXY_MODEL_GET_CLASS"
                    c:identifier="DEE_PROXY_MODEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-proxy-model.h" line="49"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Peer"
           c:symbol-prefix="peer"
           c:type="DeePeer"
           parent="GObject.Object"
           glib:type-name="DeePeer"
           glib:get-type="dee_peer_get_type"
           glib:type-struct="PeerClass">
      <doc xml:space="preserve"
           filename="dee-peer.h"
           line="56">All fields in the DeePeer structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-peer.h" line="93"/>
      <constructor name="new" c:identifier="dee_peer_new">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="800">Create a new #DeePeer. The peer will immediately connect to the swarm
and start the peer discovery.</doc>
        <source-position filename="dee-peer.h" line="104"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-peer.c"
               line="808">A newly constructed #DeePeer.
              Free with g_object_unref().</doc>
          <type name="Peer" c:type="DeePeer*"/>
        </return-value>
        <parameters>
          <parameter name="swarm_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="802">The name of the swarm to join.
             Fx &amp;quot;org.example.DataProviders&amp;quot;</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="connection_acquired">
        <source-position filename="dee-peer.h" line="80"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
          <parameter name="connection" transfer-ownership="none">
            <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="connection_closed">
        <source-position filename="dee-peer.h" line="81"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
          <parameter name="connection" transfer-ownership="none">
            <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_connections" invoker="get_connections">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="871">Gets list of #GDBusConnection instances used by this #DeePeer instance.</doc>
        <source-position filename="dee-peer.h" line="86"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="dee-peer.c"
               line="877">
              List of connections.</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="Gio.DBusConnection"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="873">a #DeePeer</doc>
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_swarm_leader" invoker="get_swarm_leader">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="835">In case this peer is connected to a message bus, gets the unique DBus
address of the current swarm leader, otherwise returns id of the leader.</doc>
        <source-position filename="dee-peer.h" line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-peer.c"
               line="842">Unique DBus address of the current swarm leader,
   possibly %NULL if the leader has not been detected yet</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="837">a #DeePeer</doc>
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_swarm_leader" invoker="is_swarm_leader">
        <source-position filename="dee-peer.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-peer.c"
               line="823">%TRUE if and only if this peer owns the swarm name on
              the session bus</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="821">a #DeePeer</doc>
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="list_peers" invoker="list_peers">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="889">Gets list of all peers currently in this swarm.</doc>
        <source-position filename="dee-peer.h" line="87"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-peer.c"
               line="895">List of peers (free using g_strfreev()).</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="891">a #DeePeer</doc>
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="peer_found">
        <source-position filename="dee-peer.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="peer_lost">
        <source-position filename="dee-peer.h" line="79"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_connections" c:identifier="dee_peer_get_connections">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="871">Gets list of #GDBusConnection instances used by this #DeePeer instance.</doc>
        <source-position filename="dee-peer.h" line="112"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="dee-peer.c"
               line="877">
              List of connections.</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="Gio.DBusConnection"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="873">a #DeePeer</doc>
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_swarm_leader"
              c:identifier="dee_peer_get_swarm_leader"
              glib:get-property="swarm-leader">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="835">In case this peer is connected to a message bus, gets the unique DBus
address of the current swarm leader, otherwise returns id of the leader.</doc>
        <source-position filename="dee-peer.h" line="108"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-peer.c"
               line="842">Unique DBus address of the current swarm leader,
   possibly %NULL if the leader has not been detected yet</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="837">a #DeePeer</doc>
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_swarm_name"
              c:identifier="dee_peer_get_swarm_name"
              glib:get-property="swarm-name">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="854">Gets the unique name for this swarm. The swarm leader is the Peer owning
this name on the session bus.</doc>
        <source-position filename="dee-peer.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-peer.c"
               line="861">The swarm name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="856">a #DeePeer</doc>
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_swarm_leader" c:identifier="dee_peer_is_swarm_leader">
        <source-position filename="dee-peer.h" line="106"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-peer.c"
               line="823">%TRUE if and only if this peer owns the swarm name on
              the session bus</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="821">a #DeePeer</doc>
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_swarm_owner"
              c:identifier="dee_peer_is_swarm_owner"
              glib:get-property="swarm-owner">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="906">Gets the value of the :swarm-owner property.

Note that this does NOT mean that the peer is leader of the swarm! Check also
dee_peer_is_swarm_leader().</doc>
        <source-position filename="dee-peer.h" line="116"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-peer.c"
               line="915">TRUE if the :swarm-owner property was set during construction.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="908">a #DeePeer</doc>
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_peers" c:identifier="dee_peer_list_peers">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="889">Gets list of all peers currently in this swarm.</doc>
        <source-position filename="dee-peer.h" line="114"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-peer.c"
               line="895">List of peers (free using g_strfreev()).</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="891">a #DeePeer</doc>
            <type name="Peer" c:type="DeePeer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="swarm-leader"
                transfer-ownership="none"
                getter="get_swarm_leader"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="swarm-name"
                writable="1"
                construct="1"
                transfer-ownership="none"
                getter="get_swarm_name"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="swarm-owner"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="is_swarm_owner"
                default-value="FALSE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="PeerPrivate" c:type="DeePeerPrivate*"/>
      </field>
      <glib:signal name="connection-acquired" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="Gio.DBusConnection"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="connection-closed" when="last">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="504">Connect to this signal to be notified when peers close
their #GDBusConnection.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="connection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="507">the closed #GDBusConnection</doc>
            <type name="Gio.DBusConnection"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="peer-found" when="last">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="451">Connect to this signal to be notified of existing and new peers that are
  in your swarm.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="454">the DBus name of the object found</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="peer-lost" when="last">
        <doc xml:space="preserve"
             filename="dee-peer.c"
             line="469">Connect to this signal to be notified when peers disconnect from the swarm</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="472">the DBus name of the object that disconnected</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="PeerClass"
            c:type="DeePeerClass"
            glib:is-gtype-struct-for="Peer">
      <source-position filename="dee-peer.h" line="93"/>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="peer_found">
        <callback name="peer_found">
          <source-position filename="dee-peer.h" line="78"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Peer" c:type="DeePeer*"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="peer_lost">
        <callback name="peer_lost">
          <source-position filename="dee-peer.h" line="79"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Peer" c:type="DeePeer*"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="connection_acquired">
        <callback name="connection_acquired">
          <source-position filename="dee-peer.h" line="80"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Peer" c:type="DeePeer*"/>
            </parameter>
            <parameter name="connection" transfer-ownership="none">
              <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="connection_closed">
        <callback name="connection_closed">
          <source-position filename="dee-peer.h" line="81"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Peer" c:type="DeePeer*"/>
            </parameter>
            <parameter name="connection" transfer-ownership="none">
              <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_swarm_leader">
        <callback name="get_swarm_leader">
          <source-position filename="dee-peer.h" line="84"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="842">Unique DBus address of the current swarm leader,
   possibly %NULL if the leader has not been detected yet</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-peer.c"
                   line="837">a #DeePeer</doc>
              <type name="Peer" c:type="DeePeer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_swarm_leader">
        <callback name="is_swarm_leader">
          <source-position filename="dee-peer.h" line="85"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="823">%TRUE if and only if this peer owns the swarm name on
              the session bus</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-peer.c"
                   line="821">a #DeePeer</doc>
              <type name="Peer" c:type="DeePeer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_connections">
        <callback name="get_connections">
          <source-position filename="dee-peer.h" line="86"/>
          <return-value transfer-ownership="container">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="877">
              List of connections.</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="Gio.DBusConnection"/>
            </type>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-peer.c"
                   line="873">a #DeePeer</doc>
              <type name="Peer" c:type="DeePeer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="list_peers">
        <callback name="list_peers">
          <source-position filename="dee-peer.h" line="87"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-peer.c"
                 line="895">List of peers (free using g_strfreev()).</doc>
            <array c:type="gchar**">
              <type name="utf8"/>
            </array>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-peer.c"
                   line="891">a #DeePeer</doc>
              <type name="Peer" c:type="DeePeer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_dee_peer_1" introspectable="0">
        <callback name="_dee_peer_1">
          <source-position filename="dee-peer.h" line="90"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_peer_2" introspectable="0">
        <callback name="_dee_peer_2">
          <source-position filename="dee-peer.h" line="91"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_peer_3" introspectable="0">
        <callback name="_dee_peer_3">
          <source-position filename="dee-peer.h" line="92"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="PeerPrivate"
            c:type="DeePeerPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-peer.c"
           line="67">Ignore this structure.</doc>
      <source-position filename="dee-peer.h" line="52"/>
    </record>
    <class name="ProxyModel"
           c:symbol-prefix="proxy_model"
           c:type="DeeProxyModel"
           parent="SerializableModel"
           glib:type-name="DeeProxyModel"
           glib:get-type="dee_proxy_model_get_type"
           glib:type-struct="ProxyModelClass">
      <doc xml:space="preserve"
           filename="dee-proxy-model.h"
           line="56">All fields in the DeeProxyModel structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-proxy-model.h" line="80"/>
      <implements name="Model"/>
      <implements name="Serializable"/>
      <property name="back-end"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="dee-proxy-model.c"
             line="401">The backend model used by this proxy model.</doc>
        <type name="Model"/>
      </property>
      <property name="inherit-seqnums"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="TRUE">
        <doc xml:space="preserve"
             filename="dee-proxy-model.c"
             line="427">Boolean property defining whether sequence numbers will be inherited
from the back end model.
You will most likely want to set this property to false
if the implementation manipulates with the rows in the model and keep
track of seqnums yourself.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="proxy-signals"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="TRUE">
        <doc xml:space="preserve"
             filename="dee-proxy-model.c"
             line="413">Boolean property defining whether or not to automatically forward signals
from the back end model. This is especially useful for sub classes wishing
to do their own more advanced signal forwarding.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="SerializableModel" c:type="DeeSerializableModel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ProxyModelPrivate" c:type="DeeProxyModelPrivate*"/>
      </field>
    </class>
    <record name="ProxyModelClass"
            c:type="DeeProxyModelClass"
            glib:is-gtype-struct-for="ProxyModel">
      <source-position filename="dee-proxy-model.h" line="80"/>
      <field name="parent_class" readable="0" private="1">
        <type name="SerializableModelClass"
              c:type="DeeSerializableModelClass"/>
      </field>
      <field name="_dee_proxy_model_1" introspectable="0">
        <callback name="_dee_proxy_model_1">
          <source-position filename="dee-proxy-model.h" line="76"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_proxy_model_2" introspectable="0">
        <callback name="_dee_proxy_model_2">
          <source-position filename="dee-proxy-model.h" line="77"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_proxy_model_3" introspectable="0">
        <callback name="_dee_proxy_model_3">
          <source-position filename="dee-proxy-model.h" line="78"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_proxy_model_4" introspectable="0">
        <callback name="_dee_proxy_model_4">
          <source-position filename="dee-proxy-model.h" line="79"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="ProxyModelPrivate"
            c:type="DeeProxyModelPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-proxy-model.c"
           line="54">Ignore this structure.</doc>
      <source-position filename="dee-proxy-model.h" line="54"/>
    </record>
    <function-macro name="RESOURCE_MANAGER"
                    c:identifier="DEE_RESOURCE_MANAGER"
                    introspectable="0">
      <source-position filename="dee-resource-manager.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="RESOURCE_MANAGER_GET_IFACE"
                    c:identifier="DEE_RESOURCE_MANAGER_GET_IFACE"
                    introspectable="0">
      <source-position filename="dee-resource-manager.h" line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="RESULT_SET"
                    c:identifier="DEE_RESULT_SET"
                    introspectable="0">
      <source-position filename="dee-result-set.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="RESULT_SET_GET_IFACE"
                    c:identifier="DEE_RESULT_SET_GET_IFACE"
                    introspectable="0">
      <source-position filename="dee-result-set.h" line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <interface name="ResourceManager"
               c:symbol-prefix="resource_manager"
               c:type="DeeResourceManager"
               glib:type-name="DeeResourceManager"
               glib:get-type="dee_resource_manager_get_type"
               glib:type-struct="ResourceManagerIface">
      <source-position filename="dee-resource-manager.h" line="70"/>
      <function name="get_default"
                c:identifier="dee_resource_manager_get_default">
        <doc xml:space="preserve"
             filename="dee-resource-manager.c"
             line="129">Get a pointer to the platform default #DeeResourceManager.</doc>
        <source-position filename="dee-resource-manager.h" line="83"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-resource-manager.c"
               line="134">The default resource manager for the platform.
              Do not unreference. If you need to keep the instance around
              you must manually reference it.</doc>
          <type name="ResourceManager" c:type="DeeResourceManager*"/>
        </return-value>
      </function>
      <virtual-method name="load" invoker="load" throws="1">
        <doc xml:space="preserve"
             filename="dee-resource-manager.c"
             line="91">Load a resource from persistent storage. The loaded resource will be of the
same GType as when it was stored (provided that the same serialization and
parse functions are registered).

In case of an error the error will be in the #GFileError domain. Specifically
if there is no resource with the name @resource_name the error code will
be #G_FILE_ERROR_NOENT.

Important note: This call may do blocking IO. The resource manager must
guarantee that this call is reasonably fast, like writing the externalized
resource to a file, but not blocking IO over a network socket.</doc>
        <source-position filename="dee-resource-manager.h" line="57"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-resource-manager.c"
               line="109">A newly allocated #GObject in case of success
              and %NULL otherwise. In case of a runtime error the @error
              pointer will be set.</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="93">The resource manager to invoke</doc>
            <type name="ResourceManager" c:type="DeeResourceManager*"/>
          </instance-parameter>
          <parameter name="resource_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="94">The name of the resource to retrieve</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="store" invoker="store" throws="1">
        <doc xml:space="preserve"
             filename="dee-resource-manager.c"
             line="52">Store a resource under a given name. The resource manager must guarantee
that the stored data survives system reboots and that you can recreate a
copy of @resource by calling dee_resource_manager_load() using the
same @resource_name.

Important note: This call may do blocking IO. The resource manager must
guarantee that this call is reasonably fast, like writing the externalized
resource to a file, but not blocking IO over a network socket.</doc>
        <source-position filename="dee-resource-manager.h" line="52"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-resource-manager.c"
               line="69">%TRUE on success and %FALSE otherwise. In case of a runtime
              error the @error pointer will point to a #GError in the
              #DeeResourceError domain.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="54">The resource manager to invoke</doc>
            <type name="ResourceManager" c:type="DeeResourceManager*"/>
          </instance-parameter>
          <parameter name="resource" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="55">A #DeeSerializable to store under @resource_name</doc>
            <type name="Serializable" c:type="DeeSerializable*"/>
          </parameter>
          <parameter name="resource_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="56">The name to store the resource under. Will overwrite any
                existing resource with the same name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="load" c:identifier="dee_resource_manager_load" throws="1">
        <doc xml:space="preserve"
             filename="dee-resource-manager.c"
             line="91">Load a resource from persistent storage. The loaded resource will be of the
same GType as when it was stored (provided that the same serialization and
parse functions are registered).

In case of an error the error will be in the #GFileError domain. Specifically
if there is no resource with the name @resource_name the error code will
be #G_FILE_ERROR_NOENT.

Important note: This call may do blocking IO. The resource manager must
guarantee that this call is reasonably fast, like writing the externalized
resource to a file, but not blocking IO over a network socket.</doc>
        <source-position filename="dee-resource-manager.h" line="79"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-resource-manager.c"
               line="109">A newly allocated #GObject in case of success
              and %NULL otherwise. In case of a runtime error the @error
              pointer will be set.</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="93">The resource manager to invoke</doc>
            <type name="ResourceManager" c:type="DeeResourceManager*"/>
          </instance-parameter>
          <parameter name="resource_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="94">The name of the resource to retrieve</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="store"
              c:identifier="dee_resource_manager_store"
              throws="1">
        <doc xml:space="preserve"
             filename="dee-resource-manager.c"
             line="52">Store a resource under a given name. The resource manager must guarantee
that the stored data survives system reboots and that you can recreate a
copy of @resource by calling dee_resource_manager_load() using the
same @resource_name.

Important note: This call may do blocking IO. The resource manager must
guarantee that this call is reasonably fast, like writing the externalized
resource to a file, but not blocking IO over a network socket.</doc>
        <source-position filename="dee-resource-manager.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-resource-manager.c"
               line="69">%TRUE on success and %FALSE otherwise. In case of a runtime
              error the @error pointer will point to a #GError in the
              #DeeResourceError domain.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="54">The resource manager to invoke</doc>
            <type name="ResourceManager" c:type="DeeResourceManager*"/>
          </instance-parameter>
          <parameter name="resource" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="55">A #DeeSerializable to store under @resource_name</doc>
            <type name="Serializable" c:type="DeeSerializable*"/>
          </parameter>
          <parameter name="resource_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="56">The name to store the resource under. Will overwrite any
                existing resource with the same name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="ResourceManagerIface"
            c:type="DeeResourceManagerIface"
            glib:is-gtype-struct-for="ResourceManager">
      <source-position filename="dee-resource-manager.h" line="70"/>
      <field name="g_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="store">
        <callback name="store" throws="1">
          <source-position filename="dee-resource-manager.h" line="52"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="69">%TRUE on success and %FALSE otherwise. In case of a runtime
              error the @error pointer will point to a #GError in the
              #DeeResourceError domain.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-resource-manager.c"
                   line="54">The resource manager to invoke</doc>
              <type name="ResourceManager" c:type="DeeResourceManager*"/>
            </parameter>
            <parameter name="resource" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-resource-manager.c"
                   line="55">A #DeeSerializable to store under @resource_name</doc>
              <type name="Serializable" c:type="DeeSerializable*"/>
            </parameter>
            <parameter name="resource_name" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-resource-manager.c"
                   line="56">The name to store the resource under. Will overwrite any
                existing resource with the same name</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="load">
        <callback name="load" throws="1">
          <source-position filename="dee-resource-manager.h" line="57"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-resource-manager.c"
                 line="109">A newly allocated #GObject in case of success
              and %NULL otherwise. In case of a runtime error the @error
              pointer will be set.</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-resource-manager.c"
                   line="93">The resource manager to invoke</doc>
              <type name="ResourceManager" c:type="DeeResourceManager*"/>
            </parameter>
            <parameter name="resource_name" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-resource-manager.c"
                   line="94">The name of the resource to retrieve</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_dee_resource_manager_1" introspectable="0">
        <callback name="_dee_resource_manager_1">
          <source-position filename="dee-resource-manager.h" line="62"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_resource_manager_2" introspectable="0">
        <callback name="_dee_resource_manager_2">
          <source-position filename="dee-resource-manager.h" line="63"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_resource_manager_3" introspectable="0">
        <callback name="_dee_resource_manager_3">
          <source-position filename="dee-resource-manager.h" line="64"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_resource_manager_4" introspectable="0">
        <callback name="_dee_resource_manager_4">
          <source-position filename="dee-resource-manager.h" line="65"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_resource_manager_5" introspectable="0">
        <callback name="_dee_resource_manager_5">
          <source-position filename="dee-resource-manager.h" line="66"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_resource_manager_6" introspectable="0">
        <callback name="_dee_resource_manager_6">
          <source-position filename="dee-resource-manager.h" line="67"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_resource_manager_7" introspectable="0">
        <callback name="_dee_resource_manager_7">
          <source-position filename="dee-resource-manager.h" line="68"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_resource_manager_8" introspectable="0">
        <callback name="_dee_resource_manager_8">
          <source-position filename="dee-resource-manager.h" line="69"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <interface name="ResultSet"
               c:symbol-prefix="result_set"
               c:type="DeeResultSet"
               glib:type-name="DeeResultSet"
               glib:get-type="dee_result_set_get_type"
               glib:type-struct="ResultSetIface">
      <source-position filename="dee-result-set.h" line="74"/>
      <virtual-method name="get_model" invoker="get_model">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="189">Get the model associated with a result set</doc>
        <source-position filename="dee-result-set.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="195">The model that the rows point into</doc>
          <type name="Model" c:type="DeeModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="191">The #DeeResultSet to get the mode for</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_n_rows" invoker="get_n_rows">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="59">Get the number of #DeeModelIter&lt;!-- --&gt;s held in a #DeeResultSet.</doc>
        <source-position filename="dee-result-set.h" line="53"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="65">The number of rows held in the result set</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="61">The #DeeResultSet to get the size of</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="has_next" invoker="has_next">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="104">Check if a call to dee_result_set_next() will succeed.</doc>
        <source-position filename="dee-result-set.h" line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="110">%TRUE if and only if more rows can be retrieved by calling
         dee_result_set_next()</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="106">The #DeeResultSet to check</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="next" invoker="next">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="79">Get the current row from the result set and advance the cursor.
To ensure that calls to this method will succeed you can call
dee_result_set_has_next().

To retrieve the current row without advancing the cursor call
dee_result_set_peek() in stead of this method.</doc>
        <source-position filename="dee-result-set.h" line="55"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="90">The #DeeModelIter at the current cursor position</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="81">The #DeeResultSet to get a row from</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="peek" invoker="peek">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="125">Get the row at the current cursor position.

To retrieve the current row and advance the cursor position call
dee_result_set_next() in stead of this method.</doc>
        <source-position filename="dee-result-set.h" line="59"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="134">The #DeeModelIter at the current cursor position</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="127">The #DeeResultSet to get a row from</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="seek" invoker="seek">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="148">Set the cursor position. Following calls to dee_result_set_peek()
or dee_result_set_next() will read the row at position @pos.</doc>
        <source-position filename="dee-result-set.h" line="61"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="150">The #DeeResultSet to seek in</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="151">The position to seek to</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="tell" invoker="tell">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="169">Get the current position of the cursor.</doc>
        <source-position filename="dee-result-set.h" line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="175">The current position of the cursor</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="171">The #DeeResultSet to check the cursor position for</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="get_model" c:identifier="dee_result_set_get_model">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="189">Get the model associated with a result set</doc>
        <source-position filename="dee-result-set.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="195">The model that the rows point into</doc>
          <type name="Model" c:type="DeeModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="191">The #DeeResultSet to get the mode for</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_n_rows" c:identifier="dee_result_set_get_n_rows">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="59">Get the number of #DeeModelIter&lt;!-- --&gt;s held in a #DeeResultSet.</doc>
        <source-position filename="dee-result-set.h" line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="65">The number of rows held in the result set</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="61">The #DeeResultSet to get the size of</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_next" c:identifier="dee_result_set_has_next">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="104">Check if a call to dee_result_set_next() will succeed.</doc>
        <source-position filename="dee-result-set.h" line="82"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="110">%TRUE if and only if more rows can be retrieved by calling
         dee_result_set_next()</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="106">The #DeeResultSet to check</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="next" c:identifier="dee_result_set_next">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="79">Get the current row from the result set and advance the cursor.
To ensure that calls to this method will succeed you can call
dee_result_set_has_next().

To retrieve the current row without advancing the cursor call
dee_result_set_peek() in stead of this method.</doc>
        <source-position filename="dee-result-set.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="90">The #DeeModelIter at the current cursor position</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="81">The #DeeResultSet to get a row from</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="peek" c:identifier="dee_result_set_peek">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="125">Get the row at the current cursor position.

To retrieve the current row and advance the cursor position call
dee_result_set_next() in stead of this method.</doc>
        <source-position filename="dee-result-set.h" line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="134">The #DeeModelIter at the current cursor position</doc>
          <type name="ModelIter" c:type="DeeModelIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="127">The #DeeResultSet to get a row from</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="seek" c:identifier="dee_result_set_seek">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="148">Set the cursor position. Following calls to dee_result_set_peek()
or dee_result_set_next() will read the row at position @pos.</doc>
        <source-position filename="dee-result-set.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="dee-result-set.c"
                 line="150">The #DeeResultSet to seek in</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="151">The position to seek to</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="tell" c:identifier="dee_result_set_tell">
        <doc xml:space="preserve"
             filename="dee-result-set.c"
             line="169">Get the current position of the cursor.</doc>
        <source-position filename="dee-result-set.h" line="89"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-result-set.c"
               line="175">The current position of the cursor</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="171">The #DeeResultSet to check the cursor position for</doc>
            <type name="ResultSet" c:type="DeeResultSet*"/>
          </instance-parameter>
        </parameters>
      </method>
    </interface>
    <record name="ResultSetIface"
            c:type="DeeResultSetIface"
            glib:is-gtype-struct-for="ResultSet">
      <source-position filename="dee-result-set.h" line="74"/>
      <field name="g_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_n_rows">
        <callback name="get_n_rows">
          <source-position filename="dee-result-set.h" line="53"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="65">The number of rows held in the result set</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-result-set.c"
                   line="61">The #DeeResultSet to get the size of</doc>
              <type name="ResultSet" c:type="DeeResultSet*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="next">
        <callback name="next">
          <source-position filename="dee-result-set.h" line="55"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="90">The #DeeModelIter at the current cursor position</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-result-set.c"
                   line="81">The #DeeResultSet to get a row from</doc>
              <type name="ResultSet" c:type="DeeResultSet*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="has_next">
        <callback name="has_next">
          <source-position filename="dee-result-set.h" line="57"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="110">%TRUE if and only if more rows can be retrieved by calling
         dee_result_set_next()</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-result-set.c"
                   line="106">The #DeeResultSet to check</doc>
              <type name="ResultSet" c:type="DeeResultSet*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="peek">
        <callback name="peek">
          <source-position filename="dee-result-set.h" line="59"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="134">The #DeeModelIter at the current cursor position</doc>
            <type name="ModelIter" c:type="DeeModelIter*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-result-set.c"
                   line="127">The #DeeResultSet to get a row from</doc>
              <type name="ResultSet" c:type="DeeResultSet*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="seek">
        <callback name="seek">
          <source-position filename="dee-result-set.h" line="61"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-result-set.c"
                   line="150">The #DeeResultSet to seek in</doc>
              <type name="ResultSet" c:type="DeeResultSet*"/>
            </parameter>
            <parameter name="pos" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-result-set.c"
                   line="151">The position to seek to</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tell">
        <callback name="tell">
          <source-position filename="dee-result-set.h" line="64"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="175">The current position of the cursor</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-result-set.c"
                   line="171">The #DeeResultSet to check the cursor position for</doc>
              <type name="ResultSet" c:type="DeeResultSet*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_model">
        <callback name="get_model">
          <source-position filename="dee-result-set.h" line="66"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-result-set.c"
                 line="195">The model that the rows point into</doc>
            <type name="Model" c:type="DeeModel*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-result-set.c"
                   line="191">The #DeeResultSet to get the mode for</doc>
              <type name="ResultSet" c:type="DeeResultSet*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_dee_result_set_1" introspectable="0">
        <callback name="_dee_result_set_1">
          <source-position filename="dee-result-set.h" line="69"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_result_set_2" introspectable="0">
        <callback name="_dee_result_set_2">
          <source-position filename="dee-result-set.h" line="70"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_result_set_3" introspectable="0">
        <callback name="_dee_result_set_3">
          <source-position filename="dee-result-set.h" line="71"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_result_set_4" introspectable="0">
        <callback name="_dee_result_set_4">
          <source-position filename="dee-result-set.h" line="72"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_result_set_5" introspectable="0">
        <callback name="_dee_result_set_5">
          <source-position filename="dee-result-set.h" line="73"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <function-macro name="SEQUENCE_MODEL"
                    c:identifier="DEE_SEQUENCE_MODEL"
                    introspectable="0">
      <source-position filename="dee-sequence-model.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SEQUENCE_MODEL_CLASS"
                    c:identifier="DEE_SEQUENCE_MODEL_CLASS"
                    introspectable="0">
      <source-position filename="dee-sequence-model.h" line="40"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="SEQUENCE_MODEL_DBUS_IFACE"
              value="com.canonical.Dee.Model"
              c:type="DEE_SEQUENCE_MODEL_DBUS_IFACE">
      <doc xml:space="preserve"
           filename="dee-sequence-model.h"
           line="70">String constant defining the name of the DBus Model interface.</doc>
      <source-position filename="dee-sequence-model.h" line="75"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="SEQUENCE_MODEL_GET_CLASS"
                    c:identifier="DEE_SEQUENCE_MODEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-sequence-model.h" line="49"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERIALIZABLE"
                    c:identifier="DEE_SERIALIZABLE"
                    introspectable="0">
      <source-position filename="dee-serializable.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERIALIZABLE_GET_IFACE"
                    c:identifier="DEE_SERIALIZABLE_GET_IFACE"
                    introspectable="0">
      <source-position filename="dee-serializable.h" line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERIALIZABLE_MODEL"
                    c:identifier="DEE_SERIALIZABLE_MODEL"
                    introspectable="0">
      <source-position filename="dee-serializable-model.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERIALIZABLE_MODEL_CLASS"
                    c:identifier="DEE_SERIALIZABLE_MODEL_CLASS"
                    introspectable="0">
      <source-position filename="dee-serializable-model.h" line="39"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERIALIZABLE_MODEL_GET_CLASS"
                    c:identifier="DEE_SERIALIZABLE_MODEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-serializable-model.h" line="48"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERVER" c:identifier="DEE_SERVER" introspectable="0">
      <source-position filename="dee-server.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERVER_CLASS"
                    c:identifier="DEE_SERVER_CLASS"
                    introspectable="0">
      <source-position filename="dee-server.h" line="38"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERVER_GET_CLASS"
                    c:identifier="DEE_SERVER_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-server.h" line="47"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SHARED_MODEL"
                    c:identifier="DEE_SHARED_MODEL"
                    introspectable="0">
      <source-position filename="dee-shared-model.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SHARED_MODEL_CLASS"
                    c:identifier="DEE_SHARED_MODEL_CLASS"
                    introspectable="0">
      <source-position filename="dee-shared-model.h" line="41"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="SHARED_MODEL_DBUS_IFACE"
              value="com.canonical.Dee.Model"
              c:type="DEE_SHARED_MODEL_DBUS_IFACE">
      <doc xml:space="preserve"
           filename="dee-shared-model.h"
           line="71">String constant defining the name of the DBus Model interface.</doc>
      <source-position filename="dee-shared-model.h" line="76"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="SHARED_MODEL_GET_CLASS"
                    c:identifier="DEE_SHARED_MODEL_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-shared-model.h" line="50"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="SequenceModel"
           c:symbol-prefix="sequence_model"
           c:type="DeeSequenceModel"
           parent="SerializableModel"
           glib:type-name="DeeSequenceModel"
           glib:get-type="dee_sequence_model_get_type"
           glib:type-struct="SequenceModelClass">
      <doc xml:space="preserve"
           filename="dee-sequence-model.h"
           line="56">All fields in the DeeSequenceModel structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-sequence-model.h" line="87"/>
      <implements name="Model"/>
      <implements name="Serializable"/>
      <constructor name="new" c:identifier="dee_sequence_model_new">
        <doc xml:space="preserve"
             filename="dee-sequence-model.c"
             line="1111">Create a new #DeeSequenceModel. Before using it you must normally set a
schema on it by calling dee_model_set_schema().</doc>
        <source-position filename="dee-sequence-model.h" line="98"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-sequence-model.c"
               line="1117">A newly created
              #DeeSequenceModel. Free with g_object_unref().</doc>
          <type name="SequenceModel" c:type="DeeModel*"/>
        </return-value>
      </constructor>
      <field name="parent" readable="0" private="1">
        <type name="SerializableModel" c:type="DeeSerializableModel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SequenceModelPrivate" c:type="DeeSequenceModelPrivate*"/>
      </field>
    </class>
    <record name="SequenceModelClass"
            c:type="DeeSequenceModelClass"
            glib:is-gtype-struct-for="SequenceModel">
      <source-position filename="dee-sequence-model.h" line="87"/>
      <field name="parent_class" readable="0" private="1">
        <type name="SerializableModelClass"
              c:type="DeeSerializableModelClass"/>
      </field>
      <field name="_dee_sequence_model_1" introspectable="0">
        <callback name="_dee_sequence_model_1">
          <source-position filename="dee-sequence-model.h" line="83"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_sequence_model_2" introspectable="0">
        <callback name="_dee_sequence_model_2">
          <source-position filename="dee-sequence-model.h" line="84"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_sequence_model_3" introspectable="0">
        <callback name="_dee_sequence_model_3">
          <source-position filename="dee-sequence-model.h" line="85"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_sequence_model_4" introspectable="0">
        <callback name="_dee_sequence_model_4">
          <source-position filename="dee-sequence-model.h" line="86"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="SequenceModelPrivate"
            c:type="DeeSequenceModelPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-sequence-model.c"
           line="57">Ignore this structure.</doc>
      <source-position filename="dee-sequence-model.h" line="54"/>
    </record>
    <interface name="Serializable"
               c:symbol-prefix="serializable"
               c:type="DeeSerializable"
               glib:type-name="DeeSerializable"
               glib:get-type="dee_serializable_get_type"
               glib:type-struct="SerializableIface">
      <source-position filename="dee-serializable.h" line="74"/>
      <function name="parse" c:identifier="dee_serializable_parse">
        <doc xml:space="preserve"
             filename="dee-serializable.c"
             line="300">Reconstruct a #DeeSerializable from #GVariant data. For this function
to work you need to register a parser with
dee_serializable_register_parser(). Any native Dee class will do so
automatically.

This method only works on data created with dee_serializable_serialize()
and &lt;emphasis&gt;not&lt;/emphasis&gt; with data from dee_serializable_externalize().

Since a #DeeSerializableParseFunc is not allowed to fail - by contract -
it can be guaranteed that this function only returns %NULL in case there
is no known parser for @type and #GVariant signature of @data.</doc>
        <source-position filename="dee-serializable.h" line="82"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-serializable.c"
               line="318">A newly constructed #GObject build from @data
              or %NULL in case no parser has been registered for the given
              #GType or variant signature. Free with g_object_unref().</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable.c"
                 line="302">The #GVariant data to parse. If this is a floating reference it will
       be consumed</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable.c"
                 line="304">The #GType of the class to instantiate from @data</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </function>
      <function name="parse_external"
                c:identifier="dee_serializable_parse_external">
        <doc xml:space="preserve"
             filename="dee-serializable.c"
             line="229">Reconstruct a #DeeSerializable from #GVariant data. For this function
to work you need to register a parser with
dee_serializable_register_parser(). Any native Dee class will do so
automatically.

This method only works on data created with dee_serializable_externalize()
and &lt;emphasis&gt;not&lt;/emphasis&gt; with data from  dee_serializable_serialize().

Since a #DeeSerializableParseFunc is not allowed to fail - by contract -
it can be guaranteed that this function only returns %NULL in case there
is no known parser for the #GType or #GVariant signature of @data.</doc>
        <source-position filename="dee-serializable.h" line="85"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-serializable.c"
               line="245">A newly constructed #GObject build from @data
              or %NULL in case no parser has been registered for the given
              #GType or variant signature. Free with g_object_unref().</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable.c"
                 line="231">The #GVariant data to parse</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </function>
      <function name="register_parser"
                c:identifier="dee_serializable_register_parser"
                introspectable="0">
        <doc xml:space="preserve"
             filename="dee-serializable.c"
             line="109">Register a parser that can convert #GVariant data into an instance of
a given #GType. Note that you can register more than one parser for the
same #GType provided that you give them different variant type signatures.

If there is already a parser registered for the given @type and @vtype
it will be silently replaced.

The recommended behaviour is that #GObject classes register their parsers in
their respective class init functions.</doc>
        <source-position filename="dee-serializable.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable.c"
                 line="111">The #GType of the object class to register a parser for</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
          <parameter name="vtype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable.c"
                 line="112">Variants to be converted must have this signature</doc>
            <type name="GLib.VariantType" c:type="const GVariantType*"/>
          </parameter>
          <parameter name="parse_func" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable.c"
                 line="113">A function to convert #GVariant data into an instance of the
             given @type.</doc>
            <type name="SerializableParseFunc"
                  c:type="DeeSerializableParseFunc"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="serialize" invoker="serialize">
        <doc xml:space="preserve"
             filename="dee-serializable.c"
             line="400">Build a clean serialized representation of @self. The signature of the
returned variant is entirely determined by the underlying implementation.
You can recreate a serialized instance by calling dee_serializable_parse()
provided that you know the correct #GType for the serialized instance.</doc>
        <source-position filename="dee-serializable.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-serializable.c"
               line="409">A reference to a #GVariant with
              the serialized data. The variants type signature is entirely
              dependent of the underlying implementation. Free using
              g_variant_unref().</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable.c"
                 line="402">The instance to serialize</doc>
            <type name="Serializable" c:type="DeeSerializable*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="externalize" c:identifier="dee_serializable_externalize">
        <doc xml:space="preserve"
             filename="dee-serializable.c"
             line="362">Build an externalized form of @self which can be used together with
dee_serializable_parse_external() to rebuild a copy of @self.

It is important to note that the variant returned from this method does
not have the same type signature as returned from a call to
dee_serializable_serialize(). Externalization will wrap the serialized data
in a container format with versioning information and headers with type
information.</doc>
        <source-position filename="dee-serializable.h" line="87"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-serializable.c"
               line="375">A floating reference to a #GVariant with the externalized data.</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable.c"
                 line="364">The instance to externalize</doc>
            <type name="Serializable" c:type="DeeSerializable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="serialize" c:identifier="dee_serializable_serialize">
        <doc xml:space="preserve"
             filename="dee-serializable.c"
             line="400">Build a clean serialized representation of @self. The signature of the
returned variant is entirely determined by the underlying implementation.
You can recreate a serialized instance by calling dee_serializable_parse()
provided that you know the correct #GType for the serialized instance.</doc>
        <source-position filename="dee-serializable.h" line="89"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-serializable.c"
               line="409">A reference to a #GVariant with
              the serialized data. The variants type signature is entirely
              dependent of the underlying implementation. Free using
              g_variant_unref().</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable.c"
                 line="402">The instance to serialize</doc>
            <type name="Serializable" c:type="DeeSerializable*"/>
          </instance-parameter>
        </parameters>
      </method>
    </interface>
    <record name="SerializableIface"
            c:type="DeeSerializableIface"
            glib:is-gtype-struct-for="Serializable">
      <source-position filename="dee-serializable.h" line="74"/>
      <field name="g_iface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="serialize">
        <callback name="serialize">
          <source-position filename="dee-serializable.h" line="66"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-serializable.c"
                 line="409">A reference to a #GVariant with
              the serialized data. The variants type signature is entirely
              dependent of the underlying implementation. Free using
              g_variant_unref().</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-serializable.c"
                   line="402">The instance to serialize</doc>
              <type name="Serializable" c:type="DeeSerializable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_dee_serializable_1" introspectable="0">
        <callback name="_dee_serializable_1">
          <source-position filename="dee-serializable.h" line="69"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_serializable_2" introspectable="0">
        <callback name="_dee_serializable_2">
          <source-position filename="dee-serializable.h" line="70"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_serializable_3" introspectable="0">
        <callback name="_dee_serializable_3">
          <source-position filename="dee-serializable.h" line="71"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_serializable_4" introspectable="0">
        <callback name="_dee_serializable_4">
          <source-position filename="dee-serializable.h" line="72"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_serializable_5" introspectable="0">
        <callback name="_dee_serializable_5">
          <source-position filename="dee-serializable.h" line="73"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <class name="SerializableModel"
           c:symbol-prefix="serializable_model"
           c:type="DeeSerializableModel"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="DeeSerializableModel"
           glib:get-type="dee_serializable_model_get_type"
           glib:type-struct="SerializableModelClass">
      <doc xml:space="preserve"
           filename="dee-serializable-model.h"
           line="55">All fields in the DeeSerializableModel structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-serializable-model.h" line="85"/>
      <implements name="Model"/>
      <implements name="Serializable"/>
      <method name="get_seqnum"
              c:identifier="dee_serializable_model_get_seqnum">
        <source-position filename="dee-serializable-model.h" line="96"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-serializable-model.c"
               line="395">Sequence number of this #DeeSerializableModel.</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable-model.c"
                 line="393">A #DeeSerializableModel instance</doc>
            <type name="SerializableModel" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="inc_seqnum"
              c:identifier="dee_serializable_model_inc_seqnum">
        <doc xml:space="preserve"
             filename="dee-serializable-model.c"
             line="439">Increments sequence number of this #DeeSerializableModel.</doc>
        <source-position filename="dee-serializable-model.h" line="101"/>
        <return-value transfer-ownership="none">
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable-model.c"
                 line="442">A #DeeSerializableModel instance</doc>
            <type name="SerializableModel" c:type="DeeModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_seqnum"
              c:identifier="dee_serializable_model_set_seqnum">
        <doc xml:space="preserve"
             filename="dee-serializable-model.c"
             line="414">Sets sequence number of this #DeeSerializableModel.</doc>
        <source-position filename="dee-serializable-model.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="dee-serializable-model.c"
                 line="417">A #DeeSerializableModel instance</doc>
            <type name="SerializableModel" c:type="DeeModel*"/>
          </instance-parameter>
          <parameter name="seqnum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-serializable-model.c"
                 line="418">Sequence number</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SerializableModelPrivate"
              c:type="DeeSerializableModelPrivate*"/>
      </field>
    </class>
    <record name="SerializableModelClass"
            c:type="DeeSerializableModelClass"
            glib:is-gtype-struct-for="SerializableModel">
      <source-position filename="dee-serializable-model.h" line="85"/>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_seqnum">
        <callback name="get_seqnum">
          <source-position filename="dee-serializable-model.h" line="75"/>
          <return-value transfer-ownership="none">
            <type name="guint64" c:type="guint64"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_seqnum">
        <callback name="set_seqnum">
          <source-position filename="dee-serializable-model.h" line="76"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
            <parameter name="seqnum" transfer-ownership="none">
              <type name="guint64" c:type="guint64"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="inc_seqnum">
        <callback name="inc_seqnum">
          <source-position filename="dee-serializable-model.h" line="78"/>
          <return-value transfer-ownership="none">
            <type name="guint64" c:type="guint64"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Model" c:type="DeeModel*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_dee_serializable_model_1" introspectable="0">
        <callback name="_dee_serializable_model_1">
          <source-position filename="dee-serializable-model.h" line="81"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_serializable_model_2" introspectable="0">
        <callback name="_dee_serializable_model_2">
          <source-position filename="dee-serializable-model.h" line="82"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_serializable_model_3" introspectable="0">
        <callback name="_dee_serializable_model_3">
          <source-position filename="dee-serializable-model.h" line="83"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_serializable_model_4" introspectable="0">
        <callback name="_dee_serializable_model_4">
          <source-position filename="dee-serializable-model.h" line="84"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="SerializableModelPrivate"
            c:type="DeeSerializableModelPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-serializable-model.c"
           line="54">Ignore this structure.</doc>
      <source-position filename="dee-serializable-model.h" line="53"/>
    </record>
    <callback name="SerializableParseFunc" c:type="DeeSerializableParseFunc">
      <source-position filename="dee-serializable.h" line="59"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="dee-serializable.h"
             line="53">A newly constructed #GObject of the #GType
              used when registering the parser. Note that since
              the environment guarantees that the input data is valid
              according to the registration information this function
              can not fail. Thus %NULL is not a valid return value.</doc>
        <type name="GObject.Object" c:type="GObject*"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-serializable.h"
               line="49">A #GVariant with type signature as passed to
       dee_serializable_register_parser() when the parser was registered.
       The variant is not referenced.</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </callback>
    <class name="Server"
           c:symbol-prefix="server"
           c:type="DeeServer"
           parent="Peer"
           glib:type-name="DeeServer"
           glib:get-type="dee_server_get_type"
           glib:type-struct="ServerClass">
      <source-position filename="dee-server.h" line="62"/>
      <constructor name="new" c:identifier="dee_server_new">
        <doc xml:space="preserve"
             filename="dee-server.c"
             line="453">Creates a new instance of #DeeServer and tries to bind
to #DeeServer:bus-address. The #DeePeer:swarm-leader property will be set
when the binding succeeds.

&lt;note&gt;
  &lt;para&gt;
    Note that this function will automatically determine the value
    of #DeeServer:bus-address property and will generally cause your
    application to use new socket for every #DeeServer with different swarm
    name. See dee_server_new_for_address() if you'd like to share one
    connection between multiple #DeeServer instances.
  &lt;/para&gt;
&lt;/note&gt;</doc>
        <source-position filename="dee-server.h" line="73"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-server.c"
               line="471">A newly constructed #DeeServer.</doc>
          <type name="Server" c:type="DeeServer*"/>
        </return-value>
        <parameters>
          <parameter name="swarm_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-server.c"
                 line="455">Name of swarm to join.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_for_address"
                   c:identifier="dee_server_new_for_address">
        <doc xml:space="preserve"
             filename="dee-server.c"
             line="482">Creates a new instance of #DeeServer and tries to bind to @bus_address.
The #DeePeer:swarm-leader property will be set when the binding succeeds.

If there is already a #DeeServer instance bound to @bus_address,
the connection will be shared with the newly constructed instance.

&lt;note&gt;
  &lt;para&gt;
    This function is primarily meant for sharing of one connection (socket)
    between multiple DeeServers, so that you can create #DeeServer instances
    with varying swarm names, but the same bus address, which will cause
    them to share the connection (the sharing is possible only within
    the same process though).
  &lt;/para&gt;
&lt;/note&gt;</doc>
        <source-position filename="dee-server.h" line="75"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-server.c"
               line="503">A newly constructed #DeeServer.</doc>
          <type name="Server" c:type="DeeServer*"/>
        </return-value>
        <parameters>
          <parameter name="swarm_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-server.c"
                 line="484">Name of swarm to join.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="bus_address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-server.c"
                 line="485">D-Bus address to use for the connection.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="bus_address_for_name"
                c:identifier="dee_server_bus_address_for_name">
        <doc xml:space="preserve"
             filename="dee-server.c"
             line="535">Helper method which creates bus address string for the given name, which
should have the same format as a DBus unique name.</doc>
        <source-position filename="dee-server.h" line="80"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-server.c"
               line="543">Newly allocated string with bus address.
                               Use g_free() to free.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-server.c"
                 line="537">A name to create bus address for.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="include_username" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-server.c"
                 line="538">Include current user name as part of the bus address.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_client_address"
              c:identifier="dee_server_get_client_address">
        <doc xml:space="preserve"
             filename="dee-server.c"
             line="515">Gets a D-Bus address string that can be used by clients to connect to server.</doc>
        <source-position filename="dee-server.h" line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-server.c"
               line="521">A D-Bus address string. Do not free.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-server.c"
                 line="517">A #DeeServer.</doc>
            <type name="Server" c:type="DeeServer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="bus-address"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="same-user-only"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="TRUE">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="Peer" c:type="DeePeer"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ServerPrivate" c:type="DeeServerPrivate*"/>
      </field>
    </class>
    <record name="ServerClass"
            c:type="DeeServerClass"
            glib:is-gtype-struct-for="Server">
      <source-position filename="dee-server.h" line="62"/>
      <field name="parent_class" readable="0" private="1">
        <type name="PeerClass" c:type="DeePeerClass"/>
      </field>
    </record>
    <record name="ServerPrivate"
            c:type="DeeServerPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-server.c"
           line="45">Ignore this structure.</doc>
      <source-position filename="dee-server.h" line="50"/>
    </record>
    <class name="SharedModel"
           c:symbol-prefix="shared_model"
           c:type="DeeSharedModel"
           parent="ProxyModel"
           glib:type-name="DeeSharedModel"
           glib:get-type="dee_shared_model_get_type"
           glib:type-struct="SharedModelClass">
      <doc xml:space="preserve"
           filename="dee-shared-model.h"
           line="57">All fields in the DeeSharedModel structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-shared-model.h" line="88"/>
      <implements name="Model"/>
      <implements name="Serializable"/>
      <constructor name="new" c:identifier="dee_shared_model_new">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="1752">Create a new empty shared model without any column schema associated.
The column schema will be set in one of two ways: firstly you may set it
manually with dee_model_set_schema() or secondly it will be set once
the first rows are exchanged with a peer model.

A #DeeSharedModel with a schema manually set has to be created before
creating more #DeeSharedModel with the same @name.

A shared model created with this constructor will store row data in a
suitably picked memory backed model.</doc>
        <source-position filename="dee-shared-model.h" line="151"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-shared-model.c"
               line="1768">a new #DeeSharedModel</doc>
          <type name="SharedModel" c:type="DeeModel*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="1754">A well known name to publish this model under. Models sharing this name
       will synchronize with each other</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_for_peer"
                   c:identifier="dee_shared_model_new_for_peer">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="1783">Create a new empty shared model without any column schema associated.
The column schema will be set in one of two ways: firstly you may set it
manually with dee_model_set_schema() or secondly it will be set once
the first rows are exchanged with a peer model.

A #DeeSharedModel with a schema manually set has to be created before
creating more #DeeSharedModel with the same @name.

A shared model created with this constructor will store row data in a
suitably picked memory backed model.</doc>
        <source-position filename="dee-shared-model.h" line="153"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-shared-model.c"
               line="1798">a new #DeeSharedModel</doc>
          <type name="SharedModel" c:type="DeeModel*"/>
        </return-value>
        <parameters>
          <parameter name="peer" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="1785">A #DeePeer instance.</doc>
            <type name="Peer" c:type="DeePeer*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_back_end"
                   c:identifier="dee_shared_model_new_with_back_end">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="1821">Create a new shared model storing all data in @back_end.

The model will start synchronizing with peer models as soon as possible and
the #DeeSharedModel:synchronized property will be set once finished.</doc>
        <source-position filename="dee-shared-model.h" line="155"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-shared-model.c"
               line="1834">a new #DeeSharedModel</doc>
          <type name="SharedModel" c:type="DeeModel*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="1823">A well known name to publish this model under.
       Models sharing this name will synchronize with each other</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="back_end" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="1825">The #DeeModel that will actually store
           the model data. Ownership of the ref to @back_end is transfered to
           the shared model.</doc>
            <type name="Model" c:type="DeeModel*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="flush_revision_queue"
              c:identifier="dee_shared_model_flush_revision_queue">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="1978">Expert: All changes to @self that has not yet been propagated to the peer
models are send. If you also want to block the mainloop until
all the underlying transport streams have been flushed use
dee_shared_model_flush_revision_queue_sync().

Normally #DeeSharedModel collects changes to @self into batches and sends
them automatically to all peers. You can use this call to provide fine
grained control of exactly when changes to @self are synchronized to its
peers. This may for example be useful to improve the interactivity of your
application if you have a model-process which intermix small and light
changes with big and expensive changes. Using this call you can make sure
the model-process dispatches small changes more aggresively to the
view-process, while holding on to the expensive changes a bit longer.</doc>
        <source-position filename="dee-shared-model.h" line="167"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-shared-model.c"
               line="1996">The number of revisions flushed.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="1980">The shared model to flush the revision queue on</doc>
            <type name="SharedModel" c:type="DeeSharedModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="flush_revision_queue_sync"
              c:identifier="dee_shared_model_flush_revision_queue_sync">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="2006">Similar to dee_shared_model_flush_revision_queue(), but also blocks
the mainloop until all the underlying transport streams have been flushed.

&lt;emphasis&gt;Important&lt;/emphasis&gt;: This method &lt;emphasis&gt;may&lt;/emphasis&gt; flush
your internal queue of DBus messages forcing them to be send before this call
returns.</doc>
        <source-position filename="dee-shared-model.h" line="170"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-shared-model.c"
               line="2017">The number of revisions flushed.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="2008">The shared model to flush the revision queue on</doc>
            <type name="SharedModel" c:type="DeeSharedModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_flush_mode"
              c:identifier="dee_shared_model_get_flush_mode"
              glib:get-property="flush-mode">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="1898">Convenience function for accessing the #DeeSharedModel:flush-mode property.</doc>
        <source-position filename="dee-shared-model.h" line="176"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-shared-model.c"
               line="1904">The #DeeSharedModelFlushMode used by the model</doc>
          <type name="SharedModelFlushMode" c:type="DeeSharedModelFlushMode"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="1900">A #DeeSharedModel</doc>
            <type name="SharedModel" c:type="DeeSharedModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_peer"
              c:identifier="dee_shared_model_get_peer"
              glib:get-property="peer">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="1879">Convenience function for accessing the #DeeSharedModel:peer property</doc>
        <source-position filename="dee-shared-model.h" line="161"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-shared-model.c"
               line="1885">The #DeePeer used to interact with the peer models</doc>
          <type name="Peer" c:type="DeePeer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="1881">The model to get the #DeePeer for</doc>
            <type name="SharedModel" c:type="DeeSharedModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_swarm_name"
              c:identifier="dee_shared_model_get_swarm_name">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="1859">Convenience function for accessing the #DeePeer:swarm-name property of the
#DeePeer defined in the #DeeSharedModel:peer property.</doc>
        <source-position filename="dee-shared-model.h" line="159"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-shared-model.c"
               line="1866">The name of the swarm this model synchrnonizes with</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="1861">The model to get the name for</doc>
            <type name="SharedModel" c:type="DeeSharedModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_leader" c:identifier="dee_shared_model_is_leader">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="1931">Check if the model is the swarm leader. This is a convenience function for
accessing the #DeeSharedModel:peer property and checking if it's the swarm
leader.</doc>
        <source-position filename="dee-shared-model.h" line="163"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-shared-model.c"
               line="1939">The value of dee_peer_is_swarm_leader() for the #DeePeer used by
         this shared model</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="1933">The model to inspect</doc>
            <type name="SharedModel" c:type="DeeSharedModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_synchronized"
              c:identifier="dee_shared_model_is_synchronized"
              glib:get-property="synchronized">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="1953">Check if the model is synchronized with its peers. Before modifying a
shared model in any way (except dee_model_set_schema()) you should wait for
it to become synchronized. This is normally done by waiting for the
&amp;quot;notify::synchronized&amp;quot; signal.

This method is purely a convenience function for accessing the
#DeeSharedModel:synchronized property.</doc>
        <source-position filename="dee-shared-model.h" line="165"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-shared-model.c"
               line="1965">The value of the :synchronized property</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="1955">The model to inspect</doc>
            <type name="SharedModel" c:type="DeeSharedModel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_flush_mode"
              c:identifier="dee_shared_model_set_flush_mode"
              glib:set-property="flush-mode">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="1915">Convenience function for setting the #DeeSharedModel:flush-mode property.</doc>
        <source-position filename="dee-shared-model.h" line="173"/>
        <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="dee-shared-model.c"
                 line="1917">A #DeeSharedModel</doc>
            <type name="SharedModel" c:type="DeeSharedModel*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="1918">Flush mode to use</doc>
            <type name="SharedModelFlushMode"
                  c:type="DeeSharedModelFlushMode"/>
          </parameter>
        </parameters>
      </method>
      <property name="access-mode"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="DEE_SHARED_MODEL_ACCESS_MODE_WORLD_WRITABLE">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="733">Enumeration defining behavior of this model when trying to write to it.

Setting this to #DEE_SHARED_MODEL_ACCESS_MODE_LEADER_WRITABLE is useful
when one process is considered an "owner" of a model and all the other
peers are supposed to only synchronize it for reading.

See also DeePeer:swarm-owner property to ensure ownership of a swarm.</doc>
        <type name="SharedModelAccessMode"/>
      </property>
      <property name="flush-mode"
                writable="1"
                transfer-ownership="none"
                setter="set_flush_mode"
                getter="get_flush_mode"
                default-value="DEE_SHARED_MODEL_FLUSH_MODE_AUTOMATIC">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="752">Enumeration defining the flushing behavior.

Setting this to #DEE_SHARED_MODEL_FLUSH_MODE_MANUAL will disable
automatic flushing that usually happens when the application's main event
loop is idle. Automatic flushing should be primarily disabled when
a shared model is used from multiple threads, or when not using #GMainLoop.
When disabled, dee_shared_model_flush_revision_queue() needs to be called
explicitely.</doc>
        <type name="SharedModelFlushMode"/>
      </property>
      <property name="peer"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_peer">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="705">The #DeePeer that this model uses to connect to the swarm</doc>
        <type name="Peer"/>
      </property>
      <property name="synchronized"
                transfer-ownership="none"
                getter="is_synchronized"
                default-value="FALSE">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="717">Boolean property defining whether or not the model has synchronized with
its peers (if any) yet.

You should not modify a #DeeSharedModel that is not synchronized. Before
modifying the model in any way (except calling dee_model_set_schema())
you should wait for it to become synchronized.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="ProxyModel" c:type="DeeProxyModel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SharedModelPrivate" c:type="DeeSharedModelPrivate*"/>
      </field>
      <glib:signal name="begin-transaction" when="last">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="771">Emitted right before a remote transaction will be committed to the model.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="begin_seqnum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="774">The seqnum the model has now</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="end_seqnum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="775">The seqnum the model will have after the transaction is applied</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="end-transaction" when="last">
        <doc xml:space="preserve"
             filename="dee-shared-model.c"
             line="789">Emitted right after a remote transaction has been committed to the model.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="begin_seqnum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="792">The seqnum the model had before the transaction was applied</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
          <parameter name="end_seqnum" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-shared-model.c"
                 line="793">The seqnum the model has now</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <enumeration name="SharedModelAccessMode"
                 glib:type-name="DeeSharedModelAccessMode"
                 glib:get-type="dee_shared_model_access_mode_get_type"
                 c:type="DeeSharedModelAccessMode">
      <doc xml:space="preserve"
           filename="dee-shared-model.h"
           line="98">Enumeration defining behavior of the model with regards to writes from
other peers in the swarm.</doc>
      <member name="world_writable"
              value="0"
              c:identifier="DEE_SHARED_MODEL_ACCESS_MODE_WORLD_WRITABLE"
              glib:nick="world-writable"
              glib:name="DEE_SHARED_MODEL_ACCESS_MODE_WORLD_WRITABLE">
      </member>
      <member name="leader_writable"
              value="1"
              c:identifier="DEE_SHARED_MODEL_ACCESS_MODE_LEADER_WRITABLE"
              glib:nick="leader-writable"
              glib:name="DEE_SHARED_MODEL_ACCESS_MODE_LEADER_WRITABLE">
      </member>
    </enumeration>
    <record name="SharedModelClass"
            c:type="DeeSharedModelClass"
            glib:is-gtype-struct-for="SharedModel">
      <source-position filename="dee-shared-model.h" line="88"/>
      <field name="parent_class" readable="0" private="1">
        <type name="ProxyModelClass" c:type="DeeProxyModelClass"/>
      </field>
      <field name="_dee_shared_model_1" introspectable="0">
        <callback name="_dee_shared_model_1">
          <source-position filename="dee-shared-model.h" line="84"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_shared_model_2" introspectable="0">
        <callback name="_dee_shared_model_2">
          <source-position filename="dee-shared-model.h" line="85"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_shared_model_3" introspectable="0">
        <callback name="_dee_shared_model_3">
          <source-position filename="dee-shared-model.h" line="86"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_shared_model_4" introspectable="0">
        <callback name="_dee_shared_model_4">
          <source-position filename="dee-shared-model.h" line="87"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <enumeration name="SharedModelError" c:type="DeeSharedModelError">
      <source-position filename="dee-shared-model.h" line="93"/>
      <member name="shared_model_error_leader_invalidated"
              value="0"
              c:identifier="DEE_SHARED_MODEL_ERROR_LEADER_INVALIDATED">
      </member>
    </enumeration>
    <enumeration name="SharedModelFlushMode"
                 glib:type-name="DeeSharedModelFlushMode"
                 glib:get-type="dee_shared_model_flush_mode_get_type"
                 c:type="DeeSharedModelFlushMode">
      <doc xml:space="preserve"
           filename="dee-shared-model.h"
           line="122">Enumeration defining flushing behavior of a shared model.</doc>
      <member name="automatic"
              value="0"
              c:identifier="DEE_SHARED_MODEL_FLUSH_MODE_AUTOMATIC"
              glib:nick="automatic"
              glib:name="DEE_SHARED_MODEL_FLUSH_MODE_AUTOMATIC">
      </member>
      <member name="manual"
              value="1"
              c:identifier="DEE_SHARED_MODEL_FLUSH_MODE_MANUAL"
              glib:nick="manual"
              glib:name="DEE_SHARED_MODEL_FLUSH_MODE_MANUAL">
      </member>
    </enumeration>
    <record name="SharedModelPrivate"
            c:type="DeeSharedModelPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-shared-model.c"
           line="69">Ignore this structure.</doc>
      <source-position filename="dee-shared-model.h" line="55"/>
    </record>
    <function-macro name="TERM_LIST"
                    c:identifier="DEE_TERM_LIST"
                    introspectable="0">
      <source-position filename="dee-term-list.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TERM_LIST_CLASS"
                    c:identifier="DEE_TERM_LIST_CLASS"
                    introspectable="0">
      <source-position filename="dee-term-list.h" line="37"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TERM_LIST_GET_CLASS"
                    c:identifier="DEE_TERM_LIST_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-term-list.h" line="46"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TEXT_ANALYZER"
                    c:identifier="DEE_TEXT_ANALYZER"
                    introspectable="0">
      <source-position filename="dee-text-analyzer.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TEXT_ANALYZER_CLASS"
                    c:identifier="DEE_TEXT_ANALYZER_CLASS"
                    introspectable="0">
      <source-position filename="dee-text-analyzer.h" line="41"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TEXT_ANALYZER_GET_CLASS"
                    c:identifier="DEE_TEXT_ANALYZER_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-text-analyzer.h" line="50"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TRANSACTION"
                    c:identifier="DEE_TRANSACTION"
                    introspectable="0">
      <source-position filename="dee-transaction.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TRANSACTION_CLASS"
                    c:identifier="DEE_TRANSACTION_CLASS"
                    introspectable="0">
      <source-position filename="dee-transaction.h" line="40"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TRANSACTION_GET_CLASS"
                    c:identifier="DEE_TRANSACTION_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-transaction.h" line="49"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TREE_INDEX"
                    c:identifier="DEE_TREE_INDEX"
                    introspectable="0">
      <source-position filename="dee-tree-index.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TREE_INDEX_CLASS"
                    c:identifier="DEE_TREE_INDEX_CLASS"
                    introspectable="0">
      <source-position filename="dee-tree-index.h" line="40"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TREE_INDEX_GET_CLASS"
                    c:identifier="DEE_TREE_INDEX_GET_CLASS"
                    introspectable="0">
      <source-position filename="dee-tree-index.h" line="49"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <callback name="TermFilterFunc" c:type="DeeTermFilterFunc">
      <doc xml:space="preserve"
           filename="dee-analyzer.h"
           line="70">A term filter takes a list of terms and runs it through a filtering and/or
set of transformations and stores the output in a #DeeTermList.

You can register term filters on a #DeeAnalyzer with
dee_analyzer_add_term_filter().</doc>
      <source-position filename="dee-analyzer.h" line="84"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="terms_in" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-analyzer.h"
               line="72">A #DeeTermList with the terms to filter</doc>
          <type name="TermList" c:type="DeeTermList*"/>
        </parameter>
        <parameter name="terms_out" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-analyzer.h"
               line="73">A #DeeTermList to write the filtered terms to</doc>
          <type name="TermList" c:type="DeeTermList*"/>
        </parameter>
        <parameter name="filter_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <doc xml:space="preserve"
               filename="dee-analyzer.h"
               line="74">User data set when registering the filter</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="TermList"
           c:symbol-prefix="term_list"
           c:type="DeeTermList"
           parent="GObject.Object"
           glib:type-name="DeeTermList"
           glib:get-type="dee_term_list_get_type"
           glib:type-struct="TermListClass">
      <doc xml:space="preserve"
           filename="dee-term-list.h"
           line="53">All fields in the DeeTermList structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-term-list.h" line="90"/>
      <virtual-method name="add_term" invoker="add_term">
        <doc xml:space="preserve"
             filename="dee-term-list.c"
             line="198">Add a term to the termlist. Note that it is possible to add a term multiple
times. The effect of this is determined by the #DeeModelIndex consuming the
#DeeTermList.</doc>
        <source-position filename="dee-term-list.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-term-list.c"
               line="207">Always returns @self</doc>
          <type name="TermList" c:type="DeeTermList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="200">The term list to add a term to</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </instance-parameter>
          <parameter name="term" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="201">The term to add</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="clear" invoker="clear">
        <doc xml:space="preserve"
             filename="dee-term-list.c"
             line="241">Remove all terms from a term list making it ready for reuse. Note that
term list implementations will often have optimized memory allocation
schemes so reuse is often more efficient than allocating a new term list
each time you need it.</doc>
        <source-position filename="dee-term-list.h" line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-term-list.c"
               line="250">Always returns @self</doc>
          <type name="TermList" c:type="DeeTermList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="243">The term list to clear</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="clone" invoker="clone">
        <doc xml:space="preserve"
             filename="dee-term-list.c"
             line="264">Create a copy of @self that shares the underlying string pool and containing
a list of terms as currently set in @self.

Subsequently freeing the original and keeping the clone around is not a
problem. The clone works as a standalone term list. The only gotcha may be
threading issues because of concurrent access to the shared string pool.

Creating a clone very efficient since only very little memory allocation
is required. It's advised that you use a clone instead a new instance
whenever you work over a common corpus of strings.

It is also worth noting that terms obtained from the original term list
and a clone can be compared directly as pointers (fx. with g_direct_equal()).
This is because they share the underlying string pool.</doc>
        <source-position filename="dee-term-list.h" line="82"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-term-list.c"
               line="283">A newly allocated term list.
                          Free with g_object_unref().</doc>
          <type name="TermList" c:type="DeeTermList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="266">The term list to clone</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_term" invoker="get_term">
        <doc xml:space="preserve"
             filename="dee-term-list.c"
             line="173">Get the n'th term in the list.

Note that in the default implementation it is guaranteed that the returned
string is valid for the entire lifetime of the #DeeTermList.</doc>
        <source-position filename="dee-term-list.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-term-list.c"
               line="183">The @n&lt;!-- --&gt;th string held in the term list</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="175">The term list to get the @n&lt;!-- --&gt;th term from</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="176">The (zero based) offset into the term list</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="num_terms" invoker="num_terms">
        <source-position filename="dee-term-list.h" line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-term-list.c"
               line="227">The number of terms in the term list</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="225">The term list to check the number of terms in</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="add_term" c:identifier="dee_term_list_add_term">
        <doc xml:space="preserve"
             filename="dee-term-list.c"
             line="198">Add a term to the termlist. Note that it is possible to add a term multiple
times. The effect of this is determined by the #DeeModelIndex consuming the
#DeeTermList.</doc>
        <source-position filename="dee-term-list.h" line="97"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-term-list.c"
               line="207">Always returns @self</doc>
          <type name="TermList" c:type="DeeTermList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="200">The term list to add a term to</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </instance-parameter>
          <parameter name="term" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="201">The term to add</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear" c:identifier="dee_term_list_clear">
        <doc xml:space="preserve"
             filename="dee-term-list.c"
             line="241">Remove all terms from a term list making it ready for reuse. Note that
term list implementations will often have optimized memory allocation
schemes so reuse is often more efficient than allocating a new term list
each time you need it.</doc>
        <source-position filename="dee-term-list.h" line="102"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-term-list.c"
               line="250">Always returns @self</doc>
          <type name="TermList" c:type="DeeTermList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="243">The term list to clear</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="clone" c:identifier="dee_term_list_clone">
        <doc xml:space="preserve"
             filename="dee-term-list.c"
             line="264">Create a copy of @self that shares the underlying string pool and containing
a list of terms as currently set in @self.

Subsequently freeing the original and keeping the clone around is not a
problem. The clone works as a standalone term list. The only gotcha may be
threading issues because of concurrent access to the shared string pool.

Creating a clone very efficient since only very little memory allocation
is required. It's advised that you use a clone instead a new instance
whenever you work over a common corpus of strings.

It is also worth noting that terms obtained from the original term list
and a clone can be compared directly as pointers (fx. with g_direct_equal()).
This is because they share the underlying string pool.</doc>
        <source-position filename="dee-term-list.h" line="104"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-term-list.c"
               line="283">A newly allocated term list.
                          Free with g_object_unref().</doc>
          <type name="TermList" c:type="DeeTermList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="266">The term list to clone</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_term" c:identifier="dee_term_list_get_term">
        <doc xml:space="preserve"
             filename="dee-term-list.c"
             line="173">Get the n'th term in the list.

Note that in the default implementation it is guaranteed that the returned
string is valid for the entire lifetime of the #DeeTermList.</doc>
        <source-position filename="dee-term-list.h" line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-term-list.c"
               line="183">The @n&lt;!-- --&gt;th string held in the term list</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="175">The term list to get the @n&lt;!-- --&gt;th term from</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </instance-parameter>
          <parameter name="n" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="176">The (zero based) offset into the term list</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="num_terms" c:identifier="dee_term_list_num_terms">
        <source-position filename="dee-term-list.h" line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-term-list.c"
               line="227">The number of terms in the term list</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="225">The term list to check the number of terms in</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="TermListPrivate" c:type="DeeTermListPrivate*"/>
      </field>
    </class>
    <record name="TermListClass"
            c:type="DeeTermListClass"
            glib:is-gtype-struct-for="TermList">
      <source-position filename="dee-term-list.h" line="90"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_term">
        <callback name="get_term">
          <source-position filename="dee-term-list.h" line="72"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="183">The @n&lt;!-- --&gt;th string held in the term list</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-term-list.c"
                   line="175">The term list to get the @n&lt;!-- --&gt;th term from</doc>
              <type name="TermList" c:type="DeeTermList*"/>
            </parameter>
            <parameter name="n" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-term-list.c"
                   line="176">The (zero based) offset into the term list</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="add_term">
        <callback name="add_term">
          <source-position filename="dee-term-list.h" line="75"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="207">Always returns @self</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-term-list.c"
                   line="200">The term list to add a term to</doc>
              <type name="TermList" c:type="DeeTermList*"/>
            </parameter>
            <parameter name="term" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-term-list.c"
                   line="201">The term to add</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="num_terms">
        <callback name="num_terms">
          <source-position filename="dee-term-list.h" line="78"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="227">The number of terms in the term list</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-term-list.c"
                   line="225">The term list to check the number of terms in</doc>
              <type name="TermList" c:type="DeeTermList*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="clear">
        <callback name="clear">
          <source-position filename="dee-term-list.h" line="80"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="250">Always returns @self</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-term-list.c"
                   line="243">The term list to clear</doc>
              <type name="TermList" c:type="DeeTermList*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="clone">
        <callback name="clone">
          <source-position filename="dee-term-list.h" line="82"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="dee-term-list.c"
                 line="283">A newly allocated term list.
                          Free with g_object_unref().</doc>
            <type name="TermList" c:type="DeeTermList*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="dee-term-list.c"
                   line="266">The term list to clone</doc>
              <type name="TermList" c:type="DeeTermList*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_dee_term_list_1" introspectable="0">
        <callback name="_dee_term_list_1">
          <source-position filename="dee-term-list.h" line="85"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_term_list_2" introspectable="0">
        <callback name="_dee_term_list_2">
          <source-position filename="dee-term-list.h" line="86"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_term_list_3" introspectable="0">
        <callback name="_dee_term_list_3">
          <source-position filename="dee-term-list.h" line="87"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_term_list_4" introspectable="0">
        <callback name="_dee_term_list_4">
          <source-position filename="dee-term-list.h" line="88"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="TermListPrivate"
            c:type="DeeTermListPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-term-list.c"
           line="65">Ignore this structure.</doc>
      <source-position filename="dee-term-list.h" line="51"/>
    </record>
    <bitfield name="TermMatchFlag" c:type="DeeTermMatchFlag">
      <doc xml:space="preserve"
           filename="dee-index.h"
           line="79">Flags passed to dee_index_lookup() to control how matching is done.
Note that it is not required that index backends support more than just
#DEE_TERM_MATCH_EXACT.

You can query for the supported flags with
dee_index_get_supported_term_match_flags().</doc>
      <source-position filename="dee-index.h" line="98"/>
      <member name="exact" value="1" c:identifier="DEE_TERM_MATCH_EXACT">
        <doc xml:space="preserve"
             filename="dee-index.h"
             line="81">Match terms byte for byte as specified in the
                       query string</doc>
      </member>
      <member name="prefix" value="2" c:identifier="DEE_TERM_MATCH_PREFIX">
        <doc xml:space="preserve"
             filename="dee-index.h"
             line="83">Match if the indexed term begins with the byte string
                        being queried by. This is also sometimes known as
                        truncated- or wildcard queries</doc>
      </member>
    </bitfield>
    <class name="TextAnalyzer"
           c:symbol-prefix="text_analyzer"
           c:type="DeeTextAnalyzer"
           parent="Analyzer"
           glib:type-name="DeeTextAnalyzer"
           glib:get-type="dee_text_analyzer_get_type"
           glib:type-struct="TextAnalyzerClass">
      <doc xml:space="preserve"
           filename="dee-text-analyzer.h"
           line="57">All fields in the DeeTextAnalyzer structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-text-analyzer.h" line="75"/>
      <constructor name="new" c:identifier="dee_text_analyzer_new">
        <source-position filename="dee-text-analyzer.h" line="86"/>
        <return-value transfer-ownership="full">
          <type name="TextAnalyzer" c:type="DeeTextAnalyzer*"/>
        </return-value>
      </constructor>
      <field name="parent" readable="0" private="1">
        <type name="Analyzer" c:type="DeeAnalyzer"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="TextAnalyzerPrivate" c:type="DeeTextAnalyzerPrivate*"/>
      </field>
    </class>
    <record name="TextAnalyzerClass"
            c:type="DeeTextAnalyzerClass"
            glib:is-gtype-struct-for="TextAnalyzer">
      <source-position filename="dee-text-analyzer.h" line="75"/>
      <field name="parent_class" readable="0" private="1">
        <type name="AnalyzerClass" c:type="DeeAnalyzerClass"/>
      </field>
    </record>
    <record name="TextAnalyzerPrivate"
            c:type="DeeTextAnalyzerPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="dee-text-analyzer.h" line="55"/>
    </record>
    <class name="Transaction"
           c:symbol-prefix="transaction"
           c:type="DeeTransaction"
           parent="SerializableModel"
           glib:type-name="DeeTransaction"
           glib:get-type="dee_transaction_get_type"
           glib:type-struct="TransactionClass">
      <doc xml:space="preserve"
           filename="dee-transaction.h"
           line="56">All fields in the DeeTransaction structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-transaction.h" line="80"/>
      <implements name="Model"/>
      <implements name="Serializable"/>
      <constructor name="new" c:identifier="dee_transaction_new">
        <source-position filename="dee-transaction.h" line="116"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-transaction.c"
               line="1409">
    A newly allocated #DeeTransaction. Free with g_object_unref() when
    done using it - no matter if you call dee_transaction_commit() or not.</doc>
          <type name="Transaction" c:type="DeeModel*"/>
        </return-value>
        <parameters>
          <parameter name="target" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-transaction.c"
                 line="1407">The #DeeModel the transaction applies against</doc>
            <type name="Model" c:type="DeeModel*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="error_quark" c:identifier="dee_transaction_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <method name="commit" c:identifier="dee_transaction_commit" throws="1">
        <doc xml:space="preserve"
             filename="dee-transaction.c"
             line="1472">Apply a transaction to its target model. After this call the transaction
is invalidated and must be freed with g_object_unref().</doc>
        <source-position filename="dee-transaction.h" line="122"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-transaction.c"
               line="1481">%TRUE if and only if the transaction successfully applies to :target.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-transaction.c"
                 line="1474">The transaction to commit</doc>
            <type name="Transaction" c:type="DeeTransaction*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_target"
              c:identifier="dee_transaction_get_target"
              glib:get-property="target">
        <doc xml:space="preserve"
             filename="dee-transaction.c"
             line="1423">Get the target model of a transaction. This is just a convenience method
for accessing the :target property.</doc>
        <source-position filename="dee-transaction.h" line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-transaction.c"
               line="1430">The target model</doc>
          <type name="Model" c:type="DeeModel*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-transaction.c"
                 line="1425">The transaction to retrieve the target model for</doc>
            <type name="Transaction" c:type="DeeTransaction*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_committed" c:identifier="dee_transaction_is_committed">
        <doc xml:space="preserve"
             filename="dee-transaction.c"
             line="1440">Check if a #DeeTransaction has been committed. This method is mainly for
debugging and testing purposes.</doc>
        <source-position filename="dee-transaction.h" line="120"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-transaction.c"
               line="1447">%TRUE if and only if dee_transaction_commit() has completed
         successfully on the transaction.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-transaction.c"
                 line="1442">The transaction to inspect</doc>
            <type name="Transaction" c:type="DeeTransaction*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="target"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_target">
        <type name="Model"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="SerializableModel" c:type="DeeSerializableModel"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="TransactionPrivate" c:type="DeeTransactionPrivate*"/>
      </field>
    </class>
    <record name="TransactionClass"
            c:type="DeeTransactionClass"
            glib:is-gtype-struct-for="Transaction">
      <source-position filename="dee-transaction.h" line="80"/>
      <field name="parent_class" readable="0" private="1">
        <type name="SerializableModelClass"
              c:type="DeeSerializableModelClass"/>
      </field>
      <field name="_dee_transaction_1" introspectable="0">
        <callback name="_dee_transaction_1">
          <source-position filename="dee-transaction.h" line="76"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_transaction_2" introspectable="0">
        <callback name="_dee_transaction_2">
          <source-position filename="dee-transaction.h" line="77"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_transaction_3" introspectable="0">
        <callback name="_dee_transaction_3">
          <source-position filename="dee-transaction.h" line="78"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_dee_transaction_4" introspectable="0">
        <callback name="_dee_transaction_4">
          <source-position filename="dee-transaction.h" line="79"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <enumeration name="TransactionError" c:type="DeeTransactionError">
      <doc xml:space="preserve"
           filename="dee-transaction.h"
           line="90">Error codes for the #DeeTransaction class. These codes will be set when the
error domain is #DEE_TRANSACTION_ERROR.</doc>
      <source-position filename="dee-transaction.h" line="105"/>
      <member name="concurrent_modification"
              value="1"
              c:identifier="DEE_TRANSACTION_ERROR_CONCURRENT_MODIFICATION">
        <doc xml:space="preserve"
             filename="dee-transaction.h"
             line="96">The target model has been
  modified while the transaction was open.</doc>
      </member>
      <member name="committed"
              value="2"
              c:identifier="DEE_TRANSACTION_ERROR_COMMITTED">
        <doc xml:space="preserve"
             filename="dee-transaction.h"
             line="99">Raised when someone tries to commit a
  transaction that has already been committed</doc>
      </member>
    </enumeration>
    <record name="TransactionPrivate"
            c:type="DeeTransactionPrivate"
            disguised="1"
            opaque="1">
      <doc xml:space="preserve"
           filename="dee-transaction.c"
           line="155">Ignore this structure.</doc>
      <source-position filename="dee-transaction.h" line="54"/>
    </record>
    <class name="TreeIndex"
           c:symbol-prefix="tree_index"
           c:type="DeeTreeIndex"
           parent="Index"
           glib:type-name="DeeTreeIndex"
           glib:get-type="dee_tree_index_get_type"
           glib:type-struct="TreeIndexClass">
      <doc xml:space="preserve"
           filename="dee-tree-index.h"
           line="56">All fields in the DeeTreeIndex structure are private and should never be
accessed directly</doc>
      <source-position filename="dee-tree-index.h" line="73"/>
      <constructor name="new" c:identifier="dee_tree_index_new">
        <doc xml:space="preserve"
             filename="dee-tree-index.c"
             line="732">Create a new tree index.</doc>
        <source-position filename="dee-tree-index.h" line="77"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="dee-tree-index.c"
               line="741">A newly allocated tree index. Free with g_object_unref().</doc>
          <type name="TreeIndex" c:type="DeeTreeIndex*"/>
        </return-value>
        <parameters>
          <parameter name="model" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-tree-index.c"
                 line="734">The model to index</doc>
            <type name="Model" c:type="DeeModel*"/>
          </parameter>
          <parameter name="analyzer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-tree-index.c"
                 line="735">The #DeeAnalyzer used to tokenize and filter the terms extracted
           by @reader</doc>
            <type name="Analyzer" c:type="DeeAnalyzer*"/>
          </parameter>
          <parameter name="reader" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="dee-tree-index.c"
                 line="737">The #DeeModelReader used to extract terms from the model</doc>
            <type name="ModelReader" c:type="DeeModelReader*"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent" readable="0" private="1">
        <type name="Index" c:type="DeeIndex"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="TreeIndexPrivate" c:type="DeeTreeIndexPrivate*"/>
      </field>
    </class>
    <record name="TreeIndexClass"
            c:type="DeeTreeIndexClass"
            glib:is-gtype-struct-for="TreeIndex">
      <source-position filename="dee-tree-index.h" line="73"/>
      <field name="parent_class">
        <type name="IndexClass" c:type="DeeIndexClass"/>
      </field>
    </record>
    <record name="TreeIndexPrivate"
            c:type="DeeTreeIndexPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="dee-tree-index.h" line="54"/>
    </record>
    <docsection name="dee-analyzer">
      <doc xml:space="preserve"
           filename="dee-analyzer.c"
           line="21">A #DeeAnalyzer takes a text stream, splits it into tokens, and runs the
tokens through a series of filtering steps. Optionally outputs collation
keys for the terms.

One of the important use cases of analyzers in Dee is as vessel for the
indexing logic for creating a #DeeIndex from a #DeeModel.

The recommended way to implement your own custom analyzers are by either
adding term filters to a #DeeAnalyzer or #DeeTextAnalyzer instance with
dee_analyzer_add_term_filter() and/or
derive your own subclass that overrides the dee_analyzer_tokenize() method.
Should you have very special requirements it is possible to reimplement
all aspects of the analyzer class though.</doc>
    </docsection>
    <docsection name="dee-client">
      <doc xml:space="preserve"
           filename="dee-client.c"
           line="20">#DeeClient is the endpoint for connecting to #DeeServer.</doc>
    </docsection>
    <docsection name="dee-file-resource-manager">
      <doc xml:space="preserve"
           filename="dee-file-resource-manager.c"
           line="21">This is an implementation of the #DeeResourceManager interface.
It uses atomic operations to write resources to files and memory maps
the resource files when you load them.

Unless you have very specific circumstances you should normally not
create resource managers yourself, but get the default one for your
platform by calling dee_resource_manager_get_default().</doc>
    </docsection>
    <docsection name="dee-filter">
      <doc xml:space="preserve"
           filename="dee-filter.c"
           line="21">#DeeFilter&lt;!-- --&gt;s are used together with #DeeFilterModel&lt;!-- --&gt;s to build
"views" of some original #DeeModel. An example could be to build a view
of a model that exposes the rows of the original model sorted by a given
column (leaving the original model unaltered):
|[
  DeeModel  *model, *view;
  DeeFilter *collator;

  // Create and populate a model with some unsorted rows
  model = dee_sequence_model_new ();
  dee_model_set_schema (model, "i", "s", NULL);
  dee_model_append (model, 27, "Foo");
  dee_model_append (model, 68, "Bar");

  // Create a collator for column 1
  collator = dee_filter_new_collator (1);

  // Create the sorted view
  view = dee_filter_model_new (collator, model);
  g_free (collator);

  // When accessing the view the row with 'Bar' will be first
]|</doc>
    </docsection>
    <docsection name="dee-filter-model">
      <doc xml:space="preserve"
           filename="dee-filter-model.c"
           line="21">A #DeeFilterModel should be regarded as a view on a specific subset of
of another #DeeModel, filtered according to a given "filtering rule".

Filter models re-use the #DeeModelIter&lt;!-- --&gt;s of the back end model they
filter. This means that any iter from the filter model can be used directly
on the back end model. This is a powerful invariant, but implies the
restriction that a row in the filter model contains the exact same data
as the corresponding row in the back end model (ie. you can not apply
a "transfomation map" to the filtered data).

The reuse of row iters also minimizes the amount of memory shuffling needed
to set up a filter model. The filtering functions, #DeeFilterMapFunc and
#DeeFilterMapNotify, has also been designed to minimize the amount of work
done to create a filter model. So if the filter functions are written
optimally the resulting filter models should be cheap to construct.

Another important feature of the filter model is also that the rows
need not be in the same order as the original rows in the back end model.

There is a suite of filters shipped with Dee which you can browse in the
&lt;link linkend="dee-1.0-Filters.top_of_page"&gt;Filters section&lt;/link&gt;.</doc>
    </docsection>
    <docsection name="dee-glist-result-set">
      <doc xml:space="preserve"
           filename="dee-glist-result-set.c"
           line="21">GList implementation of a #DeeResultSet on top of a #GList</doc>
    </docsection>
    <docsection name="dee-hash-index">
      <doc xml:space="preserve"
           filename="dee-hash-index.c"
           line="21">#DeeHashIndex is an implementation of #DeeHashIndex which is backed
by a hashmap. This means that it only supports the #DEE_TERM_MATCH_EXACT
flag in dee_hash_index_lookup().</doc>
    </docsection>
    <docsection name="dee-icu">
      <doc xml:space="preserve"
           filename="dee-icu-term-filter.c"
           line="32">This module allows developers to easily construct powerful
#DeeTermFilter&lt;!-- --&gt;s with ease. The filters leverage the ICU
framework to provide world class transliteration features.

The filters can be employed manually by calling dee_icu_term_filter_apply()
or installed in a #DeeAnalyzer by calling dee_analyzer_add_term_filter()
passing the term filter instance as the user data and
dee_icu_term_filter_destroy() as the #GDestroyNotify.</doc>
    </docsection>
    <docsection name="dee-index">
      <doc xml:space="preserve"
           filename="dee-index.c"
           line="21">#DeeIndex is an interface for doing key based access to a #DeeModel.
A key in the index is known as a &lt;emphasis&gt;term&lt;/emphasis&gt; and each term is
mapped to a set of matching #DeeModelIter&lt;!-- --&gt;s.

The terms are calculated by means of a #DeeAnalyzer which extracts a set of
terms from a given row in the model adding these terms to a #DeeTermList.
There is a suite of analyzers shipped with Dee, which you can browse in the
&lt;link linkend="dee-1.0-Analyzers.top_of_page"&gt;Analyzers section&lt;/link&gt;.</doc>
    </docsection>
    <docsection name="dee-model">
      <doc xml:space="preserve"
           filename="dee-model.c"
           line="26">#DeeModel is a generic table model that can holds #GVariant&lt;!-- --&gt;s as
column values. Each column is restricted to hold variants with some
predefined type signature. This is known as the
&lt;emphasis&gt;column schema&lt;/emphasis&gt;.

&lt;refsect2 id="dee-1.0-DeeModel.on_indexes"&gt;
&lt;title&gt;Indexes - Access by Key or Full Text Analysis&lt;/title&gt;
&lt;para&gt;
Instead of forcing you to search the rows and columns for given values
or patterns #DeeModel is integrated with a powerful #DeeIndex that allows
you to create custom indexes over the model content that are updated
automatically as the model changes.
&lt;/para&gt;
&lt;para&gt;
Indexes can be created for integer keys, string keys (fx. URIs), or for
full text search into the model contents. The indexing API is flexible
and extensible and can provide huge optimizations in terms of access times
if you find yourself iterating over the model searching for something.
&lt;/para&gt;
&lt;/refsect2&gt;

&lt;refsect2 id="dee-1.0-DeeModel.on_sorting"&gt;
&lt;title&gt;Sorting&lt;/title&gt;
&lt;para&gt;
As a simpler alternative to using indexes you can rely on sorted models.
This is done by using the dee_model_insert_sorted() and
dee_model_find_sorted() family of APIs. Some model classes have
accelerated implementations of sorted inserts and lookups.
Notably #DeeSequenceModel.
&lt;/para&gt;
&lt;/refsect2&gt;

&lt;refsect2 id="dee-1.0-DeeModel.on_tags"&gt;
&lt;title&gt;Tags - Attach Arbitrary Data to Rows&lt;/title&gt;
&lt;para&gt;
It's a very common pattern that you want to render a #DeeModel into some
view in a classinc MVC pattern. If the view needs to reflect changes in the
model dynamically you often find yourself creating ad-hoc mappings between
the rows of the model and the widgets in your view.
&lt;/para&gt;
&lt;para&gt;
In situations where you need to pair the rows in a model with some external
data structure the &lt;emphasis&gt;tags API&lt;/emphasis&gt; may come in handy.
It consists of the functions dee_model_register_tag(), dee_model_set_tag(),
dee_model_get_tag(), and dee_model_clear_tag().
&lt;/para&gt;
&lt;/refsect2&gt;</doc>
    </docsection>
    <docsection name="dee-model-reader">
      <doc xml:space="preserve"
           filename="dee-model-reader.c"
           line="21">The purpose of a #DeeModelReader is to extract string from a #DeeModel.
These strings are usually passed through a #DeeAnalyzer on into a #DeeIndex.

Most readers will extract a value of a given type from a given column,
but it must be noted that this is not a requirement. The strings may be
built from several columns.</doc>
    </docsection>
    <docsection name="dee-peer">
      <doc xml:space="preserve"
           filename="dee-peer.c"
           line="22">#DeePeer allows you to build objects that can rendevouz on DBus
without the need for an central registration service. Think of it like
peer-to-peer for your application. The DBus session bus will also implicitly
elect a swarm leader - namely the one owning the swarm name on the bus, but
it's up to the consumer of this API to determine whether swarm leadership has
any concrete responsibilities associated.

Peers find eachother through a well-known "swarm-name", which is a
well known DBus name, such as: org.myapp.MyPeers. Choose a namespaced
name that would not normally be used outside of your program.

For example:
&lt;informalexample&gt;&lt;programlisting&gt;
{
  DeePeer *peer;

  peer = g_object_new (DBUS_TYPE_PEER,
                       "swarm-name", "org.myapp.MyPeers",
                       NULL);

  g_signal_connect (peer, "peer-found",
                    G_CALLBACK (on_peer_found), NULL);
  g_signal_connect (peer, "peer-lost",
                    G_CALLBACK (on_peer_lost), NULL);
}
&lt;/programlisting&gt;&lt;/informalexample&gt;</doc>
    </docsection>
    <docsection name="dee-proxy-model">
      <doc xml:space="preserve"
           filename="dee-proxy-model.c"
           line="21">#DeeProxyModel wraps another #DeeModel instance and use it as a back end
by proxuing all method calls down to the back end.</doc>
    </docsection>
    <docsection name="dee-resource-manager">
      <doc xml:space="preserve"
           filename="dee-resource-manager.c"
           line="21">The #DeeResourceManager API provides a simple API for storing and loading
DeeSerializable&lt;!-- --&gt;s from some persistent storage. The resources
are stored in a flat structure identified by names that should be chosen
similarly to DBus names. That is reverse domain names ala
net.launchpad.Example.MyData.</doc>
    </docsection>
    <docsection name="dee-result-set">
      <doc xml:space="preserve"
           filename="dee-result-set.c"
           line="21">Interface for results returned by dee_index_lookup().

This interface utilizes a cursor-like metaphor. You advance the cursor
by calling dee_result_set_next() or adjust it manually by calling
dee_result_set_seek().

Calling dee_result_set_next() will also return the row at the
current cursor position. You may retrieve the current row without advancing
the cursor by calling dee_result_set_peek().</doc>
    </docsection>
    <docsection name="dee-sequence-model">
      <doc xml:space="preserve"
           filename="dee-sequence-model.c"
           line="21">#DeeSequenceModel is an implementation of the #DeeModel&lt;!-- --&gt; interface
backed by a #GSequence. It extends #DeeSerializableModel so that you may use
it as back end model for a #DeeSharedModel.

The implementation is backed by a #GSequence giving a good tradeoff between
random access time versus random- insertion and deletion times. Notably the
dee_model_insert_sorted() and dee_model_find_sorted() methods use the
underlying tree structure to guarantee a &lt;emphasis&gt;O(log(N))&lt;/emphasis&gt;
profile.</doc>
    </docsection>
    <docsection name="dee-serializable">
      <doc xml:space="preserve"
           filename="dee-serializable.c"
           line="21">Interface for classes that can serialize to and from #GVariant&lt;!-- --&gt;s.

There are two serialization concepts supported by this API:
&lt;emphasis&gt;serialization&lt;/emphasis&gt; and &lt;emphasis&gt;externalization&lt;/emphasis&gt;.
A serialized instance is created with dee_serializable_serialize() and can
be read back with dee_serializable_parse() provided you know the correct
#GType for the serialized data. The #GVariant representation of your
serialized data is guaranteed to be exactly as you implement yourself in the
@serialize vfunc of the #DeeSerializableIface.

With externalized instances you don't have to know the correct GType to
recreate the instance. The #GType is encoded in the data itself. When you're
using dee_serializable_externalize() your data will be wrapped in a container
format with the required object metadata to read it back. For this reason
dee_serializable_parse_external() doesn't require you to pass in the #GType
you want to deserialize.

&lt;refsect2 id="dee-1.0-DeeSerializable.on_subclasses"&gt;
&lt;title&gt;On Subclasses of DeeSerializable Types&lt;/title&gt;
&lt;para&gt;
As a rule of thumb you need to re-implement the #DeeSerializable interface
and install parse functions with dee_serializable_register_parser() every
time you create a new class derived from a #DeeSerializable superclass.
&lt;/para&gt;
&lt;para&gt;
In case a subclass does not provide it's own serialization interface
Dee will recurse upwards in the type hierarchy and use the serialization and
parser implementations of the first superclass with the required behaviour.
This means that the parsed instance will &lt;emphasis&gt;not&lt;/emphasis&gt; be an
instance of the subclass but only of the serializable superclass.
Caveat emptor.
&lt;/para&gt;
&lt;/refsect2&gt;</doc>
    </docsection>
    <docsection name="dee-serializable-model">
      <doc xml:space="preserve"
           filename="dee-serializable-model.c"
           line="21">#DeeSerializableModel is an abstract base class to ease implementation of
#DeeModel&lt;!-- --&gt;s providing rows versioned by a
&lt;emphasis&gt;sequence number&lt;/emphasis&gt;.</doc>
    </docsection>
    <docsection name="dee-server">
      <doc xml:space="preserve"
           filename="dee-server.c"
           line="20">#DeeServer allows you to create private connections (connections which
are not routed via dbus-daemon). Note that, unlike #DeePeer, #DeeServer
will always be swarm leader, and clients connected to it cannot overtake
swarm leadership once the server connection is closed.</doc>
    </docsection>
    <docsection name="dee-shared-model">
      <doc xml:space="preserve"
           filename="dee-shared-model.c"
           line="23">#DeeSharedModel is created with a name (usually namespaced and unique to
your program(s)) which is used to locate other #DeeSharedModels created
with the same name through D-Bus, and will keep synchronized  with them.

This allows to you build MVC programs with a sane model API, but have the
controller (or multiple views) in a separate process.

Before you modify the contents of the shared model it is important that
you wait for the model to synchronize with its peers. The normal way to do
this is to wait for the &amp;quot;notify::synchronized&amp;quot; signal.</doc>
    </docsection>
    <docsection name="dee-term-list">
      <doc xml:space="preserve"
           filename="dee-term-list.c"
           line="21">#DeeTermList is a simple list type containing the indexed terms of a row
in a #DeeModel as recorded in a #DeeIndex. The terms are extracted from the
model by using a #DeeAnalyzer.

The default implementation of #DeeTermList stores all terms in a string pool
and reuses terms from that string pool for the entire lifetime of the
term list. That is, even if you call dee_term_list_clear() on it. This
behaviour will save a lot of reallocations and g_strdup()&lt;!-- --&gt;s provided
there is reuse in the terms over time.</doc>
    </docsection>
    <docsection name="dee-text-analyzer">
      <doc xml:space="preserve"
           filename="dee-text-analyzer.c"
           line="21">A #DeeTextAnalyzer is a #DeeAnalyzer that tokenizes UTF-8 text into words,
lower cases it, and does rudimentary normalization. Collation keys for the
current locale are generated.</doc>
    </docsection>
    <docsection name="dee-transaction">
      <doc xml:space="preserve"
           filename="dee-transaction.c"
           line="21">#DeeTransaction is a self contained change set related to some particular
#DeeModel called the &lt;emphasis&gt;target model&lt;/emphasis&gt;.

The transaction instance itself implements the #DeeModel interface in a way
that overlays the target model. In database terms the target model has
isolation level READ_COMMITTED. Meaning that the target model is not modified
until you call dee_transaction_commit().

To flush the changes to the target model call dee_transaction_commit().
After committing the transaction will become invalid and must be freed with
g_object_unref(). It is a programming error to try and access a transaction
that has been committed with the sole exception of calling
dee_transaction_is_committed().</doc>
    </docsection>
    <docsection name="dee-tree-index">
      <doc xml:space="preserve"
           filename="dee-tree-index.c"
           line="21">#DeeTreeIndex is an implementation of #DeeIndex which is backed
by a balanced binary tree. This means that it in addition to
#DEE_TERM_MATCH_EXACT also supports #DEE_TERM_MATCH_PREFIX as a flag in
dee_index_lookup().</doc>
    </docsection>
    <function name="filter_new"
              c:identifier="dee_filter_new"
              moved-to="Filter.new">
      <doc xml:space="preserve"
           filename="dee-filter.c"
           line="417">Create a new #DeeFilter with the given parameters. This call will zero
the @out_filter struct.</doc>
      <source-position filename="dee-filter.h" line="111"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="map_func" transfer-ownership="none" scope="notified">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="419">The #DeeFilterMapFunc to use for the filter</doc>
          <type name="FilterMapFunc" c:type="DeeFilterMapFunc"/>
        </parameter>
        <parameter name="map_notify"
                   transfer-ownership="none"
                   scope="notified"
                   closure="2"
                   destroy="3">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="420">The #DeeFilterMapNotify to use for the filter</doc>
          <type name="FilterMapNotify" c:type="DeeFilterMapNotify"/>
        </parameter>
        <parameter name="userdata"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="421">The user data to pass to @map_func and @map_notify</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="destroy"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="422">The #GDestroyNotify to call on
                        @userdata when disposing of the filter</doc>
          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
        </parameter>
        <parameter name="out_filter"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="424">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
          <type name="Filter" c:type="DeeFilter*"/>
        </parameter>
      </parameters>
    </function>
    <function name="filter_new_collator"
              c:identifier="dee_filter_new_collator"
              moved-to="Filter.new_collator">
      <doc xml:space="preserve"
           filename="dee-filter.c"
           line="484">Create a #DeeFilter that takes string values from a column in the model
and builds a #DeeFilterModel with the rows sorted according to the
collation rules of the current locale.</doc>
      <source-position filename="dee-filter.h" line="122"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="column" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="486">The index of a column containing the strings to sort after</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="out_filter"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="487">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
          <type name="Filter" c:type="DeeFilter*"/>
        </parameter>
      </parameters>
    </function>
    <function name="filter_new_collator_desc"
              c:identifier="dee_filter_new_collator_desc"
              moved-to="Filter.new_collator_desc">
      <doc xml:space="preserve"
           filename="dee-filter.c"
           line="503">Create a #DeeFilter that takes string values from a column in the model
and builds a #DeeFilterModel with the rows sorted descending according to the
collation rules of the current locale.</doc>
      <source-position filename="dee-filter.h" line="125"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="column" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="505">The index of a column containing the strings to sort after</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="out_filter"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="506">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
          <type name="Filter" c:type="DeeFilter*"/>
        </parameter>
      </parameters>
    </function>
    <function name="filter_new_for_any_column"
              c:identifier="dee_filter_new_for_any_column"
              moved-to="Filter.new_for_any_column">
      <doc xml:space="preserve"
           filename="dee-filter.c"
           line="554">Create a #DeeFilter that only includes rows from the original model
which match a variant value in a given column. A #DeeFilterModel
created with this filter will be ordered in accordance with its parent model.

This method will work on any column, disregarding its schema, since the
value comparison is done using g_variant_equal(). This means you can use
this filter as a convenient fallback when there is no predefined filter
for your column type if raw performance is not paramount.</doc>
      <source-position filename="dee-filter.h" line="132"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="column" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="556">The index of a column containing the string to match</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="557">A #GVariant value columns must match exactly.
        The matching semantics are those of g_variant_equal(). If @value
        is floating the ownership will be transfered to the filter</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
        <parameter name="out_filter"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="560">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
          <type name="Filter" c:type="DeeFilter*"/>
        </parameter>
      </parameters>
    </function>
    <function name="filter_new_for_key_column"
              c:identifier="dee_filter_new_for_key_column"
              moved-to="Filter.new_for_key_column">
      <doc xml:space="preserve"
           filename="dee-filter.c"
           line="523">Create a #DeeFilter that only includes rows from the original model
which has an exact match on some string column. A #DeeFilterModel created
with this filter will be ordered in accordance with its parent model.</doc>
      <source-position filename="dee-filter.h" line="128"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="column" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="525">The index of a column containing the string key to match</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="out_filter"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="526">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
          <type name="Filter" c:type="DeeFilter*"/>
        </parameter>
      </parameters>
    </function>
    <function name="filter_new_regex"
              c:identifier="dee_filter_new_regex"
              moved-to="Filter.new_regex">
      <doc xml:space="preserve"
           filename="dee-filter.c"
           line="593">Create a #DeeFilter that only includes rows from the original model
which match a regular expression on some string column. A #DeeFilterModel
created with this filter will be ordered in accordance with its parent model.</doc>
      <source-position filename="dee-filter.h" line="136"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="column" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="595">The index of a column containing the string to match</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="regex" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="596">The regular expression @column must match</doc>
          <type name="GLib.Regex" c:type="GRegex*"/>
        </parameter>
        <parameter name="out_filter"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="597">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
          <type name="Filter" c:type="DeeFilter*"/>
        </parameter>
      </parameters>
    </function>
    <function name="filter_new_sort"
              c:identifier="dee_filter_new_sort"
              moved-to="Filter.new_sort">
      <doc xml:space="preserve"
           filename="dee-filter.c"
           line="451">Create a new #DeeFilter sorting a model according to a #DeeCompareRowFunc.</doc>
      <source-position filename="dee-filter.h" line="117"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="cmp_row"
                   transfer-ownership="none"
                   scope="notified"
                   closure="1"
                   destroy="2">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="453">A #DeeCompareRowFunc to use for sorting</doc>
          <type name="CompareRowFunc" c:type="DeeCompareRowFunc"/>
        </parameter>
        <parameter name="cmp_user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="454">User data passed to @cmp_row</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="cmp_destroy"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="455">The #GDestroyNotify to call on
                        @cmp_user_data when disposing of the filter</doc>
          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
        </parameter>
        <parameter name="out_filter"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-filter.c"
               line="457">A pointer to an uninitialized #DeeFilter struct.
                    This struct will zeroed and configured with the filter
                    parameters</doc>
          <type name="Filter" c:type="DeeFilter*"/>
        </parameter>
      </parameters>
    </function>
    <function name="icu_error_quark" c:identifier="dee_icu_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="model_reader_new"
              c:identifier="dee_model_reader_new"
              moved-to="ModelReader.new">
      <doc xml:space="preserve"
           filename="dee-model-reader.c"
           line="86">Create a new #DeeModelReader with the given parameters. This call will zero
the @out_reader struct.</doc>
      <source-position filename="dee-model-reader.h" line="77"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="reader_func"
                   transfer-ownership="none"
                   scope="notified"
                   closure="1"
                   destroy="2">
          <doc xml:space="preserve"
               filename="dee-model-reader.c"
               line="88">The #DeeModelReaderFunc to use for the reader</doc>
          <type name="ModelReaderFunc" c:type="DeeModelReaderFunc"/>
        </parameter>
        <parameter name="userdata"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="dee-model-reader.c"
               line="89">The user data to pass to @reader_func</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="destroy"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   scope="async">
          <doc xml:space="preserve"
               filename="dee-model-reader.c"
               line="90">The #GDestroyNotify to call on
                                       @userdata when disposing of the reader</doc>
          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
        </parameter>
        <parameter name="out_reader"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model-reader.c"
               line="92">A pointer to an uninitialized #DeeModelReader struct</doc>
          <type name="ModelReader" c:type="DeeModelReader*"/>
        </parameter>
      </parameters>
    </function>
    <function name="model_reader_new_for_int32_column"
              c:identifier="dee_model_reader_new_for_int32_column"
              moved-to="ModelReader.new_for_int32_column">
      <doc xml:space="preserve"
           filename="dee-model-reader.c"
           line="148">A #DeeModelReader reading a %gint32 from a #DeeModel at a given column</doc>
      <source-position filename="dee-model-reader.h" line="85"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="column" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model-reader.c"
               line="150">The column index to read a %gint32 from</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="out_reader"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model-reader.c"
               line="151">A pointer to a #DeeModelReader instance which will have
                    all fields initialized appropriately</doc>
          <type name="ModelReader" c:type="DeeModelReader*"/>
        </parameter>
      </parameters>
    </function>
    <function name="model_reader_new_for_string_column"
              c:identifier="dee_model_reader_new_for_string_column"
              moved-to="ModelReader.new_for_string_column">
      <doc xml:space="preserve"
           filename="dee-model-reader.c"
           line="123">A #DeeModelReader reading a string from a #DeeModel at a given column</doc>
      <source-position filename="dee-model-reader.h" line="82"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="column" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model-reader.c"
               line="125">The column index to read a string from</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="out_reader"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model-reader.c"
               line="126">A pointer to a #DeeModelReader instance which will have
                    all fields initialized appropriately</doc>
          <type name="ModelReader" c:type="DeeModelReader*"/>
        </parameter>
      </parameters>
    </function>
    <function name="model_reader_new_for_uint32_column"
              c:identifier="dee_model_reader_new_for_uint32_column"
              moved-to="ModelReader.new_for_uint32_column">
      <doc xml:space="preserve"
           filename="dee-model-reader.c"
           line="173">A #DeeModelReader reading a %guint32 from a #DeeModel at a given column</doc>
      <source-position filename="dee-model-reader.h" line="88"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="column" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model-reader.c"
               line="175">The column index to read a %guint32 from</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="out_reader"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-model-reader.c"
               line="176">A pointer to a #DeeModelReader instance which will have
                    all fields initialized appropriately</doc>
          <type name="ModelReader" c:type="DeeModelReader*"/>
        </parameter>
      </parameters>
    </function>
    <function name="resource_manager_get_default"
              c:identifier="dee_resource_manager_get_default"
              moved-to="ResourceManager.get_default">
      <doc xml:space="preserve"
           filename="dee-resource-manager.c"
           line="129">Get a pointer to the platform default #DeeResourceManager.</doc>
      <source-position filename="dee-resource-manager.h" line="83"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="dee-resource-manager.c"
             line="134">The default resource manager for the platform.
              Do not unreference. If you need to keep the instance around
              you must manually reference it.</doc>
        <type name="ResourceManager" c:type="DeeResourceManager*"/>
      </return-value>
    </function>
    <function name="serializable_parse"
              c:identifier="dee_serializable_parse"
              moved-to="Serializable.parse">
      <doc xml:space="preserve"
           filename="dee-serializable.c"
           line="300">Reconstruct a #DeeSerializable from #GVariant data. For this function
to work you need to register a parser with
dee_serializable_register_parser(). Any native Dee class will do so
automatically.

This method only works on data created with dee_serializable_serialize()
and &lt;emphasis&gt;not&lt;/emphasis&gt; with data from dee_serializable_externalize().

Since a #DeeSerializableParseFunc is not allowed to fail - by contract -
it can be guaranteed that this function only returns %NULL in case there
is no known parser for @type and #GVariant signature of @data.</doc>
      <source-position filename="dee-serializable.h" line="82"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="dee-serializable.c"
             line="318">A newly constructed #GObject build from @data
              or %NULL in case no parser has been registered for the given
              #GType or variant signature. Free with g_object_unref().</doc>
        <type name="GObject.Object" c:type="GObject*"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-serializable.c"
               line="302">The #GVariant data to parse. If this is a floating reference it will
       be consumed</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-serializable.c"
               line="304">The #GType of the class to instantiate from @data</doc>
          <type name="GType" c:type="GType"/>
        </parameter>
      </parameters>
    </function>
    <function name="serializable_parse_external"
              c:identifier="dee_serializable_parse_external"
              moved-to="Serializable.parse_external">
      <doc xml:space="preserve"
           filename="dee-serializable.c"
           line="229">Reconstruct a #DeeSerializable from #GVariant data. For this function
to work you need to register a parser with
dee_serializable_register_parser(). Any native Dee class will do so
automatically.

This method only works on data created with dee_serializable_externalize()
and &lt;emphasis&gt;not&lt;/emphasis&gt; with data from  dee_serializable_serialize().

Since a #DeeSerializableParseFunc is not allowed to fail - by contract -
it can be guaranteed that this function only returns %NULL in case there
is no known parser for the #GType or #GVariant signature of @data.</doc>
      <source-position filename="dee-serializable.h" line="85"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="dee-serializable.c"
             line="245">A newly constructed #GObject build from @data
              or %NULL in case no parser has been registered for the given
              #GType or variant signature. Free with g_object_unref().</doc>
        <type name="GObject.Object" c:type="GObject*"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="dee-serializable.c"
               line="231">The #GVariant data to parse</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
