<?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="Infinity" version="0.7"/>
  <include name="Infinityd" version="0.7"/>
  <package name="libinftext-0.7"/>
  <doc:format name="unknown"/>
  <namespace name="InfText"
             version="0.7"
             shared-library="libinftext-0.7.so.0"
             c:identifier-prefixes="InfText"
             c:symbol-prefixes="inf_text">
    <function-macro name="BUFFER"
                    c:identifier="INF_TEXT_BUFFER"
                    introspectable="0">
      <source-position filename="inf-text-buffer.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BUFFER_GET_IFACE"
                    c:identifier="INF_TEXT_BUFFER_GET_IFACE"
                    introspectable="0">
      <source-position filename="inf-text-buffer.h" line="34"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <interface name="Buffer"
               c:symbol-prefix="buffer"
               c:type="InfTextBuffer"
               glib:type-name="InfTextBuffer"
               glib:get-type="inf_text_buffer_get_type"
               glib:type-struct="BufferInterface">
      <doc xml:space="preserve"
           filename="inf-text-buffer.h"
           line="36">#InfTextBuffer is an opaque data type. You should only access it
via the public API functions.</doc>
      <source-position filename="inf-text-buffer.h" line="153"/>
      <prerequisite name="Infinity.Buffer"/>
      <virtual-method name="create_begin_iter" invoker="create_begin_iter">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="259">Creates a #InfTextBufferIter pointing to the first segment of @buffer.
A #InfTextBufferIter is used to traverse the buffer contents in steps of
so-called segments each of which is written by the same user. The function
returns %NULL if there are no segments (i.e. the buffer is empty).

The iterator stays valid as long as the buffer remains unmodified and
must be freed with inf_text_buffer_destroy_iter() before.</doc>
        <source-position filename="inf-text-buffer.h" line="115"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="271">A #InfTextBufferIter to be freed by
inf_text_buffer_destroy_iter() when done using it, or %NULL.</doc>
          <type name="BufferIter" c:type="InfTextBufferIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="261">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="create_end_iter" invoker="create_end_iter">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="287">Creates a #InfTextBufferIter pointing to the last segment of @buffer.
A #InfTextBufferIter is used to traverse the buffer contents in steps of
so-called segments each of which is written by the same user. The function
returns %NULL if there are no segments (i.e. the buffer is empty).

The iterator stays valid as long as the buffer remains unmodified and
must be freed with inf_text_buffer_destroy_iter() before.</doc>
        <source-position filename="inf-text-buffer.h" line="117"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="299">A #InfTextBufferIter to be freed by
inf_text_buffer_destroy_iter() when done using it, or %NULL.</doc>
          <type name="BufferIter" c:type="InfTextBufferIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="289">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="destroy_iter" invoker="destroy_iter">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="315">Destroys a #InfTextBufferIter created by
inf_text_buffer_create_begin_iter() or inf_text_buffer_create_end_iter().</doc>
        <source-position filename="inf-text-buffer.h" line="119"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="317">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="318">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="erase_text" invoker="erase_text">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="233">Erases characters from the text buffer.</doc>
        <source-position filename="inf-text-buffer.h" line="110"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="235">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="236">The position to begin deleting characters from.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="237">The amount of characters to delete.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="user"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="238">A #InfUser that erases the text, or %NULL.</doc>
            <type name="Infinity.User" c:type="InfUser*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_encoding" invoker="get_encoding">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="87">Returns the character encoding that the buffer uses. This means that all
#InfTextChunk return values are encoded in this encoding and all
#InfTextChunk parameters are expected to be encoded in that encoding.</doc>
        <source-position filename="inf-text-buffer.h" line="97"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="95">The character encoding for @buffer.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="89">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_length" invoker="get_length">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="110">Returns the number of characters in @buffer.</doc>
        <source-position filename="inf-text-buffer.h" line="99"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="116">The length of @buffer.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="112">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_slice" invoker="get_slice">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="131">Reads @len characters, starting at @pos, from the buffer, and returns them
as a #InfTextChunk.</doc>
        <source-position filename="inf-text-buffer.h" line="101"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="140">A #InfTextChunk.</doc>
          <type name="Chunk" c:type="InfTextChunk*"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="133">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="134">Character offset of where to start extracting.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="135">Number of characters to extract.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="insert_text">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="60">Virtual function to insert text into the buffer.</doc>
        <source-position filename="inf-text-buffer.h" line="105"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="chunk" transfer-ownership="none">
            <type name="Chunk" c:type="InfTextChunk*"/>
          </parameter>
          <parameter name="user" transfer-ownership="none">
            <type name="Infinity.User" c:type="InfUser*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="iter_get_author" invoker="iter_get_author">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="490">Returns the user ID of the user that has written the segment @iter points
to.</doc>
        <source-position filename="inf-text-buffer.h" line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="498">The user ID of the user that wrote the segment @iter points
to.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="492">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="493">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="iter_get_bytes" invoker="iter_get_bytes">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="466">Returns the length of the segment @iter points to, in bytes.</doc>
        <source-position filename="inf-text-buffer.h" line="137"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="473">The number of bytes of the segment @iter points to.</doc>
          <type name="gsize" c:type="gsize"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="468">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="469">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="iter_get_length" invoker="iter_get_length">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="442">Returns the length of the segment @iter points to, in characters.</doc>
        <source-position filename="inf-text-buffer.h" line="134"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="449">The number of characters of the segment @iter points to.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="444">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="445">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="iter_get_offset" invoker="iter_get_offset">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="416">Returns the offset of the first character in the segment @iter points
to, in characters.</doc>
        <source-position filename="inf-text-buffer.h" line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="424">The offset of the first character in the segment @iter
points to.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="418">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="419">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="iter_get_text" invoker="iter_get_text">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="390">Returns the text of the segment @iter points to. It is encoded in
@buffer's encoding (see inf_text_buffer_get_encoding()).</doc>
        <source-position filename="inf-text-buffer.h" line="128"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="398">The text of the segment @iter points to. Free
with g_free() when done using it.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="392">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="393">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="iter_next" invoker="iter_next">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="338">Moves @iter to point to the next segment in the buffer. If @iter already
points to the last segment, @iter is left unmodified and the function
returns %FALSE.</doc>
        <source-position filename="inf-text-buffer.h" line="122"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="347">Whether @iter was moved.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="340">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="341">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="iter_prev" invoker="iter_prev">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="364">Moves @iter to point to the previous segment in the buffer. If @iter
already points to the first segment, @iter is left unmodified and the
function returns %FALSE.</doc>
        <source-position filename="inf-text-buffer.h" line="125"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="373">Whether @iter was moved.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="366">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="367">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="text_erased" invoker="text_erased">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="547">Emits the #InfTextBuffer::text-erased signal. This is meant to be used
by interface implementations in their @erase_text function, or when text
was erased by other means.</doc>
        <source-position filename="inf-text-buffer.h" line="149"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="549">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="550">The position to begin deleting characters from.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="chunk" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="551">A #InfTextChunk containing the erased text.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </parameter>
          <parameter name="user"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="552">A #InfUser that erases the text, or %NULL.</doc>
            <type name="Infinity.User" c:type="InfUser*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="text_inserted" invoker="text_inserted">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="516">Emits the #InfTextBuffer::text-inserted signal. This is meant to be used
by interface implementations in their @insert_text function, or when text
was inserted by other means.</doc>
        <source-position filename="inf-text-buffer.h" line="144"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="518">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="519">A character offset into @buffer.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="chunk" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="520">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </parameter>
          <parameter name="user"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="521">A #InfUser inserting @chunk, or %NULL.</doc>
            <type name="Infinity.User" c:type="InfUser*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="create_begin_iter"
              c:identifier="inf_text_buffer_create_begin_iter">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="259">Creates a #InfTextBufferIter pointing to the first segment of @buffer.
A #InfTextBufferIter is used to traverse the buffer contents in steps of
so-called segments each of which is written by the same user. The function
returns %NULL if there are no segments (i.e. the buffer is empty).

The iterator stays valid as long as the buffer remains unmodified and
must be freed with inf_text_buffer_destroy_iter() before.</doc>
        <source-position filename="inf-text-buffer.h" line="190"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="271">A #InfTextBufferIter to be freed by
inf_text_buffer_destroy_iter() when done using it, or %NULL.</doc>
          <type name="BufferIter" c:type="InfTextBufferIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="261">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="create_end_iter"
              c:identifier="inf_text_buffer_create_end_iter">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="287">Creates a #InfTextBufferIter pointing to the last segment of @buffer.
A #InfTextBufferIter is used to traverse the buffer contents in steps of
so-called segments each of which is written by the same user. The function
returns %NULL if there are no segments (i.e. the buffer is empty).

The iterator stays valid as long as the buffer remains unmodified and
must be freed with inf_text_buffer_destroy_iter() before.</doc>
        <source-position filename="inf-text-buffer.h" line="193"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="299">A #InfTextBufferIter to be freed by
inf_text_buffer_destroy_iter() when done using it, or %NULL.</doc>
          <type name="BufferIter" c:type="InfTextBufferIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="289">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="destroy_iter" c:identifier="inf_text_buffer_destroy_iter">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="315">Destroys a #InfTextBufferIter created by
inf_text_buffer_create_begin_iter() or inf_text_buffer_create_end_iter().</doc>
        <source-position filename="inf-text-buffer.h" line="196"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="317">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="318">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="erase_text" c:identifier="inf_text_buffer_erase_text">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="233">Erases characters from the text buffer.</doc>
        <source-position filename="inf-text-buffer.h" line="184"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="235">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="236">The position to begin deleting characters from.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="237">The amount of characters to delete.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="user"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="238">A #InfUser that erases the text, or %NULL.</doc>
            <type name="Infinity.User" c:type="InfUser*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_encoding" c:identifier="inf_text_buffer_get_encoding">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="87">Returns the character encoding that the buffer uses. This means that all
#InfTextChunk return values are encoded in this encoding and all
#InfTextChunk parameters are expected to be encoded in that encoding.</doc>
        <source-position filename="inf-text-buffer.h" line="159"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="95">The character encoding for @buffer.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="89">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_length" c:identifier="inf_text_buffer_get_length">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="110">Returns the number of characters in @buffer.</doc>
        <source-position filename="inf-text-buffer.h" line="162"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="116">The length of @buffer.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="112">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_slice" c:identifier="inf_text_buffer_get_slice">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="131">Reads @len characters, starting at @pos, from the buffer, and returns them
as a #InfTextChunk.</doc>
        <source-position filename="inf-text-buffer.h" line="165"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="140">A #InfTextChunk.</doc>
          <type name="Chunk" c:type="InfTextChunk*"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="133">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="134">Character offset of where to start extracting.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="135">Number of characters to extract.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_chunk" c:identifier="inf_text_buffer_insert_chunk">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="204">Inserts a #InfTextChunk into @buffer. @user must not necessarily be the
author of @chunk (@chunk may even consist of multiple segments). This
happens when undoing a delete operation that erased another user's text.</doc>
        <source-position filename="inf-text-buffer.h" line="178"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="206">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="207">A character offset into @buffer.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="chunk" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="208">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </parameter>
          <parameter name="user"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="209">A #InfUser inserting @chunk, or %NULL.</doc>
            <type name="Infinity.User" c:type="InfUser*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_text" c:identifier="inf_text_buffer_insert_text">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="157">Inserts @text into @buffer as written by @author. @text must be encoded in
the character encoding of the buffer, see inf_text_buffer_get_encoding().</doc>
        <source-position filename="inf-text-buffer.h" line="170"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="159">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="160">A character offset into @buffer.
@text (type=guint8*) (array length=bytes) (transfer none): A pointer to
the text to insert.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="164">The length (in bytes) of @text.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="163">The length (in characters) of @text.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="user"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="165">A #InfUser that has inserted the new text, or %NULL.</doc>
            <type name="Infinity.User" c:type="InfUser*"/>
          </parameter>
        </parameters>
      </method>
      <method name="iter_get_author"
              c:identifier="inf_text_buffer_iter_get_author">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="490">Returns the user ID of the user that has written the segment @iter points
to.</doc>
        <source-position filename="inf-text-buffer.h" line="224"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="498">The user ID of the user that wrote the segment @iter points
to.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="492">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="493">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="iter_get_bytes"
              c:identifier="inf_text_buffer_iter_get_bytes">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="466">Returns the length of the segment @iter points to, in bytes.</doc>
        <source-position filename="inf-text-buffer.h" line="220"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="473">The number of bytes of the segment @iter points to.</doc>
          <type name="gsize" c:type="gsize"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="468">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="469">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="iter_get_length"
              c:identifier="inf_text_buffer_iter_get_length">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="442">Returns the length of the segment @iter points to, in characters.</doc>
        <source-position filename="inf-text-buffer.h" line="216"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="449">The number of characters of the segment @iter points to.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="444">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="445">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="iter_get_offset"
              c:identifier="inf_text_buffer_iter_get_offset">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="416">Returns the offset of the first character in the segment @iter points
to, in characters.</doc>
        <source-position filename="inf-text-buffer.h" line="212"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="424">The offset of the first character in the segment @iter
points to.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="418">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="419">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="iter_get_text"
              c:identifier="inf_text_buffer_iter_get_text">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="390">Returns the text of the segment @iter points to. It is encoded in
@buffer's encoding (see inf_text_buffer_get_encoding()).</doc>
        <source-position filename="inf-text-buffer.h" line="208"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="398">The text of the segment @iter points to. Free
with g_free() when done using it.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="392">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="393">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="iter_next" c:identifier="inf_text_buffer_iter_next">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="338">Moves @iter to point to the next segment in the buffer. If @iter already
points to the last segment, @iter is left unmodified and the function
returns %FALSE.</doc>
        <source-position filename="inf-text-buffer.h" line="200"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="347">Whether @iter was moved.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="340">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="341">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="iter_prev" c:identifier="inf_text_buffer_iter_prev">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="364">Moves @iter to point to the previous segment in the buffer. If @iter
already points to the first segment, @iter is left unmodified and the
function returns %FALSE.</doc>
        <source-position filename="inf-text-buffer.h" line="204"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-buffer.c"
               line="373">Whether @iter was moved.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="366">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="367">A #InfTextBufferIter pointing into @buffer.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="text_erased" c:identifier="inf_text_buffer_text_erased">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="547">Emits the #InfTextBuffer::text-erased signal. This is meant to be used
by interface implementations in their @erase_text function, or when text
was erased by other means.</doc>
        <source-position filename="inf-text-buffer.h" line="234"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="549">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="550">The position to begin deleting characters from.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="chunk" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="551">A #InfTextChunk containing the erased text.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </parameter>
          <parameter name="user"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="552">A #InfUser that erases the text, or %NULL.</doc>
            <type name="Infinity.User" c:type="InfUser*"/>
          </parameter>
        </parameters>
      </method>
      <method name="text_inserted"
              c:identifier="inf_text_buffer_text_inserted">
        <doc xml:space="preserve"
             filename="inf-text-buffer.c"
             line="516">Emits the #InfTextBuffer::text-inserted signal. This is meant to be used
by interface implementations in their @insert_text function, or when text
was inserted by other means.</doc>
        <source-position filename="inf-text-buffer.h" line="228"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="518">A #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </instance-parameter>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="519">A character offset into @buffer.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="chunk" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="520">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </parameter>
          <parameter name="user"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="521">A #InfUser inserting @chunk, or %NULL.</doc>
            <type name="Infinity.User" c:type="InfUser*"/>
          </parameter>
        </parameters>
      </method>
      <glib:signal name="text-erased" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="Chunk"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="Infinity.User"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="text-inserted" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="Chunk"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="Infinity.User"/>
          </parameter>
        </parameters>
      </glib:signal>
    </interface>
    <record name="BufferInterface"
            c:type="InfTextBufferInterface"
            glib:is-gtype-struct-for="Buffer">
      <doc xml:space="preserve"
           filename="inf-text-buffer.h"
           line="53">This structure contains virtual functions and signal handlers of the
#InfTextBuffer interface.</doc>
      <source-position filename="inf-text-buffer.h" line="153"/>
      <field name="parent" readable="0" private="1">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_encoding">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="55">Virtual function which returns the character coding of the
buffer.</doc>
        <callback name="get_encoding">
          <source-position filename="inf-text-buffer.h" line="97"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="95">The character encoding for @buffer.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="89">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_length">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="57">Virtual function to return the total length of the text in
the buffer, in characters.</doc>
        <callback name="get_length">
          <source-position filename="inf-text-buffer.h" line="99"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="116">The length of @buffer.</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="112">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_slice">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="59">Virtual function to extract a slice of text from the buffer.</doc>
        <callback name="get_slice">
          <source-position filename="inf-text-buffer.h" line="101"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="140">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="133">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="pos" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="134">Character offset of where to start extracting.</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="len" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="135">Number of characters to extract.</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="insert_text">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="60">Virtual function to insert text into the buffer.</doc>
        <callback name="insert_text">
          <source-position filename="inf-text-buffer.h" line="105"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="pos" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="chunk" transfer-ownership="none">
              <type name="Chunk" c:type="InfTextChunk*"/>
            </parameter>
            <parameter name="user" transfer-ownership="none">
              <type name="Infinity.User" c:type="InfUser*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="erase_text">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="61">Virtual function to remove text from the buffer.</doc>
        <callback name="erase_text">
          <source-position filename="inf-text-buffer.h" line="110"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="235">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="pos" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="236">The position to begin deleting characters from.</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="len" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="237">The amount of characters to delete.</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="user"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="238">A #InfUser that erases the text, or %NULL.</doc>
              <type name="Infinity.User" c:type="InfUser*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_begin_iter">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="62">Virtual function to create a #InfTextBufferIter at the
beginning of the buffer, used for traversing through buffer segments.</doc>
        <callback name="create_begin_iter">
          <source-position filename="inf-text-buffer.h" line="115"/>
          <return-value transfer-ownership="full" nullable="1">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="271">A #InfTextBufferIter to be freed by
inf_text_buffer_destroy_iter() when done using it, or %NULL.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="261">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_end_iter">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="64">Virtual function to create a #InfTextBufferIter at the
end of the buffer, used for traversing through buffer segments.</doc>
        <callback name="create_end_iter">
          <source-position filename="inf-text-buffer.h" line="117"/>
          <return-value transfer-ownership="full" nullable="1">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="299">A #InfTextBufferIter to be freed by
inf_text_buffer_destroy_iter() when done using it, or %NULL.</doc>
            <type name="BufferIter" c:type="InfTextBufferIter*"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="289">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="destroy_iter">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="66">Virtual function to destroy an iterator created with
the @create_begin_iter and @create_end_iter functions.</doc>
        <callback name="destroy_iter">
          <source-position filename="inf-text-buffer.h" line="119"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="317">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="full">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="318">A #InfTextBufferIter pointing into @buffer.</doc>
              <type name="BufferIter" c:type="InfTextBufferIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="iter_next">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="68">Virtual function to advance a #InfTextBufferIter to the next
segment.</doc>
        <callback name="iter_next">
          <source-position filename="inf-text-buffer.h" line="122"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="347">Whether @iter was moved.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="340">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="341">A #InfTextBufferIter pointing into @buffer.</doc>
              <type name="BufferIter" c:type="InfTextBufferIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="iter_prev">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="70">Virtual function to retreat a #InfTextBufferIter to the
previous segment.</doc>
        <callback name="iter_prev">
          <source-position filename="inf-text-buffer.h" line="125"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="373">Whether @iter was moved.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="366">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="367">A #InfTextBufferIter pointing into @buffer.</doc>
              <type name="BufferIter" c:type="InfTextBufferIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="iter_get_text">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="72">Virtual function to obtain the text of a segment a
#InfTextBufferIter points to.</doc>
        <callback name="iter_get_text">
          <source-position filename="inf-text-buffer.h" line="128"/>
          <return-value transfer-ownership="full" nullable="1">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="398">The text of the segment @iter points to. Free
with g_free() when done using it.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="392">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="393">A #InfTextBufferIter pointing into @buffer.</doc>
              <type name="BufferIter" c:type="InfTextBufferIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="iter_get_offset">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="74">Virtual function to obtain the offset of the first
character in the segment a #InfTextBufferIter points to.</doc>
        <callback name="iter_get_offset">
          <source-position filename="inf-text-buffer.h" line="131"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="424">The offset of the first character in the segment @iter
points to.</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="418">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="419">A #InfTextBufferIter pointing into @buffer.</doc>
              <type name="BufferIter" c:type="InfTextBufferIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="iter_get_length">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="76">Virtual function to obtain the length of a segment a
#InfTextBufferIter points to.</doc>
        <callback name="iter_get_length">
          <source-position filename="inf-text-buffer.h" line="134"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="449">The number of characters of the segment @iter points to.</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="444">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="445">A #InfTextBufferIter pointing into @buffer.</doc>
              <type name="BufferIter" c:type="InfTextBufferIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="iter_get_bytes">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="78">Virtual function to obtain the number of bytes in a
segment a #InfTextBufferIter points to.</doc>
        <callback name="iter_get_bytes">
          <source-position filename="inf-text-buffer.h" line="137"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="473">The number of bytes of the segment @iter points to.</doc>
            <type name="gsize" c:type="gsize"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="468">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="469">A #InfTextBufferIter pointing into @buffer.</doc>
              <type name="BufferIter" c:type="InfTextBufferIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="iter_get_author">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="80">Virtual function to obtain the author of the segment a
#InfTextBufferIter points to.</doc>
        <callback name="iter_get_author">
          <source-position filename="inf-text-buffer.h" line="140"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-buffer.c"
                 line="498">The user ID of the user that wrote the segment @iter points
to.</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="492">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="iter" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="493">A #InfTextBufferIter pointing into @buffer.</doc>
              <type name="BufferIter" c:type="InfTextBufferIter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="text_inserted">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="82">Default signal handler of the #InfTextBuffer::text-inserted
signal.</doc>
        <callback name="text_inserted">
          <source-position filename="inf-text-buffer.h" line="144"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="518">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="pos" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="519">A character offset into @buffer.</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="chunk" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="520">A #InfTextChunk.</doc>
              <type name="Chunk" c:type="InfTextChunk*"/>
            </parameter>
            <parameter name="user"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="521">A #InfUser inserting @chunk, or %NULL.</doc>
              <type name="Infinity.User" c:type="InfUser*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="text_erased">
        <doc xml:space="preserve"
             filename="inf-text-buffer.h"
             line="84">Default signal handler of the #InfTextBuffer::text-erased
signal.</doc>
        <callback name="text_erased">
          <source-position filename="inf-text-buffer.h" line="149"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="buffer" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="549">A #InfTextBuffer.</doc>
              <type name="Buffer" c:type="InfTextBuffer*"/>
            </parameter>
            <parameter name="pos" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="550">The position to begin deleting characters from.</doc>
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="chunk" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="551">A #InfTextChunk containing the erased text.</doc>
              <type name="Chunk" c:type="InfTextChunk*"/>
            </parameter>
            <parameter name="user"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="inf-text-buffer.c"
                   line="552">A #InfUser that erases the text, or %NULL.</doc>
              <type name="Infinity.User" c:type="InfUser*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="BufferIter"
            c:type="InfTextBufferIter"
            disguised="1"
            opaque="1"
            foreign="1">
      <doc xml:space="preserve"
           filename="inf-text-buffer.h"
           line="45">#InfTextBufferIter is an opaque data type. You should only access it
via the public API functions.</doc>
      <source-position filename="inf-text-buffer.h" line="51"/>
    </record>
    <record name="Chunk"
            c:type="InfTextChunk"
            opaque="1"
            glib:type-name="InfTextChunk"
            glib:get-type="inf_text_chunk_get_type"
            c:symbol-prefix="chunk">
      <doc xml:space="preserve"
           filename="inf-text-chunk.h"
           line="32">#InfTextChunk is an opaque data type. You should only access it
via the public API functions.</doc>
      <source-position filename="inf-text-chunk.h" line="38"/>
      <constructor name="new" c:identifier="inf_text_chunk_new">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="363">Creates a new #InfTextChunk with no initial content that holds text
in the given encoding. TODO: Allow binary data with %NULL encoding.</doc>
        <source-position filename="inf-text-chunk.h" line="72"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="370">A new #InfTextChunk.</doc>
          <type name="Chunk" c:type="InfTextChunk*"/>
        </return-value>
        <parameters>
          <parameter name="encoding" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="365">A content encoding, such as "UTF-8" or "LATIN1".</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy" c:identifier="inf_text_chunk_copy">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="392">Returns a copy of @self.</doc>
        <source-position filename="inf-text-chunk.h" line="75"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="398">A new #InfTextChunk.</doc>
          <type name="Chunk" c:type="InfTextChunk*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="394">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="inf_text_chunk_equal">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="1226">Returns whether the two text chunks contain the same text and the same
segments were written by the same authors.</doc>
        <source-position filename="inf-text-chunk.h" line="114"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="1234">Whether the two chunks are equal.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1228">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
          <parameter name="other" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1229">Another #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </parameter>
        </parameters>
      </method>
      <method name="erase" c:identifier="inf_text_chunk_erase">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="985">Removes @length characters of @self, starting from character offset @begin.</doc>
        <source-position filename="inf-text-chunk.h" line="105"/>
        <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="inf-text-chunk.c"
                 line="987">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
          <parameter name="begin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="988">A character offset into @self.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="989">Number of characters to erase.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="inf_text_chunk_free">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="433">Frees a #InfTextChunk allocated with inf_text_chunk_new(),
inf_text_chunk_copy() or inf_text_chunk_substring().</doc>
        <source-position filename="inf-text-chunk.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="435">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_encoding" c:identifier="inf_text_chunk_get_encoding">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="448">Returns the character encoding in which the content of @self is encoded.</doc>
        <source-position filename="inf-text-chunk.h" line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="454">The encoding of @self.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="450">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_length" c:identifier="inf_text_chunk_get_length">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="463">Returns the number of characters contained in @self.</doc>
        <source-position filename="inf-text-chunk.h" line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="469">The number of characters of @self.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="465">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_text" c:identifier="inf_text_chunk_get_text">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="1175">Returns the content of @self as an array. The text is encoded in
@self's encoding. @length is set to the number of bytes in the returned
buffer, if non-%NULL. The result is _not_ zero-terminated.</doc>
        <source-position filename="inf-text-chunk.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="1184">Content of
@self. Free with g_free() if no longer in use.</doc>
          <array length="0" zero-terminated="0" c:type="gpointer">
            <type name="guint8" c:type="gpointer"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1177">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
          <parameter name="length"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1178">Location to write the number of bytes to, or %NULL.</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_chunk" c:identifier="inf_text_chunk_insert_chunk">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="708">Inserts @text into @self at position @offset. @text and @self must
have the same encoding.</doc>
        <source-position filename="inf-text-chunk.h" line="100"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="710">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="711">Character offset at which to insert text.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="712">Chunk to insert into @self.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert_text" c:identifier="inf_text_chunk_insert_text">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="583">Inserts text written by @author into @self. @text is expected to be in
the chunk's encoding.</doc>
        <source-position filename="inf-text-chunk.h" line="92"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="585">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="586">Character offset at which to insert text
@text (type const guint8*) (array length=bytes) (transfer none): Text
to insert.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gconstpointer"/>
          </parameter>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="590">Number of bytes of @text.</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="589">Number of characters contained in @text.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="author" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="591">User that wrote @text.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="iter_init_begin"
              c:identifier="inf_text_chunk_iter_init_begin">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="1277">Sets @iter to point to the first segment of @self. If there are no
segments (i.e. @self is empty), @iter is left untouched and the function
returns %FALSE.</doc>
        <source-position filename="inf-text-chunk.h" line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="1286">Whether @iter was set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1279">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
          <parameter name="iter"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1280">A #InfTextChunkIter.</doc>
            <type name="ChunkIter" c:type="InfTextChunkIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="iter_init_end" c:identifier="inf_text_chunk_iter_init_end">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="1308">Sets @iter to point to the last segment of @self. If there are no
segments (i.e. @self is empty), @iter is left untouched and the function
returns %FALSE.</doc>
        <source-position filename="inf-text-chunk.h" line="122"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="1317">Whether @iter was set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1310">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
          <parameter name="iter"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1311">A #InfTextChunkIter.</doc>
            <type name="ChunkIter" c:type="InfTextChunkIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="substring" c:identifier="inf_text_chunk_substring">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="478">Returns a new #InfTextChunk containing a substring of @self, beginning
at character offset @begin and @length characters long.</doc>
        <source-position filename="inf-text-chunk.h" line="87"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="487">A new #InfTextChunk.</doc>
          <type name="Chunk" c:type="InfTextChunk*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="480">A #InfTextChunk.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </instance-parameter>
          <parameter name="begin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="481">A character offset into @self.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="482">The length of the text to extract.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <record name="ChunkIter"
            c:type="InfTextChunkIter"
            glib:type-name="InfTextChunkIter"
            glib:get-type="inf_text_chunk_iter_get_type"
            c:symbol-prefix="chunk_iter">
      <doc xml:space="preserve"
           filename="inf-text-chunk.h"
           line="40">#InfTextChunkIter is an opaque data type. You should only access it
via the public API functions.

#InfTextChunkIter can be safely allocated on the stack and copied by value.
Use inf_text_chunk_iter_init_begin() or inf_text_chunk_iter_init_end() to
initialize a #InfTextChunkIter. There is no deinitialization required. A
#InfTextChunkIter is valid as long as the chunk is not modified.</doc>
      <source-position filename="inf-text-chunk.h" line="57"/>
      <field name="chunk" readable="0" private="1">
        <type name="Chunk" c:type="InfTextChunk*"/>
      </field>
      <field name="first" readable="0" private="1">
        <type name="GLib.SequenceIter" c:type="GSequenceIter*"/>
      </field>
      <field name="second" readable="0" private="1">
        <type name="GLib.SequenceIter" c:type="GSequenceIter*"/>
      </field>
      <method name="copy" c:identifier="inf_text_chunk_iter_copy">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="330">Makes a dynamically-allocated copy of @iter. This is typically not needed
because #InfTextChunkIter can be copied by value, however it might be
useful to language bindings.</doc>
        <source-position filename="inf-text-chunk.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="338">A copy of @iter. Free with
inf_text_chunk_iter_free().</doc>
          <type name="ChunkIter" c:type="InfTextChunkIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="332">A #InfTextChunkIter.</doc>
            <type name="ChunkIter" c:type="const InfTextChunkIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="inf_text_chunk_iter_free">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="350">Frees all resources allocated with inf_text_chunk_iter_copy(). Must not
be used with stack-allocated #InfTextChunkIter&lt;!-- --&gt;s.</doc>
        <source-position filename="inf-text-chunk.h" line="69"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="352">The #InfTextChunkIter to free.</doc>
            <type name="ChunkIter" c:type="InfTextChunkIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_author" c:identifier="inf_text_chunk_iter_get_author">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="1471">Returns the user ID of the author of the segment @iter points to.</doc>
        <source-position filename="inf-text-chunk.h" line="144"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="1477">The user ID of the author of the segment @iter points to.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1473">An initialized #InfTextChunkIter.</doc>
            <type name="ChunkIter" c:type="InfTextChunkIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bytes" c:identifier="inf_text_chunk_iter_get_bytes">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="1456">Returns the number of bytes in the segment @iter points to.</doc>
        <source-position filename="inf-text-chunk.h" line="141"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="1462">The number of bytes in the segment @iter points to.</doc>
          <type name="gsize" c:type="gsize"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1458">An initialized #InfTextChunkIter.</doc>
            <type name="ChunkIter" c:type="InfTextChunkIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_length" c:identifier="inf_text_chunk_iter_get_length">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="1427">Returns the number of characters in the segment @iter points to.</doc>
        <source-position filename="inf-text-chunk.h" line="138"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="1433">The number of characters in the segment @iter points to.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1429">An initialized #InfTextChunkIter.</doc>
            <type name="ChunkIter" c:type="InfTextChunkIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_offset" c:identifier="inf_text_chunk_iter_get_offset">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="1407">Returns the offset of the first character in the segment @iter points to.</doc>
        <source-position filename="inf-text-chunk.h" line="135"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="1413">The offset of the first characters in the segment @iter
points to.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1409">An initialized #InfTextChunkIter.</doc>
            <type name="ChunkIter" c:type="InfTextChunkIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_text" c:identifier="inf_text_chunk_iter_get_text">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="1391">Returns the text of the segment @iter points to. The text is in the
underlaying #InfTextChunk's encoding.</doc>
        <source-position filename="inf-text-chunk.h" line="132"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="1398">The text of the segment @iter points to.</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1393">An initialized #InfTextChunkIter.</doc>
            <type name="ChunkIter" c:type="InfTextChunkIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="next" c:identifier="inf_text_chunk_iter_next">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="1339">Sets @iter to point to the next segment. If @iter already points to the
last segment, the function returns %FALSE.</doc>
        <source-position filename="inf-text-chunk.h" line="126"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="1346">Whether @iter was set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1341">An initialized #InfTextChunkIter.</doc>
            <type name="ChunkIter" c:type="InfTextChunkIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="prev" c:identifier="inf_text_chunk_iter_prev">
        <doc xml:space="preserve"
             filename="inf-text-chunk.c"
             line="1365">Sets @iter to point to the previous segment. If @iter already points to
the first segment, the function returns %FALSE.</doc>
        <source-position filename="inf-text-chunk.h" line="129"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-chunk.c"
               line="1372">Whether @iter has changed.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-chunk.c"
                 line="1367">An initialized #InfTextChunkIter.</doc>
            <type name="ChunkIter" c:type="InfTextChunkIter*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <function-macro name="DEFAULT_BUFFER"
                    c:identifier="INF_TEXT_DEFAULT_BUFFER"
                    introspectable="0">
      <source-position filename="inf-text-default-buffer.h" line="28"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEFAULT_BUFFER_CLASS"
                    c:identifier="INF_TEXT_DEFAULT_BUFFER_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-default-buffer.h" line="29"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEFAULT_BUFFER_GET_CLASS"
                    c:identifier="INF_TEXT_DEFAULT_BUFFER_GET_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-default-buffer.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEFAULT_DELETE_OPERATION"
                    c:identifier="INF_TEXT_DEFAULT_DELETE_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-default-delete-operation.h"
                       line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEFAULT_DELETE_OPERATION_CLASS"
                    c:identifier="INF_TEXT_DEFAULT_DELETE_OPERATION_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-default-delete-operation.h"
                       line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEFAULT_DELETE_OPERATION_GET_CLASS"
                    c:identifier="INF_TEXT_DEFAULT_DELETE_OPERATION_GET_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-default-delete-operation.h"
                       line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEFAULT_INSERT_OPERATION"
                    c:identifier="INF_TEXT_DEFAULT_INSERT_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-default-insert-operation.h"
                       line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEFAULT_INSERT_OPERATION_CLASS"
                    c:identifier="INF_TEXT_DEFAULT_INSERT_OPERATION_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-default-insert-operation.h"
                       line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEFAULT_INSERT_OPERATION_GET_CLASS"
                    c:identifier="INF_TEXT_DEFAULT_INSERT_OPERATION_GET_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-default-insert-operation.h"
                       line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DELETE_OPERATION"
                    c:identifier="INF_TEXT_DELETE_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-delete-operation.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DELETE_OPERATION_GET_IFACE"
                    c:identifier="INF_TEXT_DELETE_OPERATION_GET_IFACE"
                    introspectable="0">
      <source-position filename="inf-text-delete-operation.h" line="34"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <class name="DefaultBuffer"
           c:symbol-prefix="default_buffer"
           c:type="InfTextDefaultBuffer"
           parent="GObject.Object"
           glib:type-name="InfTextDefaultBuffer"
           glib:get-type="inf_text_default_buffer_get_type"
           glib:type-struct="DefaultBufferClass">
      <source-position filename="inf-text-default-buffer.h" line="39"/>
      <implements name="Buffer"/>
      <implements name="Infinity.Buffer"/>
      <constructor name="new" c:identifier="inf_text_default_buffer_new">
        <doc xml:space="preserve"
             filename="inf-text-default-buffer.c"
             line="382">Creates a new, empty #InfTextDefaultBuffer.</doc>
        <source-position filename="inf-text-default-buffer.h" line="49"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-default-buffer.c"
               line="388">A #InfTextDefaultBuffer.</doc>
          <type name="DefaultBuffer" c:type="InfTextDefaultBuffer*"/>
        </return-value>
        <parameters>
          <parameter name="encoding" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-default-buffer.c"
                 line="384">The character encoding to use for the buffer.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="encoding"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="DefaultBufferClass"
            c:type="InfTextDefaultBufferClass"
            glib:is-gtype-struct-for="DefaultBuffer">
      <source-position filename="inf-text-default-buffer.h" line="39"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="DefaultDeleteOperation"
           c:symbol-prefix="default_delete_operation"
           c:type="InfTextDefaultDeleteOperation"
           parent="GObject.Object"
           glib:type-name="InfTextDefaultDeleteOperation"
           glib:get-type="inf_text_default_delete_operation_get_type"
           glib:type-struct="DefaultDeleteOperationClass">
      <source-position filename="inf-text-default-delete-operation.h"
                       line="42"/>
      <implements name="DeleteOperation"/>
      <implements name="Infinity.AdoptedOperation"/>
      <constructor name="new"
                   c:identifier="inf_text_default_delete_operation_new">
        <doc xml:space="preserve"
             filename="inf-text-default-delete-operation.c"
             line="479">Creates a new delete operation that, when applied, deletes the text @chunk
that starts at character offset @position in the buffer. The operation
cannot be applied, if there is some other text at that position in the
buffer.</doc>
        <source-position filename="inf-text-default-delete-operation.h"
                         line="52"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-default-delete-operation.c"
               line="489">A new #InfTextDefaultDeleteOperation.</doc>
          <type name="DefaultDeleteOperation"
                c:type="InfTextDefaultDeleteOperation*"/>
        </return-value>
        <parameters>
          <parameter name="position" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-default-delete-operation.c"
                 line="481">The position at which to delete text.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="chunk" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-default-delete-operation.c"
                 line="482">The text to delete.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_chunk"
              c:identifier="inf_text_default_delete_operation_get_chunk"
              glib:get-property="chunk">
        <doc xml:space="preserve"
             filename="inf-text-default-delete-operation.c"
             line="509">Returns the text deleted by @operation.</doc>
        <source-position filename="inf-text-default-delete-operation.h"
                         line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-default-delete-operation.c"
               line="515">A #InfTextChunk, owned by the operation.</doc>
          <type name="Chunk" c:type="InfTextChunk*"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-default-delete-operation.c"
                 line="511">A #InfTextDefaultDeleteOperation.</doc>
            <type name="DefaultDeleteOperation"
                  c:type="InfTextDefaultDeleteOperation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="chunk"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_chunk">
        <type name="Chunk"/>
      </property>
      <property name="position"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="DefaultDeleteOperationClass"
            c:type="InfTextDefaultDeleteOperationClass"
            glib:is-gtype-struct-for="DefaultDeleteOperation">
      <source-position filename="inf-text-default-delete-operation.h"
                       line="42"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="DefaultInsertOperation"
           c:symbol-prefix="default_insert_operation"
           c:type="InfTextDefaultInsertOperation"
           parent="GObject.Object"
           glib:type-name="InfTextDefaultInsertOperation"
           glib:get-type="inf_text_default_insert_operation_get_type"
           glib:type-struct="DefaultInsertOperationClass">
      <source-position filename="inf-text-default-insert-operation.h"
                       line="42"/>
      <implements name="InsertOperation"/>
      <implements name="Infinity.AdoptedOperation"/>
      <constructor name="new"
                   c:identifier="inf_text_default_insert_operation_new">
        <doc xml:space="preserve"
             filename="inf-text-default-insert-operation.c"
             line="351">Creates a new insert operation that, when applied, inserts @chunk
at @pos.</doc>
        <source-position filename="inf-text-default-insert-operation.h"
                         line="52"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-default-insert-operation.c"
               line="359">A new #InfTextDefaultInsertOperation.</doc>
          <type name="DefaultInsertOperation"
                c:type="InfTextDefaultInsertOperation*"/>
        </return-value>
        <parameters>
          <parameter name="pos" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-default-insert-operation.c"
                 line="353">The position at which to insert text.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="chunk" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-default-insert-operation.c"
                 line="354">The text to insert.</doc>
            <type name="Chunk" c:type="InfTextChunk*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_chunk"
              c:identifier="inf_text_default_insert_operation_get_chunk"
              glib:get-property="chunk">
        <doc xml:space="preserve"
             filename="inf-text-default-insert-operation.c"
             line="379">Returns the text inserted by @operation.</doc>
        <source-position filename="inf-text-default-insert-operation.h"
                         line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-default-insert-operation.c"
               line="385">A #InfTextChunk, owned by the operation.</doc>
          <type name="Chunk" c:type="InfTextChunk*"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-default-insert-operation.c"
                 line="381">A #InfTextDefaultInsertOperation.</doc>
            <type name="DefaultInsertOperation"
                  c:type="InfTextDefaultInsertOperation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="chunk"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_chunk">
        <type name="Chunk"/>
      </property>
      <property name="position"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="DefaultInsertOperationClass"
            c:type="InfTextDefaultInsertOperationClass"
            glib:is-gtype-struct-for="DefaultInsertOperation">
      <source-position filename="inf-text-default-insert-operation.h"
                       line="42"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <interface name="DeleteOperation"
               c:symbol-prefix="delete_operation"
               c:type="InfTextDeleteOperation"
               glib:type-name="InfTextDeleteOperation"
               glib:get-type="inf_text_delete_operation_get_type"
               glib:type-struct="DeleteOperationInterface">
      <doc xml:space="preserve"
           filename="inf-text-operations.h"
           line="51">#InfTextDeleteOperation is an opaque data type. You should only access it
via the public API functions.</doc>
      <source-position filename="inf-text-delete-operation.h" line="78"/>
      <prerequisite name="Infinity.AdoptedOperation"/>
      <virtual-method name="get_length" invoker="get_length">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.c"
             line="71">Returns the number of characters deleted by @operation.</doc>
        <source-position filename="inf-text-delete-operation.h" line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-delete-operation.c"
               line="77">The length of @operation.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="73">A #InfTextDeleteOperation.</doc>
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_position" invoker="get_position">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.c"
             line="50">Returns the position at which @operation starts to delete dext.</doc>
        <source-position filename="inf-text-delete-operation.h" line="61"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-delete-operation.c"
               line="56">The position of @operation.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="52">A #InfTextDeleteOperation.</doc>
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="transform_overlap" introspectable="0">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.h"
             line="46">Virtual function to transform the operation against
another delete operation with overlapping regions.</doc>
        <source-position filename="inf-text-delete-operation.h" line="68"/>
        <return-value>
          <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
        </return-value>
        <parameters>
          <instance-parameter name="op" transfer-ownership="none">
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </instance-parameter>
          <parameter name="other" transfer-ownership="none">
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </parameter>
          <parameter name="position" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="begin" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="other_begin" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="transform_position" introspectable="0">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.h"
             line="44">Virtual function to transform the operation such that
the start position of the operation changes.</doc>
        <source-position filename="inf-text-delete-operation.h" line="65"/>
        <return-value>
          <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
        </return-value>
        <parameters>
          <instance-parameter name="op" transfer-ownership="none">
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </instance-parameter>
          <parameter name="position" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="transform_split" introspectable="0">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.h"
             line="48">Virtual function to transform the operation against an
insert operation such that this operation needs to be split in two.</doc>
        <source-position filename="inf-text-delete-operation.h" line="75"/>
        <return-value>
          <type name="Infinity.AdoptedSplitOperation"
                c:type="InfAdoptedSplitOperation*"/>
        </return-value>
        <parameters>
          <instance-parameter name="op" transfer-ownership="none">
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </instance-parameter>
          <parameter name="split_pos" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="split_length" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_length"
              c:identifier="inf_text_delete_operation_get_length">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.c"
             line="71">Returns the number of characters deleted by @operation.</doc>
        <source-position filename="inf-text-delete-operation.h" line="87"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-delete-operation.c"
               line="77">The length of @operation.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="73">A #InfTextDeleteOperation.</doc>
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_position"
              c:identifier="inf_text_delete_operation_get_position">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.c"
             line="50">Returns the position at which @operation starts to delete dext.</doc>
        <source-position filename="inf-text-delete-operation.h" line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-delete-operation.c"
               line="56">The position of @operation.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="52">A #InfTextDeleteOperation.</doc>
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="need_concurrency_id"
              c:identifier="inf_text_delete_operation_need_concurrency_id">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.c"
             line="92">Returns whether transforming @op against @against requires a concurrency ID
(see inf_adopted_operation_need_concurrency_id() for further information).</doc>
        <source-position filename="inf-text-delete-operation.h" line="90"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-delete-operation.c"
               line="100">Whether transforming @op against @against requires a concurrency
ID.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="op" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="94">A #InfTextDeleteOperation.</doc>
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </instance-parameter>
          <parameter name="against" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="95">Another #InfAdoptedOperation.</doc>
            <type name="Infinity.AdoptedOperation"
                  c:type="InfAdoptedOperation*"/>
          </parameter>
        </parameters>
      </method>
      <method name="transform_delete"
              c:identifier="inf_text_delete_operation_transform_delete">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.c"
             line="163">Returns a new operation that includes the effect of @against into
@operation.</doc>
        <source-position filename="inf-text-delete-operation.h" line="98"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-delete-operation.c"
               line="171">A new #InfAdoptedOperation.</doc>
          <type name="Infinity.AdoptedOperation"
                c:type="InfAdoptedOperation*"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="165">A #InfTextDeleteOperation.</doc>
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </instance-parameter>
          <parameter name="against" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="166">Another #InfTextDeleteOperation.</doc>
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </parameter>
        </parameters>
      </method>
      <method name="transform_insert"
              c:identifier="inf_text_delete_operation_transform_insert">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.c"
             line="113">Returns a new operation that includes the effect of @against into
@operation.</doc>
        <source-position filename="inf-text-delete-operation.h" line="94"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-delete-operation.c"
               line="121">A new #InfAdoptedOperation.</doc>
          <type name="Infinity.AdoptedOperation"
                c:type="InfAdoptedOperation*"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="115">A #InfTextDeleteOperation.</doc>
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </instance-parameter>
          <parameter name="against" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="116">A #InfTextInsertOperation.</doc>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="DeleteOperationInterface"
            c:type="InfTextDeleteOperationInterface"
            glib:is-gtype-struct-for="DeleteOperation">
      <doc xml:space="preserve"
           filename="inf-text-delete-operation.h"
           line="38">This structure contains virtual methods of the #InfTextDeleteOperation
interface.</doc>
      <source-position filename="inf-text-delete-operation.h" line="78"/>
      <field name="parent" readable="0" private="1">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_position">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.h"
             line="40">Virtual function to retrieve the start position of the
delete operation.</doc>
        <callback name="get_position">
          <source-position filename="inf-text-delete-operation.h" line="61"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="56">The position of @operation.</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="operation" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-delete-operation.c"
                   line="52">A #InfTextDeleteOperation.</doc>
              <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_length">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.h"
             line="42">Virtual function to retrieve the end position of the number
of characters removed by the delete operation.</doc>
        <callback name="get_length">
          <source-position filename="inf-text-delete-operation.h" line="63"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-delete-operation.c"
                 line="77">The length of @operation.</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="operation" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-delete-operation.c"
                   line="73">A #InfTextDeleteOperation.</doc>
              <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="transform_position" introspectable="0">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.h"
             line="44">Virtual function to transform the operation such that
the start position of the operation changes.</doc>
        <callback name="transform_position" introspectable="0">
          <source-position filename="inf-text-delete-operation.h" line="65"/>
          <return-value>
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </return-value>
          <parameters>
            <parameter name="op" transfer-ownership="none">
              <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
            </parameter>
            <parameter name="position" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="transform_overlap" introspectable="0">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.h"
             line="46">Virtual function to transform the operation against
another delete operation with overlapping regions.</doc>
        <callback name="transform_overlap" introspectable="0">
          <source-position filename="inf-text-delete-operation.h" line="68"/>
          <return-value>
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </return-value>
          <parameters>
            <parameter name="op" transfer-ownership="none">
              <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
            </parameter>
            <parameter name="other" transfer-ownership="none">
              <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
            </parameter>
            <parameter name="position" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="begin" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="other_begin" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="transform_split" introspectable="0">
        <doc xml:space="preserve"
             filename="inf-text-delete-operation.h"
             line="48">Virtual function to transform the operation against an
insert operation such that this operation needs to be split in two.</doc>
        <callback name="transform_split" introspectable="0">
          <source-position filename="inf-text-delete-operation.h" line="75"/>
          <return-value>
            <type name="Infinity.AdoptedSplitOperation"
                  c:type="InfAdoptedSplitOperation*"/>
          </return-value>
          <parameters>
            <parameter name="op" transfer-ownership="none">
              <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
            </parameter>
            <parameter name="split_pos" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="split_length" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <function-macro name="FIXLINE_BUFFER"
                    c:identifier="INF_TEXT_FIXLINE_BUFFER"
                    introspectable="0">
      <source-position filename="inf-text-fixline-buffer.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FIXLINE_BUFFER_CLASS"
                    c:identifier="INF_TEXT_FIXLINE_BUFFER_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-fixline-buffer.h" line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FIXLINE_BUFFER_GET_CLASS"
                    c:identifier="INF_TEXT_FIXLINE_BUFFER_GET_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-fixline-buffer.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <enumeration name="FilesystemFormatError"
                 c:type="InfTextFilesystemFormatError">
      <doc xml:space="preserve"
           filename="inf-text-filesystem-format.h"
           line="30">Errors that can occur when reading a #InfTextSession from a
#InfdFilesystemStorage.</doc>
      <source-position filename="inf-text-filesystem-format.h" line="46"/>
      <member name="not_a_text_session"
              value="0"
              c:identifier="INF_TEXT_FILESYSTEM_FORMAT_ERROR_NOT_A_TEXT_SESSION">
        <doc xml:space="preserve"
             filename="inf-text-filesystem-format.h"
             line="32">The file to be read
is not a serialized text session.</doc>
      </member>
      <member name="user_exists"
              value="1"
              c:identifier="INF_TEXT_FILESYSTEM_FORMAT_ERROR_USER_EXISTS">
        <doc xml:space="preserve"
             filename="inf-text-filesystem-format.h"
             line="34">The user table of the
session contains users with duplicate ID or duplicate name.</doc>
      </member>
      <member name="no_such_user"
              value="2"
              c:identifier="INF_TEXT_FILESYSTEM_FORMAT_ERROR_NO_SUCH_USER">
        <doc xml:space="preserve"
             filename="inf-text-filesystem-format.h"
             line="36">A segment of the text
document is written by a user which does not exist.</doc>
      </member>
    </enumeration>
    <class name="FixlineBuffer"
           c:symbol-prefix="fixline_buffer"
           c:type="InfTextFixlineBuffer"
           parent="GObject.Object"
           glib:type-name="InfTextFixlineBuffer"
           glib:get-type="inf_text_fixline_buffer_get_type"
           glib:type-struct="FixlineBufferClass">
      <doc xml:space="preserve"
           filename="inf-text-fixline-buffer.h"
           line="50">#InfTextFixlineBuffer is an opaque data type. You should only access it
via the public API functions.</doc>
      <source-position filename="inf-text-fixline-buffer.h" line="48"/>
      <implements name="Buffer"/>
      <implements name="Infinity.Buffer"/>
      <constructor name="new" c:identifier="inf_text_fixline_buffer_new">
        <doc xml:space="preserve"
             filename="inf-text-fixline-buffer.c"
             line="1804">Creates a new #InfTextFixlineBuffer which keeps the number of trailing
lines of the given underlying buffer fixed to @n_lines.</doc>
        <source-position filename="inf-text-fixline-buffer.h" line="64"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-fixline-buffer.c"
               line="1813">A #InfTextFixlineBuffer.</doc>
          <type name="FixlineBuffer" c:type="InfTextFixlineBuffer*"/>
        </return-value>
        <parameters>
          <parameter name="io" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-fixline-buffer.c"
                 line="1806">A #InfIo object to schedule timeouts.</doc>
            <type name="Infinity.Io" c:type="InfIo*"/>
          </parameter>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-fixline-buffer.c"
                 line="1807">The underlying buffer for which to keep a fixed line count.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </parameter>
          <parameter name="n_lines" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-fixline-buffer.c"
                 line="1808">The number of lines to be kept fixed.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="buffer"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Buffer"/>
      </property>
      <property name="io"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Infinity.Io"/>
      </property>
      <property name="lines"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="FixlineBufferClass"
            c:type="InfTextFixlineBufferClass"
            glib:is-gtype-struct-for="FixlineBuffer">
      <doc xml:space="preserve"
           filename="inf-text-fixline-buffer.h"
           line="41">This structure does not contain any public fields.</doc>
      <source-position filename="inf-text-fixline-buffer.h" line="48"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function-macro name="INSERT_OPERATION"
                    c:identifier="INF_TEXT_INSERT_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-insert-operation.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="INSERT_OPERATION_GET_IFACE"
                    c:identifier="INF_TEXT_INSERT_OPERATION_GET_IFACE"
                    introspectable="0">
      <source-position filename="inf-text-insert-operation.h" line="33"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BUFFER"
                    c:identifier="INF_TEXT_IS_BUFFER"
                    introspectable="0">
      <source-position filename="inf-text-buffer.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DEFAULT_BUFFER"
                    c:identifier="INF_TEXT_IS_DEFAULT_BUFFER"
                    introspectable="0">
      <source-position filename="inf-text-default-buffer.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DEFAULT_BUFFER_CLASS"
                    c:identifier="INF_TEXT_IS_DEFAULT_BUFFER_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-default-buffer.h" line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DEFAULT_DELETE_OPERATION"
                    c:identifier="INF_TEXT_IS_DEFAULT_DELETE_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-default-delete-operation.h"
                       line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DEFAULT_DELETE_OPERATION_CLASS"
                    c:identifier="INF_TEXT_IS_DEFAULT_DELETE_OPERATION_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-default-delete-operation.h"
                       line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DEFAULT_INSERT_OPERATION"
                    c:identifier="INF_TEXT_IS_DEFAULT_INSERT_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-default-insert-operation.h"
                       line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DEFAULT_INSERT_OPERATION_CLASS"
                    c:identifier="INF_TEXT_IS_DEFAULT_INSERT_OPERATION_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-default-insert-operation.h"
                       line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DELETE_OPERATION"
                    c:identifier="INF_TEXT_IS_DELETE_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-delete-operation.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FIXLINE_BUFFER"
                    c:identifier="INF_TEXT_IS_FIXLINE_BUFFER"
                    introspectable="0">
      <source-position filename="inf-text-fixline-buffer.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FIXLINE_BUFFER_CLASS"
                    c:identifier="INF_TEXT_IS_FIXLINE_BUFFER_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-fixline-buffer.h" line="35"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_INSERT_OPERATION"
                    c:identifier="INF_TEXT_IS_INSERT_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-insert-operation.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_MOVE_OPERATION"
                    c:identifier="INF_TEXT_IS_MOVE_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-move-operation.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_MOVE_OPERATION_CLASS"
                    c:identifier="INF_TEXT_IS_MOVE_OPERATION_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-move-operation.h" line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_REMOTE_DELETE_OPERATION"
                    c:identifier="INF_TEXT_IS_REMOTE_DELETE_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-remote-delete-operation.h"
                       line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_REMOTE_DELETE_OPERATION_CLASS"
                    c:identifier="INF_TEXT_IS_REMOTE_DELETE_OPERATION_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-remote-delete-operation.h"
                       line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SESSION"
                    c:identifier="INF_TEXT_IS_SESSION"
                    introspectable="0">
      <source-position filename="inf-text-session.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SESSION_CLASS"
                    c:identifier="INF_TEXT_IS_SESSION_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-session.h" line="38"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_UNDO_GROUPING"
                    c:identifier="INF_TEXT_IS_UNDO_GROUPING"
                    introspectable="0">
      <source-position filename="inf-text-undo-grouping.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_UNDO_GROUPING_CLASS"
                    c:identifier="INF_TEXT_IS_UNDO_GROUPING_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-undo-grouping.h" line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USER"
                    c:identifier="INF_TEXT_IS_USER"
                    introspectable="0">
      <source-position filename="inf-text-user.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USER_CLASS"
                    c:identifier="INF_TEXT_IS_USER_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-user.h" line="33"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <interface name="InsertOperation"
               c:symbol-prefix="insert_operation"
               c:type="InfTextInsertOperation"
               glib:type-name="InfTextInsertOperation"
               glib:get-type="inf_text_insert_operation_get_type"
               glib:type-struct="InsertOperationInterface">
      <doc xml:space="preserve"
           filename="inf-text-operations.h"
           line="59">#InfTextInsertOperation is an opaque data type. You should only access it
via the public API functions.</doc>
      <source-position filename="inf-text-insert-operation.h" line="47"/>
      <prerequisite name="Infinity.AdoptedOperation"/>
      <virtual-method name="get_length" invoker="get_length">
        <doc xml:space="preserve"
             filename="inf-text-insert-operation.c"
             line="51">Returns the length of the text inserted by @operation.</doc>
        <source-position filename="inf-text-insert-operation.h" line="43"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-insert-operation.c"
               line="57">The length of @operation.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="53">A #InfTextInsertOperation.</doc>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_position" invoker="get_position">
        <doc xml:space="preserve"
             filename="inf-text-insert-operation.c"
             line="30">Returns the position at which @operation inserts text.</doc>
        <source-position filename="inf-text-insert-operation.h" line="41"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-insert-operation.c"
               line="36">The position to insert text.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="32">A #InfTextInsertOperation.</doc>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="transform_position" introspectable="0">
        <source-position filename="inf-text-insert-operation.h" line="45"/>
        <return-value>
          <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
        </return-value>
        <parameters>
          <instance-parameter name="op" transfer-ownership="none">
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </instance-parameter>
          <parameter name="position" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_length"
              c:identifier="inf_text_insert_operation_get_length">
        <doc xml:space="preserve"
             filename="inf-text-insert-operation.c"
             line="51">Returns the length of the text inserted by @operation.</doc>
        <source-position filename="inf-text-insert-operation.h" line="56"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-insert-operation.c"
               line="57">The length of @operation.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="53">A #InfTextInsertOperation.</doc>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_position"
              c:identifier="inf_text_insert_operation_get_position">
        <doc xml:space="preserve"
             filename="inf-text-insert-operation.c"
             line="30">Returns the position at which @operation inserts text.</doc>
        <source-position filename="inf-text-insert-operation.h" line="53"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-insert-operation.c"
               line="36">The position to insert text.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="32">A #InfTextInsertOperation.</doc>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="need_concurrency_id"
              c:identifier="inf_text_insert_operation_need_concurrency_id">
        <doc xml:space="preserve"
             filename="inf-text-insert-operation.c"
             line="72">Returns whether transforming @op against @against requires a concurrency ID
(see inf_adopted_operation_need_concurrency_id() for further information).</doc>
        <source-position filename="inf-text-insert-operation.h" line="59"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-insert-operation.c"
               line="80">Whether transforming @op against @against requires a concurrency
ID.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="op" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="74">A #InfTextInsertOperation.</doc>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </instance-parameter>
          <parameter name="against" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="75">Another #InfAdoptedOperation.</doc>
            <type name="Infinity.AdoptedOperation"
                  c:type="InfAdoptedOperation*"/>
          </parameter>
        </parameters>
      </method>
      <method name="transform_delete"
              c:identifier="inf_text_insert_operation_transform_delete">
        <doc xml:space="preserve"
             filename="inf-text-insert-operation.c"
             line="185">Returns a new operation that includes the effect of @against into
@operation.</doc>
        <source-position filename="inf-text-insert-operation.h" line="70"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-insert-operation.c"
               line="193">A new #InfAdoptedOperation.</doc>
          <type name="Infinity.AdoptedOperation"
                c:type="InfAdoptedOperation*"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="187">A #InfTextInsertOperation.</doc>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </instance-parameter>
          <parameter name="against" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="188">A #InfTextDeleteOperation.</doc>
            <type name="DeleteOperation" c:type="InfTextDeleteOperation*"/>
          </parameter>
        </parameters>
      </method>
      <method name="transform_insert"
              c:identifier="inf_text_insert_operation_transform_insert">
        <doc xml:space="preserve"
             filename="inf-text-insert-operation.c"
             line="105">Returns a new operation that includes the effect of @against into
@operation.</doc>
        <source-position filename="inf-text-insert-operation.h" line="63"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-insert-operation.c"
               line="116">A new #InfAdoptedOperation.</doc>
          <type name="Infinity.AdoptedOperation"
                c:type="InfAdoptedOperation*"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="107">A #InfTextInsertOperation.</doc>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </instance-parameter>
          <parameter name="against" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="108">Another #InfTextInsertOperation.</doc>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </parameter>
          <parameter name="op_lcs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="109">The given operation in a previous state, or %NULL.</doc>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </parameter>
          <parameter name="ag_lcs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="110">The @against operation in a previous state, or %NULL.</doc>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </parameter>
          <parameter name="cid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="111">The concurrency ID for the transformation.</doc>
            <type name="Infinity.AdoptedConcurrencyId"
                  c:type="InfAdoptedConcurrencyId"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="InsertOperationInterface"
            c:type="InfTextInsertOperationInterface"
            glib:is-gtype-struct-for="InsertOperation">
      <source-position filename="inf-text-insert-operation.h" line="47"/>
      <field name="parent">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_position">
        <callback name="get_position">
          <source-position filename="inf-text-insert-operation.h" line="41"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="36">The position to insert text.</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="operation" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-insert-operation.c"
                   line="32">A #InfTextInsertOperation.</doc>
              <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_length">
        <callback name="get_length">
          <source-position filename="inf-text-insert-operation.h" line="43"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-insert-operation.c"
                 line="57">The length of @operation.</doc>
            <type name="guint" c:type="guint"/>
          </return-value>
          <parameters>
            <parameter name="operation" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="inf-text-insert-operation.c"
                   line="53">A #InfTextInsertOperation.</doc>
              <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="transform_position" introspectable="0">
        <callback name="transform_position" introspectable="0">
          <source-position filename="inf-text-insert-operation.h" line="45"/>
          <return-value>
            <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
          </return-value>
          <parameters>
            <parameter name="op" transfer-ownership="none">
              <type name="InsertOperation" c:type="InfTextInsertOperation*"/>
            </parameter>
            <parameter name="position" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <function-macro name="MOVE_OPERATION"
                    c:identifier="INF_TEXT_MOVE_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-move-operation.h" line="28"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MOVE_OPERATION_CLASS"
                    c:identifier="INF_TEXT_MOVE_OPERATION_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-move-operation.h" line="29"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="MOVE_OPERATION_GET_CLASS"
                    c:identifier="INF_TEXT_MOVE_OPERATION_GET_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-move-operation.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="MoveOperation"
           c:symbol-prefix="move_operation"
           c:type="InfTextMoveOperation"
           parent="GObject.Object"
           glib:type-name="InfTextMoveOperation"
           glib:get-type="inf_text_move_operation_get_type"
           glib:type-struct="MoveOperationClass">
      <source-position filename="inf-text-move-operation.h" line="40"/>
      <implements name="Infinity.AdoptedOperation"/>
      <constructor name="new" c:identifier="inf_text_move_operation_new">
        <doc xml:space="preserve"
             filename="inf-text-move-operation.c"
             line="298">Creates a new move operation that, when applied, changes the caret and
selection of the applying user.</doc>
        <source-position filename="inf-text-move-operation.h" line="50"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-move-operation.c"
               line="307">A new #InfTextMoveOperation.</doc>
          <type name="MoveOperation" c:type="InfTextMoveOperation*"/>
        </return-value>
        <parameters>
          <parameter name="position" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="300">The position to place the user's caret at.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="301">The number of characters to select. Negative means selection
towards the beginning of the buffer.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="transform_delete"
                c:identifier="inf_text_move_operation_transform_delete">
        <doc xml:space="preserve"
             filename="inf-text-move-operation.c"
             line="434">Changes *@move_position and *@move_length so that they point to the same
region when @delete_length characters are deleted starting from
@delete_position.</doc>
        <source-position filename="inf-text-move-operation.h" line="67"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="delete_position" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="436">The position at which text is deleted.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="delete_length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="437">The number of deleted characters.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="move_position"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="438">Points to the character offset to which the caret
is moved.</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="move_length"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="440">Points to the number of characters selected.
Negative means towards the beginning.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </function>
      <function name="transform_insert"
                c:identifier="inf_text_move_operation_transform_insert">
        <doc xml:space="preserve"
             filename="inf-text-move-operation.c"
             line="356">Changes *@move_position and *@move_length so that they point to the same
region when @insert_length characters are inserted at @insert_position.

If text is inserted at the same position as @move_position, then
@move_position is kept at the position it currently is if @left_gravity is
%TRUE, otherwise it is shifted to the right.

If *@move_length is nonzero, then the selection length is never enlarged if
text is inserted at the selection bounds, not depending on whether
@left_gravity is set or not.</doc>
        <source-position filename="inf-text-move-operation.h" line="60"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="insert_position" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="358">The position at which text is inserted.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="insert_length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="359">The number of inserted characters.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="move_position"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="360">Points to the character offset to which the caret
is moved.</doc>
            <type name="guint" c:type="guint*"/>
          </parameter>
          <parameter name="move_length"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="362">Points to the number of characters selected.
Negative means towards the beginning.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="left_gravity" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="364">Whether the move position and length have left gravity.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_length"
              c:identifier="inf_text_move_operation_get_length"
              glib:get-property="length">
        <doc xml:space="preserve"
             filename="inf-text-move-operation.c"
             line="340">Returns the length to which @operation changes the user's selection.
Negative means selection towards the beginning of the buffer.</doc>
        <source-position filename="inf-text-move-operation.h" line="57"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-move-operation.c"
               line="347">The length of @operation.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="342">A #InfTextMoveOperation.</doc>
            <type name="MoveOperation" c:type="InfTextMoveOperation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_position"
              c:identifier="inf_text_move_operation_get_position"
              glib:get-property="position">
        <doc xml:space="preserve"
             filename="inf-text-move-operation.c"
             line="325">Returns the position at which @operation places the user's cursor.</doc>
        <source-position filename="inf-text-move-operation.h" line="54"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-move-operation.c"
               line="331">The position of @operation.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="operation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-move-operation.c"
                 line="327">A #InfTextMoveOperation.</doc>
            <type name="MoveOperation" c:type="InfTextMoveOperation*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="length"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_length"
                default-value="0">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="position"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_position"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="MoveOperationClass"
            c:type="InfTextMoveOperationClass"
            glib:is-gtype-struct-for="MoveOperation">
      <source-position filename="inf-text-move-operation.h" line="40"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="OperationError" c:type="InfTextOperationError">
      <doc xml:space="preserve"
           filename="inf-text-operations.h"
           line="30">Error codes that can occur when applying a #InfTextInsertOperation,
#InfTextDeleteOperation or #InfTextMoveOperation to the buffer.</doc>
      <source-position filename="inf-text-operations.h" line="49"/>
      <member name="invalid_insert"
              value="0"
              c:identifier="INF_TEXT_OPERATION_ERROR_INVALID_INSERT">
        <doc xml:space="preserve"
             filename="inf-text-operations.h"
             line="32">A #InfTextInsertOperation
attempted to insert text after the end of the buffer.</doc>
      </member>
      <member name="invalid_delete"
              value="1"
              c:identifier="INF_TEXT_OPERATION_ERROR_INVALID_DELETE">
        <doc xml:space="preserve"
             filename="inf-text-operations.h"
             line="34">A #InfTextDeleteOperation
attempted to delete text from after the end of the buffer.</doc>
      </member>
      <member name="invalid_move"
              value="2"
              c:identifier="INF_TEXT_OPERATION_ERROR_INVALID_MOVE">
        <doc xml:space="preserve"
             filename="inf-text-operations.h"
             line="36">A #InfTextMoveOperation attempted
to move the cursor of a user behind the end of the buffer.</doc>
      </member>
      <member name="failed"
              value="3"
              c:identifier="INF_TEXT_OPERATION_ERROR_FAILED">
        <doc xml:space="preserve"
             filename="inf-text-operations.h"
             line="38">No further specified error code.</doc>
      </member>
    </enumeration>
    <function-macro name="REMOTE_DELETE_OPERATION"
                    c:identifier="INF_TEXT_REMOTE_DELETE_OPERATION"
                    introspectable="0">
      <source-position filename="inf-text-remote-delete-operation.h"
                       line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="REMOTE_DELETE_OPERATION_CLASS"
                    c:identifier="INF_TEXT_REMOTE_DELETE_OPERATION_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-remote-delete-operation.h"
                       line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="REMOTE_DELETE_OPERATION_GET_CLASS"
                    c:identifier="INF_TEXT_REMOTE_DELETE_OPERATION_GET_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-remote-delete-operation.h"
                       line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="RemoteDeleteOperation"
           c:symbol-prefix="remote_delete_operation"
           c:type="InfTextRemoteDeleteOperation"
           parent="GObject.Object"
           glib:type-name="InfTextRemoteDeleteOperation"
           glib:get-type="inf_text_remote_delete_operation_get_type"
           glib:type-struct="RemoteDeleteOperationClass">
      <source-position filename="inf-text-remote-delete-operation.h"
                       line="42"/>
      <implements name="DeleteOperation"/>
      <implements name="Infinity.AdoptedOperation"/>
      <constructor name="new"
                   c:identifier="inf_text_remote_delete_operation_new">
        <doc xml:space="preserve"
             filename="inf-text-remote-delete-operation.c"
             line="739">Creates a new delete operation that, when applied, deletes @length
characters starting from position @position. Note that this operation is
not reversible because it does not know the text to delete and is therefore
only used to transmit a delete operation through the network to reduce
bandwidth usage. The remote part can then reconstruct the deleted text
using inf_adopted_operation_apply_transformed().

However, it is easier to just use #InfTextDefaultDeleteOperation if you
want the operation to be reversible.</doc>
        <source-position filename="inf-text-remote-delete-operation.h"
                         line="52"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-remote-delete-operation.c"
               line="754">A new #InfTextRemoteDeleteOperation.</doc>
          <type name="RemoteDeleteOperation"
                c:type="InfTextRemoteDeleteOperation*"/>
        </return-value>
        <parameters>
          <parameter name="position" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-remote-delete-operation.c"
                 line="741">The position at which to delete text.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-remote-delete-operation.c"
                 line="742">The number of characters to delete.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="length"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="position"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
    </class>
    <record name="RemoteDeleteOperationClass"
            c:type="InfTextRemoteDeleteOperationClass"
            glib:is-gtype-struct-for="RemoteDeleteOperation">
      <source-position filename="inf-text-remote-delete-operation.h"
                       line="42"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function-macro name="SESSION"
                    c:identifier="INF_TEXT_SESSION"
                    introspectable="0">
      <source-position filename="inf-text-session.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SESSION_CLASS"
                    c:identifier="INF_TEXT_SESSION_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-session.h" line="36"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SESSION_GET_CLASS"
                    c:identifier="INF_TEXT_SESSION_GET_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-session.h" line="39"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Session"
           c:symbol-prefix="session"
           c:type="InfTextSession"
           parent="Infinity.AdoptedSession"
           glib:type-name="InfTextSession"
           glib:get-type="inf_text_session_get_type"
           glib:type-struct="SessionClass">
      <source-position filename="inf-text-session.h" line="52"/>
      <implements name="Infinity.CommunicationObject"/>
      <constructor name="new" c:identifier="inf_text_session_new">
        <doc xml:space="preserve"
             filename="inf-text-session.c"
             line="1807">Creates a new #InfTextSession. The communication manager is used to send
and receive requests from subscription and synchronization. @buffer will be
set to be initially empty if the session is initially synchronized
(see below). @io is required to trigger timeouts.

If @status is %INF_SESSION_PRESYNC or %INF_SESSION_SYNCHRONIZING, then the
session will initially be sychronized, meaning the initial content is
retrieved from @sync_connection. If you are subscribed to the session, set
the subscription group via inf_session_set_subscription_group().</doc>
        <source-position filename="inf-text-session.h" line="62"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-session.c"
               line="1828">A new #InfTextSession.</doc>
          <type name="Session" c:type="InfTextSession*"/>
        </return-value>
        <parameters>
          <parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1809">A #InfCommunicationManager.</doc>
            <type name="Infinity.CommunicationManager"
                  c:type="InfCommunicationManager*"/>
          </parameter>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1810">An initial #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </parameter>
          <parameter name="io" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1811">A #InfIo object.</doc>
            <type name="Infinity.Io" c:type="InfIo*"/>
          </parameter>
          <parameter name="status" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1812">The initial status of the session.</doc>
            <type name="Infinity.SessionStatus" c:type="InfSessionStatus"/>
          </parameter>
          <parameter name="sync_group"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1813">A group in which the session is synchronized.
Ignored if @status is %INF_SESSION_RUNNING.</doc>
            <type name="Infinity.CommunicationGroup"
                  c:type="InfCommunicationGroup*"/>
          </parameter>
          <parameter name="sync_connection"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1815">A connection to synchronize the session
from. Ignored if @status is %INF_SESSION_RUNNING.</doc>
            <type name="Infinity.XmlConnection" c:type="InfXmlConnection*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_user_table"
                   c:identifier="inf_text_session_new_with_user_table">
        <doc xml:space="preserve"
             filename="inf-text-session.c"
             line="1867">Creates a new #InfTextSession. The connection manager is used to send and
receive requests from subscription and synchronization. @buffer will be
set to be initially empty if the session is initially synchronized
(see below). @io is required to trigger timeouts.

If @status is %INF_SESSION_PRESYNC or %INF_SESSION_SYNCHRONIZING, then the
session will initially be sychronized, meaning the initial content is
retrieved from @sync_connection. If you are subscribed to the session, set
the subscription group via inf_session_set_subscription_group().

@user_table is used as an initial user table. The user table should only
contain unavailable users, if any, that may rejoin during the session. If
there was an available user in the user table, it would probably belong
to another session, but different sessions cannot share the same user
object.</doc>
        <source-position filename="inf-text-session.h" line="70"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-session.c"
               line="1895">A new #InfTextSession.</doc>
          <type name="Session" c:type="InfTextSession*"/>
        </return-value>
        <parameters>
          <parameter name="manager" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1869">A #InfCommunicationManager.</doc>
            <type name="Infinity.CommunicationManager"
                  c:type="InfCommunicationManager*"/>
          </parameter>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1870">An initial #InfTextBuffer.</doc>
            <type name="Buffer" c:type="InfTextBuffer*"/>
          </parameter>
          <parameter name="io" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1871">A #InfIo object.</doc>
            <type name="Infinity.Io" c:type="InfIo*"/>
          </parameter>
          <parameter name="user_table" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1872">A #InfUserTable.</doc>
            <type name="Infinity.UserTable" c:type="InfUserTable*"/>
          </parameter>
          <parameter name="status" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1873">The initial status for the session.</doc>
            <type name="Infinity.SessionStatus" c:type="InfSessionStatus"/>
          </parameter>
          <parameter name="sync_group"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1874">A group in which the session is synchronized.
Ignored if @status is %INF_SESSION_RUNNING.</doc>
            <type name="Infinity.CommunicationGroup"
                  c:type="InfCommunicationGroup*"/>
          </parameter>
          <parameter name="sync_connection"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1876">A connection to synchronize the session
from. Ignored if @status is %INF_SESSION_RUNNING.</doc>
            <type name="Infinity.XmlConnection" c:type="InfXmlConnection*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="join_user" c:identifier="inf_text_session_join_user">
        <doc xml:space="preserve"
             filename="inf-text-session.c"
             line="2012">This functions creates a user join request for an #InfTextSession. This is
a shortcut for inf_session_proxy_join_user().</doc>
        <source-position filename="inf-text-session.h" line="88"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-session.c"
               line="2028">A #InfRequest, or %NULL.</doc>
          <type name="Infinity.Request" c:type="InfRequest*"/>
        </return-value>
        <parameters>
          <parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="2014">A #InfSessionProxy with a #InfTextSession session.</doc>
            <type name="Infinity.SessionProxy" c:type="InfSessionProxy*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="2015">The name of the user to join.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="status" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="2016">The initial status of the user to join. Must not be
@INF_USER_UNAVAILABLE.</doc>
            <type name="Infinity.UserStatus" c:type="InfUserStatus"/>
          </parameter>
          <parameter name="hue" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="2018">The user color of the user to join.</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
          <parameter name="caret_position" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="2019">The initial position of the new user's cursor.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="selection_length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="2020">The initial length of the new user's selection.</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="async"
                     closure="7">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="2021">Function to call after completion of the request,
or %NULL.</doc>
            <type name="Infinity.RequestFunc" c:type="InfRequestFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="2023">Additional data to pass to @func.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <method name="flush_requests_for_user"
              c:identifier="inf_text_session_flush_requests_for_user">
        <doc xml:space="preserve"
             filename="inf-text-session.c"
             line="1975">This function sends all pending requests for @user immediately. Requests
that modify the buffer are not queued normally, but cursor movement
requests are delayed in case are issued frequently, to save bandwidth.

The main purpose of this function is to send all pending requests before
changing a user's status to inactive or unavailable since inactive users
are automatically activated as soon as they issue a request.

TODO: We should probably detect this automatically, without requiring
people to call this function, i.e. flush requests for local users just
before they become inactive.

@user must have the %INF_USER_LOCAL flag set.</doc>
        <source-position filename="inf-text-session.h" line="84"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1977">A #InfTextSession.</doc>
            <type name="Session" c:type="InfTextSession*"/>
          </instance-parameter>
          <parameter name="user" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1978">The #InfTextUser for which to flush messages.</doc>
            <type name="User" c:type="InfTextUser*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_user_color"
              c:identifier="inf_text_session_set_user_color">
        <doc xml:space="preserve"
             filename="inf-text-session.c"
             line="1940">Changes the user color of @user. @user must have the %INF_USER_LOCAL flag
set.</doc>
        <source-position filename="inf-text-session.h" line="79"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1942">A #InfTextSession.</doc>
            <type name="Session" c:type="InfTextSession*"/>
          </instance-parameter>
          <parameter name="user" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1943">A local #InfTextUser from @session's user table.</doc>
            <type name="User" c:type="InfTextUser*"/>
          </parameter>
          <parameter name="hue" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-session.c"
                 line="1944">New hue value for @user's color. Ranges from 0.0 (red) to 1.0 (red).</doc>
            <type name="gdouble" c:type="gdouble"/>
          </parameter>
        </parameters>
      </method>
      <property name="caret-update-interval"
                writable="1"
                construct="1"
                transfer-ownership="none"
                default-value="500">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent">
        <type name="Infinity.AdoptedSession" c:type="InfAdoptedSession"/>
      </field>
    </class>
    <record name="SessionClass"
            c:type="InfTextSessionClass"
            glib:is-gtype-struct-for="Session">
      <source-position filename="inf-text-session.h" line="52"/>
      <field name="parent_class">
        <type name="Infinity.AdoptedSessionClass"
              c:type="InfAdoptedSessionClass"/>
      </field>
    </record>
    <enumeration name="SessionError" c:type="InfTextSessionError">
      <source-position filename="inf-text-session.h" line="48"/>
      <member name="invalid_hue"
              value="0"
              c:identifier="INF_TEXT_SESSION_ERROR_INVALID_HUE">
      </member>
      <member name="failed"
              value="1"
              c:identifier="INF_TEXT_SESSION_ERROR_FAILED">
      </member>
    </enumeration>
    <function-macro name="UNDO_GROUPING"
                    c:identifier="INF_TEXT_UNDO_GROUPING"
                    introspectable="0">
      <source-position filename="inf-text-undo-grouping.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="UNDO_GROUPING_CLASS"
                    c:identifier="INF_TEXT_UNDO_GROUPING_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-undo-grouping.h" line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="UNDO_GROUPING_GET_CLASS"
                    c:identifier="INF_TEXT_UNDO_GROUPING_GET_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-undo-grouping.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USER"
                    c:identifier="INF_TEXT_USER"
                    introspectable="0">
      <source-position filename="inf-text-user.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USER_CLASS"
                    c:identifier="INF_TEXT_USER_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-user.h" line="31"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USER_GET_CLASS"
                    c:identifier="INF_TEXT_USER_GET_CLASS"
                    introspectable="0">
      <source-position filename="inf-text-user.h" line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="UndoGrouping"
           c:symbol-prefix="undo_grouping"
           c:type="InfTextUndoGrouping"
           parent="Infinity.AdoptedUndoGrouping"
           glib:type-name="InfTextUndoGrouping"
           glib:get-type="inf_text_undo_grouping_get_type"
           glib:type-struct="UndoGroupingClass">
      <doc xml:space="preserve"
           filename="inf-text-undo-grouping.h"
           line="49">#InfTextUndoGrouping is an opaque data type. You should only access it via
the public API functions.</doc>
      <source-position filename="inf-text-undo-grouping.h" line="47"/>
      <constructor name="new" c:identifier="inf_text_undo_grouping_new">
        <doc xml:space="preserve"
             filename="inf-text-undo-grouping.c"
             line="323">Creates a new #InfTextUndoGrouping.</doc>
        <source-position filename="inf-text-undo-grouping.h" line="64"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-undo-grouping.c"
               line="328">A new #InfTextUndoGrouping. To be freed with
g_object_unref().</doc>
          <type name="UndoGrouping" c:type="InfTextUndoGrouping*"/>
        </return-value>
      </constructor>
      <field name="parent" readable="0" private="1">
        <type name="Infinity.AdoptedUndoGrouping"
              c:type="InfAdoptedUndoGrouping"/>
      </field>
    </class>
    <record name="UndoGroupingClass"
            c:type="InfTextUndoGroupingClass"
            glib:is-gtype-struct-for="UndoGrouping">
      <source-position filename="inf-text-undo-grouping.h" line="47"/>
      <field name="parent_class" readable="0" private="1">
        <type name="Infinity.AdoptedUndoGroupingClass"
              c:type="InfAdoptedUndoGroupingClass"/>
      </field>
    </record>
    <class name="User"
           c:symbol-prefix="user"
           c:type="InfTextUser"
           parent="Infinity.AdoptedUser"
           glib:type-name="InfTextUser"
           glib:get-type="inf_text_user_get_type"
           glib:type-struct="UserClass">
      <source-position filename="inf-text-user.h" line="46"/>
      <constructor name="new" c:identifier="inf_text_user_new">
        <doc xml:space="preserve"
             filename="inf-text-user.c"
             line="204">Creates a new #InfTextUser. @id should be unique for all users working
together. #InfUserTable will refuse to add users with duplicate id. If
@vector is %NULL, then the vector with all components zero is used.</doc>
        <source-position filename="inf-text-user.h" line="56"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="inf-text-user.c"
               line="215">A new #InfTextUser. Free with g_object_unref()
when no longer needed.</doc>
          <type name="User" c:type="InfTextUser*"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-user.c"
                 line="206">The user ID for this user.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-user.c"
                 line="207">The user's name.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="vector"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="inf-text-user.c"
                 line="208">The state at which the user is at, or %NULL.</doc>
            <type name="Infinity.AdoptedStateVector"
                  c:type="InfAdoptedStateVector*"/>
          </parameter>
          <parameter name="hue" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-user.c"
                 line="209">The hue value of the user's color.</doc>
            <type name="gdouble" c:type="double"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="selection_changed">
        <source-position filename="inf-text-user.h" line="42"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="user" transfer-ownership="none">
            <type name="User" c:type="InfTextUser*"/>
          </instance-parameter>
          <parameter name="position" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="by_request" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_caret_position"
              c:identifier="inf_text_user_get_caret_position"
              glib:get-property="caret-position">
        <doc xml:space="preserve"
             filename="inf-text-user.c"
             line="238">Returns the position of @user's caret.</doc>
        <source-position filename="inf-text-user.h" line="62"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-user.c"
               line="244">@user's caret position.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="user" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-user.c"
                 line="240">A #InfTextUser.</doc>
            <type name="User" c:type="InfTextUser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_hue"
              c:identifier="inf_text_user_get_hue"
              glib:get-property="hue">
        <doc xml:space="preserve"
             filename="inf-text-user.c"
             line="304">Returns the hue of the user's color as a double ranging from 0 to 1.
The other components (saturation and lightness) are not specific to the
user and may be chosen indivudually to optimize the actual visual display.</doc>
        <source-position filename="inf-text-user.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-user.c"
               line="312">The hue of the @user's color.</doc>
          <type name="gdouble" c:type="gdouble"/>
        </return-value>
        <parameters>
          <instance-parameter name="user" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-user.c"
                 line="306">A #InfTextUser.</doc>
            <type name="User" c:type="InfTextUser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_selection_length"
              c:identifier="inf_text_user_get_selection_length"
              glib:get-property="selection-length">
        <doc xml:space="preserve"
             filename="inf-text-user.c"
             line="253">Returns the number of characters this user has selected, starting from
the caret position. Negative number mean selection towards the beginning
of the buffer.</doc>
        <source-position filename="inf-text-user.h" line="65"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-user.c"
               line="261">@user's selection length in characters.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="user" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-user.c"
                 line="255">A #InfTextUser.</doc>
            <type name="User" c:type="InfTextUser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_selection" c:identifier="inf_text_user_set_selection">
        <doc xml:space="preserve"
             filename="inf-text-user.c"
             line="270">Changes @user's selection (i.e. caret position and selection length). The
@by_request parameter should be set to %TRUE if the selection change was
requested explicitly, for example by the user actively moving the cursor
using the mouse or the keyboard. If the cursor position changes only
because another user inserted text at a position before the user's cursor
and this results in a change of the selection position, the @by_request
parameter should be set to %FALSE.</doc>
        <source-position filename="inf-text-user.h" line="68"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="user" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-user.c"
                 line="272">A #InfTextUser.</doc>
            <type name="User" c:type="InfTextUser*"/>
          </instance-parameter>
          <parameter name="position" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-user.c"
                 line="273">The new position for the user's caret.</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-user.c"
                 line="274">The number of characters to select. Negative numbers mean
selection towards the beginning.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="by_request" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="inf-text-user.c"
                 line="276">%TRUE if explicitly requested or %FALSE when just an effect
of another operation.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="caret-position"
                writable="1"
                construct="1"
                transfer-ownership="none"
                getter="get_caret_position"
                default-value="0">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="hue"
                writable="1"
                construct="1"
                transfer-ownership="none"
                getter="get_hue"
                default-value="0.000000">
        <type name="gdouble" c:type="gdouble"/>
      </property>
      <property name="selection-length"
                writable="1"
                construct="1"
                transfer-ownership="none"
                getter="get_selection_length"
                default-value="0">
        <type name="gint" c:type="gint"/>
      </property>
      <field name="parent">
        <type name="Infinity.AdoptedUser" c:type="InfAdoptedUser"/>
      </field>
      <glib:signal name="selection-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="p1" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="UserClass"
            c:type="InfTextUserClass"
            glib:is-gtype-struct-for="User">
      <source-position filename="inf-text-user.h" line="46"/>
      <field name="parent_class">
        <type name="Infinity.AdoptedUserClass" c:type="InfAdoptedUserClass"/>
      </field>
      <field name="selection_changed">
        <callback name="selection_changed">
          <source-position filename="inf-text-user.h" line="42"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="user" transfer-ownership="none">
              <type name="User" c:type="InfTextUser*"/>
            </parameter>
            <parameter name="position" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="length" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="by_request" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <function name="filesystem_format_read"
              c:identifier="inf_text_filesystem_format_read"
              throws="1">
      <doc xml:space="preserve"
           filename="inf-text-filesystem-format.c"
           line="284">Reads a text session from @path in @storage. The file is expected to have
been saved with inf_text_filesystem_format_write() before. The @user_table
parameter should be an empty user table that will be used for the session,
and the @buffer parameter should be an empty #InfTextBuffer, and the
document will be written into this buffer. If the function succeeds, the
user table and buffer can be used to create an #InfTextSession with
inf_text_session_new_with_user_table(). If the function fails, %FALSE is
returned and @error is set.</doc>
      <source-position filename="inf-text-filesystem-format.h" line="49"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="inf-text-filesystem-format.c"
             line="301">%TRUE on success or %FALSE on error.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="storage" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-filesystem-format.c"
               line="286">A #InfdFilesystemStorage.</doc>
          <type name="Infinityd.FilesystemStorage"
                c:type="InfdFilesystemStorage*"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-filesystem-format.c"
               line="287">Storage path to retrieve the session from.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="user_table" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-filesystem-format.c"
               line="288">An empty #InfUserTable to use as the new session's user table.</doc>
          <type name="Infinity.UserTable" c:type="InfUserTable*"/>
        </parameter>
        <parameter name="buffer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-filesystem-format.c"
               line="289">An empty #InfTextBuffer to use as the new session's buffer.</doc>
          <type name="Buffer" c:type="InfTextBuffer*"/>
        </parameter>
      </parameters>
    </function>
    <function name="filesystem_format_write"
              c:identifier="inf_text_filesystem_format_write"
              throws="1">
      <doc xml:space="preserve"
           filename="inf-text-filesystem-format.c"
           line="430">Writes the given user table and buffer into the filesystem storage at
@path. If successful, the session can then be read back with
inf_text_filesystem_format_read(). If the function fails, %FALSE is
returned and @error is set.</doc>
      <source-position filename="inf-text-filesystem-format.h" line="56"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="inf-text-filesystem-format.c"
             line="443">%TRUE on success or %FALSE on error.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="storage" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-filesystem-format.c"
               line="432">A #InfdFilesystemStorage.</doc>
          <type name="Infinityd.FilesystemStorage"
                c:type="InfdFilesystemStorage*"/>
        </parameter>
        <parameter name="path" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-filesystem-format.c"
               line="433">Storage path where to write the session to.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="user_table" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-filesystem-format.c"
               line="434">The #InfUserTable to write.</doc>
          <type name="Infinity.UserTable" c:type="InfUserTable*"/>
        </parameter>
        <parameter name="buffer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="inf-text-filesystem-format.c"
               line="435">The #InfTextBuffer to write.</doc>
          <type name="Buffer" c:type="InfTextBuffer*"/>
        </parameter>
      </parameters>
    </function>
    <docsection name="inf-text-buffer">
      <doc xml:space="preserve"
           filename="inf-text-buffer.c"
           line="20">#InfTextBuffer is an interface on top of #InfBuffer which represents a
text buffer in a similar way as #GtkTextBuffer. #InfTextBuffer can be used
as the buffer of an #InfTextSession, allowing the session to insert text
written by remote users and access text written by local users and send
it to everyone else.

See #InfTextDefaultBuffer for a simple implementation based on
#InfTextChunk. However, in GUI collaborative editing clients this interface
should be implemented in a more sophisticated way, such that the text of
a document is not stored twice in memory. #InfTextGtkBuffer does this for
GTK+ based user interfaces.</doc>
    </docsection>
    <docsection name="inf-text-chunk">
      <doc xml:space="preserve"
           filename="inf-text-chunk.c"
           line="20">#InfTextChunk represents a chunk of text where different parts of it can
be written by different authors. The #InfTextChunk API can be used like a
normal string API, except that apart from the text itself it also stores
the author information.

An #InfTextChunk is made up of segments, where each segment represents a
contiguous piece of text which is written by the same user. The
#InfTextChunkIter functionality can be used to iterate over the segments
of a chunk.

The #InfTextChunk API works with characters, not bytes, i.e. all offsets
are given in number of characters. This ensures that unicode strings
cannot be torn apart in the middle of a multibyte sequence. The encoding
of an #InfTextChunk is not fixed, but it can be freely chosen.
#InfTextChunk then uses iconv to convert between bytes and character
offsets where necessary. For a small set of selected encodings which are
very popular, most notably UTF-8, there exist more optimized code paths to
do the conversion.</doc>
    </docsection>
    <docsection name="inf-text-delete-operation">
      <doc xml:space="preserve"
           filename="inf-text-delete-operation.c"
           line="20">#InfTextDeleteOperation is an interface for an operation removing text
from the document. It implements the transformation logic for
transformation against other delete operations or insert operations.

This interface does not make any assumption on what kind of text is
removed, it works only with character offsets and lengths. This information
is enough to perform transformation of this operation or other operations
against this operation. Whether the actual operation only knows about the
offsets, too, or actually knows the text that is being erased (and if so,
in what representation), is up to the implementation.</doc>
    </docsection>
    <docsection name="inf-text-filesystem-format">
      <doc xml:space="preserve"
           filename="inf-text-filesystem-format.c"
           line="20">The functions in this section are utility functions that can be used when
implementing a #InfdNotePlugin to handle #InfTextSession&lt;!-- --&gt;s. These
functions implement reading and writing the content of an #InfTextSession
to an XML file in the storage.</doc>
    </docsection>
    <docsection name="inf-text-fixline-buffer">
      <doc xml:space="preserve"
           filename="inf-text-fixline-buffer.c"
           line="20">This class is a wrapper around another #InfTextBuffer. It makes sure that
the number of trailing empty lines in the underlying buffer is always fixed
to a given number while it itself keeps track of the missing or additional
lines. This can be used for example to keep the number of empty lines
fixed on the client side even if lines are added and removed within a
text session.</doc>
    </docsection>
    <docsection name="inf-text-undo-grouping">
      <doc xml:space="preserve"
           filename="inf-text-undo-grouping.c"
           line="20">#InfTextUndoGrouping handles undo grouping for text operations. It makes
sure many insert or delete operations occuring in a row can be undone
simultaneousely, taking into account that other users might have issued
requests inbetween.

Using this class you don't need to connect to
#InfAdoptedUndoGrouping::group-requests to perform the grouping.</doc>
    </docsection>
  </namespace>
</repository>
