<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:doc="http://www.gtk.org/introspection/doc/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GLib" version="2.0"/>
  <include name="GModule" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <c:include name="mirage/mirage.h"/>
  <doc:format name="unknown"/>
  <namespace name="Mirage"
             version="3.2"
             shared-library="libmirage.so.11"
             c:identifier-prefixes="Mirage"
             c:symbol-prefixes="mirage">
    <function-macro name="CAST_DATA"
                    c:identifier="MIRAGE_CAST_DATA"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.h"
           line="35">A macro for easy retrieval of data from (unsigned integer) buffer. Mostly to
be used in binary image parsers, for example, to retrieve guint32 or guint16
value from buffer.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="45"/>
      <parameters>
        <parameter name="buf">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.h"
               line="37">buffer to get data from</doc>
        </parameter>
        <parameter name="off">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.h"
               line="38">offset in buffer at which to get data</doc>
        </parameter>
        <parameter name="type">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.h"
               line="39">data type (i.e. 'guint64')</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CAST_PTR"
                    c:identifier="MIRAGE_CAST_PTR"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.h"
           line="47">A macro for easy placing of pointers within (unsigned integer) buffer. Mostly
to be used in binary image parsers, for example, to retrieve a string or a
structure from buffer.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="57"/>
      <parameters>
        <parameter name="buf">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.h"
               line="49">buffer to place pointer in</doc>
        </parameter>
        <parameter name="off">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.h"
               line="50">offset in buffer at which to place pointer</doc>
        </parameter>
        <parameter name="type">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.h"
               line="51">pointer type (i.e. 'gchar *')</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CDTEXT_CODER"
                    c:identifier="MIRAGE_CDTEXT_CODER"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="56"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CDTEXT_CODER_CLASS"
                    c:identifier="MIRAGE_CDTEXT_CODER_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="57"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CDTEXT_CODER_GET_CLASS"
                    c:identifier="MIRAGE_CDTEXT_CODER_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="60"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CONTEXT"
                    c:identifier="MIRAGE_CONTEXT"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/context.h"
                       line="49"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CONTEXTUAL"
                    c:identifier="MIRAGE_CONTEXTUAL"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                       line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CONTEXTUAL_GET_INTERFACE"
                    c:identifier="MIRAGE_CONTEXTUAL_GET_INTERFACE"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                       line="35"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CONTEXT_CLASS"
                    c:identifier="MIRAGE_CONTEXT_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/context.h"
                       line="50"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CONTEXT_GET_CLASS"
                    c:identifier="MIRAGE_CONTEXT_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/context.h"
                       line="53"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="CdTextCoder"
           c:symbol-prefix="cdtext_coder"
           c:type="MirageCdTextCoder"
           parent="Object"
           glib:type-name="MirageCdTextCoder"
           glib:get-type="mirage_cdtext_coder_get_type"
           glib:type-struct="CdTextCoderClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
           line="66">All the fields in the &lt;structname&gt;MirageCdTextCoder&lt;/structname&gt;
structure are private to the #MirageCdTextCoder implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="90"/>
      <implements name="Contextual"/>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="CdTextCoderPrivate" c:type="MirageCdTextCoderPrivate*"/>
      </field>
    </class>
    <record name="CdTextCoderClass"
            c:type="MirageCdTextCoderClass"
            glib:is-gtype-struct-for="CdTextCoder">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
           line="81">The class structure for the &lt;structname&gt;MirageCdTextCoder&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="90"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
             line="83">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
    </record>
    <record name="CdTextCoderPrivate"
            c:type="MirageCdTextCoderPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="64"/>
    </record>
    <callback name="CdTextDataCallback" c:type="MirageCdTextDataCallback">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
           line="28">Specifies the type of callback functions that can be passed to
mirage_cdtext_decoder_get_data().

@code is the language code assigned to the block which data belongs to.
@track is the number of track to which data belongs to, or 0 if data is global
(belongs to session/disc). @data is buffer containing data and @data_len
is the length of data in the buffer.

@data points to buffer that belongs to decoder and therefore should not be freed.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="49"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
             line="47">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="code" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
               line="30">language code</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
               line="31">pack type</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="track" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
               line="32">track number</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
               line="33">data</doc>
          <array length="4" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="data_len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
               line="34">data length</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="5">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
               line="35">user data</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="Context"
           c:symbol-prefix="context"
           c:type="MirageContext"
           parent="GObject.Object"
           glib:type-name="MirageContext"
           glib:get-type="mirage_context_get_type"
           glib:type-struct="ContextClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/context.h"
           line="59">All the fields in the &lt;structname&gt;MirageContext&lt;/structname&gt;
structure are private to the #MirageContext implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/context.h"
                       line="83"/>
      <method name="clear_options" c:identifier="mirage_context_clear_options">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="220">Clears all the options from the context.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="222">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="create_input_stream"
              c:identifier="mirage_context_create_input_stream"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="427">Opens a file pointed to by @filename and creates a chain of filter
streams on top of it.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="106"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/context.c"
               line="436">on success, an object implementing #MirageStream
interface is returned, which can be used to access data stored in file.
On failure, %NULL is returned. The reference to the object should be
released using g_object_unref() when no longer needed.</doc>
          <type name="Stream" c:type="MirageStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="429">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="430">filename to create input stream on</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_output_stream"
              c:identifier="mirage_context_create_output_stream"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="521">Opens a file pointed to by @filename and optionally creates a chain
of filter streams on top of it.

The chain of filters is described by @filter-chain, which is a
NULL-terminated array of strings corresponding to type names of
filters, with the last filter being the one on the top. Filters are
passed by their name types because their actual type values are
determined when the plugins are loaded. If invalid filter is specified
in the chain, this function will fail. It is the caller's responsibility
to construct a valid filter chain.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="107"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/context.c"
               line="539">on success, an object implementing #MirageStream
interface is returned, which can be used to write data to file.
On failure, %NULL is returned. The reference to the object should be
released using g_object_unref() when no longer needed.</doc>
          <type name="Stream" c:type="MirageStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="523">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="524">filename to create output stream on</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="filter_chain"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="525">NULL-terminated array of strings describing types of filters to include in the filter chain, or %NULL</doc>
            <array c:type="const gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="get_debug_domain"
              c:identifier="mirage_context_get_debug_domain">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="147">Retrieves debug context's domain name.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="92"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/context.c"
               line="153">pointer to buffer containing the domain name, or %NULL. The buffer belongs to the object and should not be modified.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="149">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_debug_mask"
              c:identifier="mirage_context_get_debug_mask">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="202">Retrieves debug context's debug mask.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="89"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/context.c"
               line="208">debug context's debug mask</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="204">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_debug_name"
              c:identifier="mirage_context_get_debug_name">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="175">Retrieves debug context's name.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="95"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/context.c"
               line="181">pointer to buffer containing the name, or %NULL. The buffer belongs to the object and should not be modified.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="177">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_option" c:identifier="mirage_context_get_option">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="247">Retrieves option named @name from the context.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="99"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/context.c"
               line="254">pointer to a #GVariant containing the option
value on success, %NULL on failure.</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="249">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="250">option name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_image"
              c:identifier="mirage_context_load_image"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="331">Creates a #MirageDisc object representing image stored in @filenames. @filenames
is a NULL-terminated list of filenames containing image data. The function tries
to find a parser that can handle give filename(s) and uses it to load the data
into disc object.

If multiple filenames are provided and parser supports only single-file images,
only the first filename is used.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="104"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/context.c"
               line="345">a #MirageDisc object on success, %NULL on failure. The reference to
the object should be released using g_object_unref() when no longer needed.</doc>
          <type name="Disc" c:type="MirageDisc*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="333">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
          <parameter name="filenames" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="334">filename(s)</doc>
            <array c:type="gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="obtain_password"
              c:identifier="mirage_context_obtain_password"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="296">Obtains password string, using the #MiragePasswordFunction callback
that was provided via mirage_context_set_password_function().</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="102"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/context.c"
               line="304">password string on success, %NULL on failure. The string should be
freed with g_free() when no longer needed.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="298">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_debug_domain"
              c:identifier="mirage_context_set_debug_domain">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="133">Sets debug context's domain name to @domain.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="91"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="135">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
          <parameter name="domain" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="136">domain name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_debug_mask"
              c:identifier="mirage_context_set_debug_mask">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="189">Sets debug context's debug mask.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="191">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
          <parameter name="debug_mask" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="192">debug mask</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_debug_name"
              c:identifier="mirage_context_set_debug_name">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="161">Sets debug context's name to @name.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="94"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="163">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="164">name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_option" c:identifier="mirage_context_set_option">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="232">Sets an option to the context. If option with the specified name already
exists, it is replaced.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="234">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="235">option name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="236">option value</doc>
            <type name="GLib.Variant" c:type="GVariant*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_password_function"
              c:identifier="mirage_context_set_password_function">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.c"
             line="270">Sets the password function to context. The function is used by parsers
that support encrypted images to obtain password for unlocking such images.

Both @func and @user_data can be %NULL; in that case the appropriate setting
will be reset.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/context.h"
                         line="101"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="272">a #MirageContext</doc>
            <type name="Context" c:type="MirageContext*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="notified"
                     closure="1"
                     destroy="2">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="273">a password function pointer</doc>
            <type name="PasswordFunction" c:type="MiragePasswordFunction"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="274">pointer to user data to be passed to the password function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="destroy"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/context.c"
                 line="275">destroy notify for @user_data, or %NULL</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ContextPrivate" c:type="MirageContextPrivate*"/>
      </field>
    </class>
    <record name="ContextClass"
            c:type="MirageContextClass"
            glib:is-gtype-struct-for="Context">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/context.h"
           line="74">The class structure for the &lt;structname&gt;MirageContext&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/context.h"
                       line="83"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.h"
             line="76">the parent class</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="ContextPrivate"
            c:type="MirageContextPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/context.h"
                       line="57"/>
    </record>
    <interface name="Contextual"
               c:symbol-prefix="contextual"
               c:type="MirageContextual"
               glib:type-name="MirageContextual"
               glib:get-type="mirage_contextual_get_type"
               glib:type-struct="ContextualInterface">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/contextual.h"
           line="37">An object that can be attached a #MirageContext.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                       line="61"/>
      <virtual-method name="get_context" invoker="get_context">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="65">Retrieves the attached context.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="60"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/contextual.c"
               line="71">attached context (a #MirageContext), or %NULL.
The reference to context is incremented, and should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Context" c:type="MirageContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="67">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_context" invoker="set_context">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="53">Sets/attaches a context.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="59"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="55">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
          <parameter name="context" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="56">debug context (a #MirageContext)</doc>
            <type name="Context" c:type="MirageContext*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="create_input_stream"
              c:identifier="mirage_contextual_create_input_stream"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="302">Opens a file pointed to by @filename and creates a chain of filter
streams on top of it.

&lt;note&gt;
This is a convenience function that retrieves a #MirageContext from
@self and calls mirage_context_create_input_stream().
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="78"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/contextual.c"
               line="316">on success, an object implementing #MirageStream
interface is returned, which can be used to access data stored in file.
On failure, %NULL is returned. The reference to the object should be
released using g_object_unref() when no longer needed.</doc>
          <type name="Stream" c:type="MirageStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="304">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="305">filename to create input stream on</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_output_stream"
              c:identifier="mirage_contextual_create_output_stream"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="337">Opens a file pointed to by @filename and creates a chain of filter
streams on top of it.

&lt;note&gt;
This is a convenience function that retrieves a #MirageContext from
@self and calls mirage_context_create_output_stream().
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="79"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/contextual.c"
               line="352">on success, an object implementing #MirageStream
interface is returned, which can be used to write data to file.
On failure, %NULL is returned. The reference to the object should be
released using g_object_unref() when no longer needed.</doc>
          <type name="Stream" c:type="MirageStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="339">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="340">filename to create output stream on</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="filter_chain"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="341">NULL-terminated array of strings describing types of filters to include in the filter chain, or %NULL</doc>
            <array c:type="const gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="debug_is_active"
              c:identifier="mirage_contextual_debug_is_active">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="154">Checks whether debug messages at debug level @level are currently
active or not.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/contextual.c"
               line="162">a boolean indicating whether debug messages at debug level
@level are currently active or not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="156">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="157">debug level</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="debug_message"
              c:identifier="mirage_contextual_debug_message"
              introspectable="0">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="133">Outputs debug message with verbosity level @level, format string @format and
format arguments @Varargs. The message is displayed if debug context has mask
that covers @level, or if @level is either %MIRAGE_DEBUG_WARNING or
%MIRAGE_DEBUG_ERROR.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="69"/>
        <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="cdemu-code/libmirage/mirage/contextual.c"
                 line="135">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="136">debug level</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="137">message format. See the printf() documentation.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="138">parameters to insert into the format string.</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="debug_messagev"
              c:identifier="mirage_contextual_debug_messagev"
              introspectable="0">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="84">Outputs debug message with verbosity level @level, format string @format and
format arguments @args. The message is displayed if debug context has mask
that covers @level, or if @level is either %MIRAGE_DEBUG_WARNING or
%MIRAGE_DEBUG_ERROR.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="70"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="86">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="87">debug level</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="88">message format. See the printf() documentation.</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="args" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="89">parameters to insert into the format string.</doc>
            <type name="va_list" c:type="va_list"/>
          </parameter>
        </parameters>
      </method>
      <method name="debug_print_buffer"
              c:identifier="mirage_contextual_debug_print_buffer">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="187">Prints contents of @buffer as a sequence of @buffer_length two-digit
hexadecimal numbers, arranged in lines of @width numbers. Each line
is optionally prefixed by @prefix. If specified debug @level is not
active (masked by context), this function does nothing.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="72"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="189">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="190">debug level</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="prefix"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="191">prefix, or none</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="width" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="192">output width</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="193">buffer to print</doc>
            <array length="4" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="buffer_length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="194">buffer length</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_context" c:identifier="mirage_contextual_get_context">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="65">Retrieves the attached context.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="67"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/contextual.c"
               line="71">attached context (a #MirageContext), or %NULL.
The reference to context is incremented, and should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Context" c:type="MirageContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="67">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_option" c:identifier="mirage_contextual_get_option">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="241">Retrieves option named @name from the context.

&lt;note&gt;
This is a convenience function that retrieves a #MirageContext from
@self and calls mirage_context_get_option().
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="74"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/contextual.c"
               line="253">a #GVariant containing the option value on
success, %NULL on failure.</doc>
          <type name="GLib.Variant" c:type="GVariant*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="243">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="244">option name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="obtain_password"
              c:identifier="mirage_contextual_obtain_password"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="270">Obtains password string, using the #MiragePasswordFunction callback
that was provided via mirage_context_set_password_function().

&lt;note&gt;
This is a convenience function that retrieves a #MirageContext from
@self and calls mirage_context_obtain_password().
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="76"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/contextual.c"
               line="283">password string on success, %NULL on failure. The string should be
freed with g_free() when no longer needed.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="272">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_context" c:identifier="mirage_contextual_set_context">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.c"
             line="53">Sets/attaches a context.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                         line="66"/>
        <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="cdemu-code/libmirage/mirage/contextual.c"
                 line="55">a #MirageContextual</doc>
            <type name="Contextual" c:type="MirageContextual*"/>
          </instance-parameter>
          <parameter name="context" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="56">debug context (a #MirageContext)</doc>
            <type name="Context" c:type="MirageContext*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="ContextualInterface"
            c:type="MirageContextualInterface"
            glib:is-gtype-struct-for="Contextual">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/contextual.h"
           line="45">Provides an interface for implementing objects that can be attached a
#MirageContext.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                       line="61"/>
      <field name="parent_iface">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.h"
             line="47">the parent interface</doc>
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="set_context">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.h"
             line="48">sets/attaches the context</doc>
        <callback name="set_context">
          <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                           line="59"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/contextual.c"
                   line="55">a #MirageContextual</doc>
              <type name="Contextual" c:type="MirageContextual*"/>
            </parameter>
            <parameter name="context" transfer-ownership="full">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/contextual.c"
                   line="56">debug context (a #MirageContext)</doc>
              <type name="Context" c:type="MirageContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_context">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/contextual.h"
             line="49">retrieves the attached context</doc>
        <callback name="get_context">
          <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                           line="60"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/contextual.c"
                 line="71">attached context (a #MirageContext), or %NULL.
The reference to context is incremented, and should be released using g_object_unref()
when no longer needed.</doc>
            <type name="Context" c:type="MirageContext*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/contextual.c"
                   line="67">a #MirageContextual</doc>
              <type name="Contextual" c:type="MirageContextual*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <function-macro name="DEBUG"
                    c:identifier="MIRAGE_DEBUG"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/debug.h"
           line="84">Debugging macro, provided for convenience. It performs cast to
#MirageContextual interface on @obj and calls mirage_contextual_debug_message()
with debug level @lvl and debug message, specified by format string and
format arguments.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/debug.h"
                       line="95"/>
      <parameters>
        <parameter name="obj">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/debug.h"
               line="86">object</doc>
        </parameter>
        <parameter name="lvl">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/debug.h"
               line="87">debug level</doc>
        </parameter>
        <parameter name="...">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/debug.h"
               line="88">debug message</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEBUG_ON"
                    c:identifier="MIRAGE_DEBUG_ON"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/debug.h"
           line="97">Debugging macro, provided for convenience. It performs cast to
#MirageContextual interface on @obj and calls mirage_contextual_debug_is_active()
with debug level @lvl.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/debug.h"
                       line="106"/>
      <parameters>
        <parameter name="obj">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/debug.h"
               line="99">object</doc>
        </parameter>
        <parameter name="lvl">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/debug.h"
               line="100">debug level</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DEBUG_PRINT_BUFFER"
                    c:identifier="MIRAGE_DEBUG_PRINT_BUFFER"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/debug.h"
           line="109">Debugging macro, provided for convenience. It performs cast to
#MirageContextual interface on @obj and calls mirage_contextual_debug_print_buffer()
with given arguments.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/debug.h"
                       line="122"/>
      <parameters>
        <parameter name="obj">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/debug.h"
               line="111">object</doc>
        </parameter>
        <parameter name="lvl">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/debug.h"
               line="112">debug level</doc>
        </parameter>
        <parameter name="prefix">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/debug.h"
               line="113">prefix, or none</doc>
        </parameter>
        <parameter name="width">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/debug.h"
               line="114">output width</doc>
        </parameter>
        <parameter name="buffer">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/debug.h"
               line="115">buffer to print</doc>
        </parameter>
        <parameter name="buffer_length">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/debug.h"
               line="116">buffer length</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISC" c:identifier="MIRAGE_DISC" introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                       line="66"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISC_CLASS"
                    c:identifier="MIRAGE_DISC_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                       line="67"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DISC_GET_CLASS"
                    c:identifier="MIRAGE_DISC_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                       line="70"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <enumeration name="DebugMask" c:type="MirageDebugMask">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/debug.h"
           line="44">Debug message types and debug masks used to control verbosity of various
parts of libMirage.

All masks except %MIRAGE_DEBUG_ERROR and %MIRAGE_DEBUG_WARNING can be combined
together to control verbosity of libMirage.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/debug.h"
                       line="81"/>
      <member name="error" value="-1" c:identifier="MIRAGE_DEBUG_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="46">error message</doc>
      </member>
      <member name="warning" value="-2" c:identifier="MIRAGE_DEBUG_WARNING">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="47">warning message</doc>
      </member>
      <member name="parser" value="1" c:identifier="MIRAGE_DEBUG_PARSER">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="48">message belonging to image parser and file stream parser</doc>
      </member>
      <member name="disc" value="2" c:identifier="MIRAGE_DEBUG_DISC">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="49">message belonging to disc</doc>
      </member>
      <member name="session" value="4" c:identifier="MIRAGE_DEBUG_SESSION">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="50">message belonging to session</doc>
      </member>
      <member name="track" value="8" c:identifier="MIRAGE_DEBUG_TRACK">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="51">message belonging to track</doc>
      </member>
      <member name="sector" value="16" c:identifier="MIRAGE_DEBUG_SECTOR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="52">message belonging to sector</doc>
      </member>
      <member name="fragment" value="32" c:identifier="MIRAGE_DEBUG_FRAGMENT">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="53">message belonging to fragment</doc>
      </member>
      <member name="cdtext" value="64" c:identifier="MIRAGE_DEBUG_CDTEXT">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="54">message belonging to CD-TEXT encoder/decoder</doc>
      </member>
      <member name="stream" value="128" c:identifier="MIRAGE_DEBUG_STREAM">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="55">messages belonging to file and filter stream I/O operations</doc>
      </member>
      <member name="image_id" value="256" c:identifier="MIRAGE_DEBUG_IMAGE_ID">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="56">messages belonging to image identification part of image parsers</doc>
      </member>
      <member name="writer" value="512" c:identifier="MIRAGE_DEBUG_WRITER">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/debug.h"
             line="57">messages belonging to image writer</doc>
      </member>
    </enumeration>
    <record name="DebugMaskInfo" c:type="MirageDebugMaskInfo">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.h"
           line="106">Structure containing debug mask information.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="116"/>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.h"
             line="108">name</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="value" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.h"
             line="109">value</doc>
        <type name="gint" c:type="gint"/>
      </field>
    </record>
    <class name="Disc"
           c:symbol-prefix="disc"
           c:type="MirageDisc"
           parent="Object"
           glib:type-name="MirageDisc"
           glib:get-type="mirage_disc_get_type"
           glib:type-struct="DiscClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/disc.h"
           line="76">All the fields in the &lt;structname&gt;MirageDisc&lt;/structname&gt;
structure are private to the #MirageDisc implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                       line="100"/>
      <implements name="Contextual"/>
      <method name="add_session_by_index"
              c:identifier="mirage_disc_add_session_by_index">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="437">Adds session to disc layout.

@index is the index at which session is added. Negative index denotes
index going backwards (i.e. -1 adds session at the end, -2 adds session
second-to-last, etc.). If index, either negative or positive, is too big,
session is added at the beginning or at the end of the layout, respectively.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="127"/>
        <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="cdemu-code/libmirage/mirage/disc.c"
                 line="439">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="440">index at which session should be added</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="session" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="441">a #MirageSession to be added</doc>
            <type name="Session" c:type="MirageSession*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_session_by_number"
              c:identifier="mirage_disc_add_session_by_number"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="489">Adds session to disc layout.

@number is session number that should be assigned to added session. It determines
session's position in the layout. If session with that number already exists in
the layout, the function fails.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="128"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="506">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="491">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="492">session number for the added session</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="session" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="493">a #MirageSession to be added</doc>
            <type name="Session" c:type="MirageSession*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_track_by_index"
              c:identifier="mirage_disc_add_track_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="891">Adds track to disc layout.

@index is the index at which track is added. The function attempts to find
appropriate session by iterating over sessions list and verifying index ranges,
then adds the track using mirage_session_add_track_by_index(). Negative
@index denotes index going backwards (i.e. -1 adds track at the end of last
session, etc.). If @index, either negative or positive, is too big, track is
respectively added  at the beginning of the first or at the end of the last
session in the layout.

If disc layout is empty (i.e. contains no sessions), then session is created.

The rest of behavior is same as of mirage_session_add_track_by_index().

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="142"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="916">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="893">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="894">index at which track should be added</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="track" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="895">a #MirageTrack to be added</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_track_by_number"
              c:identifier="mirage_disc_add_track_by_number"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="966">Adds track to disc layout.

@number is track number that should be assigned to added track. It determines
track's position in the layout. The function attempts to find appropriate session
using mirage_disc_get_session_by_track(), then adds the track using
mirage_session_add_track_by_number().

If disc layout is empty (i.e. contains no sessions), then session is created.
If @number is greater than last track's number, the track is added at the end
of last session.

The rest of behavior is same as of mirage_session_add_track_by_number().

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="143"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="990">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="968">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="969">track number for the added track</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="track" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="970">a #MirageTrack to be added</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </parameter>
        </parameters>
      </method>
      <method name="enumerate_sessions"
              c:identifier="mirage_disc_enumerate_sessions">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="787">Iterates over sessions list, calling @func for each session in the layout.

If @func returns %FALSE, the function immediately returns %FALSE.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="136"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="797">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="789">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="790">callback function</doc>
            <type name="EnumSessionCallback"
                  c:type="MirageEnumSessionCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="791">data to be passed to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_disc_structure"
              c:identifier="mirage_disc_get_disc_structure"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1285">Retrieves disc structure of type @type from layer @layer. The pointer to buffer
containing the disc structure is stored in @data; the buffer belongs to the
object and therefore should not be modified.

&lt;note&gt;
Disc structures are valid only for DVD and BD discs; therefore, if disc type
is not set to %MIRAGE_MEDIUM_DVD or %MIRAGE_MEDIUM_BD prior to calling this
function, the function will fail.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="152"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="1304">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1287">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="layer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1288">disc layer</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1289">disc structure type</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1290">location to store buffer containing disc structure data, or %NULL</doc>
            <array length="3" zero-terminated="0" c:type="const guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1291">location to store data length, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_dpm_data" c:identifier="mirage_disc_get_dpm_data">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1447">Retrieves DPM data for disc. The pointer to buffer containing DPM data entries
is stored in @data; the buffer belongs to object and therefore should not be
modified.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="160"/>
        <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="cdemu-code/libmirage/mirage/disc.c"
                 line="1449">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="start"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1450">location to store DPM start sector, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="resolution"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1451">location to store DPM data resolution, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="num_entries"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1452">location to store number of DPM entries, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1453">location to store pointer to buffer containing DPM data, or %NULL</doc>
            <array length="2" zero-terminated="0" c:type="const guint32**">
              <type name="guint32" c:type="guint32*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="get_dpm_data_for_sector"
              c:identifier="mirage_disc_get_dpm_data_for_sector"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1475">Retrieves DPM data for sector at address @address. Two pieces of data can be
retrieved; first one is sector angle, expressed in rotations (i.e. 0.25 would
mean 1/4 of rotation or 90˚ and 1.0 means one full rotation or 360˚), and the
other one is sector density at given address, expressed in degrees per sector).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="161"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="1488">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1477">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1478">address of sector to retrieve DPM data for</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="angle"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1479">location to store sector angle, or %NULL</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
          <parameter name="density"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1480">location to store sector density, or %NULL</doc>
            <type name="gdouble" c:type="gdouble*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_filenames" c:identifier="mirage_disc_get_filenames">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="251">Retrieves image filename(s).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="112"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="257">pointer to %NULL-terminated
array of filenames. The array belongs to the object and should not be modified.</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="253">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_medium_type"
              c:identifier="mirage_disc_get_medium_type">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="195">Retrieves medium type.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="107"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="201">medium type</doc>
          <type name="MediumType" c:type="MirageMediumType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="197">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_number_of_sessions"
              c:identifier="mirage_disc_get_number_of_sessions">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="423">Retrieves number of sessions in the disc layout.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="126"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="429">number of sessions</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="425">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_number_of_tracks"
              c:identifier="mirage_disc_get_number_of_tracks">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="877">Retrieves number of tracks in the disc layout.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="141"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="883">number of tracks</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="879">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_sector"
              c:identifier="mirage_disc_get_sector"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1340">Retrieves sector object representing sector at sector address @address.

This function attempts to retrieve appropriate track using
mirage_disc_get_track_by_address(),
then retrieves sector object using mirage_track_get_sector().</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="155"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="1352">sector object on success, %NULL on failure</doc>
          <type name="Sector" c:type="MirageSector*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1342">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1343">sector address</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_session_after"
              c:identifier="mirage_disc_get_session_after"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="843">Retrieves session that comes after @session.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="138"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="851">a #MirageSession on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Session" c:type="MirageSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="845">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="846">a session</doc>
            <type name="Session" c:type="MirageSession*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_session_before"
              c:identifier="mirage_disc_get_session_before"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="811">Retrieves session that comes before @session.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="137"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="819">a #MirageSession on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Session" c:type="MirageSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="813">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="814">a session</doc>
            <type name="Session" c:type="MirageSession*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_session_by_address"
              c:identifier="mirage_disc_get_session_by_address"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="699">Retrieves session by address. @address must be valid (disc-relative) sector
address that is part of the session to be retrieved (i.e. lying between session's
start and end sector).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="134"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="709">a #MirageSession on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Session" c:type="MirageSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="701">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="702">address belonging to session to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_session_by_index"
              c:identifier="mirage_disc_get_session_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="622">Retrieves session by index. If @index is negative, sessions from the end of
layout are retrieved (e.g. -1 is for last session, -2 for second-to-last
session, etc.). If @index is out of range, regardless of the sign, the
function fails.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="132"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="633">a #MirageSession on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Session" c:type="MirageSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="624">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="625">index of session to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_session_by_number"
              c:identifier="mirage_disc_get_session_by_number"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="662">Retrieves session by session number.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="133"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="670">a #MirageSession on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Session" c:type="MirageSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="664">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="665">number of session to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_session_by_track"
              c:identifier="mirage_disc_get_session_by_track"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="743">Retrieves session by track number. @track must be valid track number of track
that is part of the session.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="135"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="752">a #MirageSession on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Session" c:type="MirageSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="745">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="track" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="746">number of track belonging to session to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_track_by_address"
              c:identifier="mirage_disc_get_track_by_address"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1213">Retrieves track by address. @address must be valid (disc-relative) sector
address that is part of the track to be retrieved (i.e. lying between track's
start and end sector).

The function attempts to find appropriate session using
mirage_disc_get_session_by_address(), then retrieves the track using
mirage_session_get_track_by_address().

The rest of behavior is same as of mirage_session_get_track_by_address().</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="148"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="1229">a #MirageTrack on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Track" c:type="MirageTrack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1215">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1216">address belonging to track to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_track_by_index"
              c:identifier="mirage_disc_get_track_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1127">Retrieves track by index. The function attempts to find appropriate session
by iterating over sessions list and verifying index ranges, then retrieves
the track using mirage_session_get_track_by_index(). If @index is negative,
tracks from the end of layout are retrieved (e.g. -1 is for last track, -2
for second-to-last track, etc.). If @index is out of range, regardless of
the sign, the function fails.

The rest of behavior is same as of mirage_session_get_track_by_index().</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="146"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="1142">a #MirageTrack on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Track" c:type="MirageTrack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1129">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1130">index of track to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_track_by_number"
              c:identifier="mirage_disc_get_track_by_number"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1179">Retrieves track by track number. The function attempts to find appropriate session
using mirage_disc_get_session_by_track(), then retrieves the track using
mirage_session_get_track_by_number().

The rest of behavior is same as of mirage_session_get_track_by_number().</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="147"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="1191">a #MirageTrack on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Track" c:type="MirageTrack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1181">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1182">track number of track to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="layout_contains_address"
              c:identifier="mirage_disc_layout_contains_address">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="408">Checks whether the disc contains the given address or not.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="123"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="415">%TRUE if @address falls inside disc, %FALSE if it does not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="410">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="411">address to be checked</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="layout_get_first_session"
              c:identifier="mirage_disc_layout_get_first_session">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="291">Retrieves session number of the first session in the disc layout.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="116"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="301">first session number</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="293">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_get_first_track"
              c:identifier="mirage_disc_layout_get_first_track">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="333">Retrieves track number of the first track in the disc layout.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="343">first track number</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="335">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_get_length"
              c:identifier="mirage_disc_layout_get_length">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="393">Retrieves length of the disc layout. The returned length is given in sectors.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="121"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="399">disc layout length</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="395">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_get_start_sector"
              c:identifier="mirage_disc_layout_get_start_sector">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="375">Retrieves start sector of the disc layout.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="120"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="385">start sector</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="377">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_set_first_session"
              c:identifier="mirage_disc_layout_set_first_session">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="267">Sets first session number to @first_session. This is a number that is
assigned to the first session in the disc layout.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;

&lt;note&gt;
Causes top-down change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="115"/>
        <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="cdemu-code/libmirage/mirage/disc.c"
                 line="269">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="first_session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="270">first session number</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="layout_set_first_track"
              c:identifier="mirage_disc_layout_set_first_track">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="309">Sets first track number to @first_track. This is a number that is
assigned to the first track in the disc layout.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;

&lt;note&gt;
Causes top-down change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="117"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="311">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="first_track" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="312">first track number</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="layout_set_start_sector"
              c:identifier="mirage_disc_layout_set_start_sector">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="351">Sets start sector of the disc layout to @start_sector. This is a sector at which
the first session (and consequently first track) in the disc layout will start.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;

&lt;note&gt;
Causes top-down change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="119"/>
        <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="cdemu-code/libmirage/mirage/disc.c"
                 line="353">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="start_sector" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="354">start sector</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="put_sector"
              c:identifier="mirage_disc_put_sector"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1373">Writes the @sector to disc.

This function attempts to retrieve appropriate track using
mirage_disc_get_track_by_address(),
then writes sector object using mirage_track_put_sector(); therefore,
same restrictions regarding sector address apply as when putting sector
directly to track.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="156"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="1387">%TRUE on success, %FALSE on failure.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1375">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="sector" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1376">a #MirageSector representing sector to be written</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_session_by_index"
              c:identifier="mirage_disc_remove_session_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="539">Removes session from disc layout.

@index is the index of the session to be removed. This function calls
mirage_disc_get_session_by_index() so @index behavior is determined by that
function.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="129"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="555">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="541">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="542">index of session to be removed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_session_by_number"
              c:identifier="mirage_disc_remove_session_by_number"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="572">Removes session from disc layout.

@number is session number of the session to be removed.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="130"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="586">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="574">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="575">session number of session to be removed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_session_by_object"
              c:identifier="mirage_disc_remove_session_by_object">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="603">Removes session from disc layout.

@session is a #MirageSession object to be removed.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="131"/>
        <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="cdemu-code/libmirage/mirage/disc.c"
                 line="605">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="session" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="606">session object to be removed</doc>
            <type name="Session" c:type="MirageSession*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_track_by_index"
              c:identifier="mirage_disc_remove_track_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1033">Removes track from disc layout.

@index is the index of the track to be removed. This function calls
mirage_disc_get_track_by_index() so @index behavior is determined by that
function.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="144"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="1049">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1035">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1036">index of track to be removed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_track_by_number"
              c:identifier="mirage_disc_remove_track_by_number"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1077">Removes track from disc layout.

@number is track number of the track to be removed. This function calls
mirage_disc_get_track_by_number() so @number behavior is determined by that
function.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="145"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.c"
               line="1093">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1079">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1080">track number of track to be removed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_disc_structure"
              c:identifier="mirage_disc_set_disc_structure">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1252">Sets disc structure of type @type to layer @layer to disc. @data is buffer
containing disc structure data and @len is data length.

&lt;note&gt;
Disc structures are valid only for DVD and BD discs. This function
silently fails on invalid disc types.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="151"/>
        <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="cdemu-code/libmirage/mirage/disc.c"
                 line="1254">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="layer" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1255">disc layer</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1256">disc structure type</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1257">disc structure data to be set</doc>
            <array length="3" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1258">length of disc structure data</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_dpm_data" c:identifier="mirage_disc_set_dpm_data">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1416">Sets the DPM data for disc. If @num_entries is not positive, DPM data is reset.
@start is the address at which DPM data begins, @resolution is resolution of
DPM data and @num_entries is the number of DPM entries in buffer pointed to by
@data.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="159"/>
        <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="cdemu-code/libmirage/mirage/disc.c"
                 line="1418">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1419">DPM start sector</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="resolution" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1420">DPM data resolution</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="num_entries" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1421">number of DPM entries</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="1422">buffer containing DPM data</doc>
            <array length="2" zero-terminated="0" c:type="const guint32*">
              <type name="guint32" c:type="guint32"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="set_filename" c:identifier="mirage_disc_set_filename">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="229">Sets image filename. The functionality is similar to mirage_disc_set_filenames(),
except that only one filename is set. It is intended to be used in parsers which
support only single-file images.

&lt;note&gt;
Intended for internal use only, in image parser implementations.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="111"/>
        <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="cdemu-code/libmirage/mirage/disc.c"
                 line="231">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="232">filename</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_filenames" c:identifier="mirage_disc_set_filenames">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="210">Sets image filename(s).

&lt;note&gt;
Intended for internal use only, in image parser implementations.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="110"/>
        <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="cdemu-code/libmirage/mirage/disc.c"
                 line="212">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="filenames" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="213">%NULL-terminated array of filenames</doc>
            <array c:type="gchar**">
              <type name="utf8" c:type="gchar*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="set_medium_type"
              c:identifier="mirage_disc_set_medium_type">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="178">Sets medium type. @medium_type must be one of #MirageMediumType.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                         line="106"/>
        <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="cdemu-code/libmirage/mirage/disc.c"
                 line="180">a #MirageDisc</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </instance-parameter>
          <parameter name="medium_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/disc.c"
                 line="181">medium type</doc>
            <type name="MediumType" c:type="MirageMediumType"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="DiscPrivate" c:type="MirageDiscPrivate*"/>
      </field>
      <glib:signal name="layout-changed" when="last">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.c"
             line="1634">Emitted when a layout of #MirageDisc changed in a way that causes a bottom-up change.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="DiscClass"
            c:type="MirageDiscClass"
            glib:is-gtype-struct-for="Disc">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/disc.h"
           line="91">The class structure for the &lt;structname&gt;MirageDisc&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                       line="100"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.h"
             line="93">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
    </record>
    <record name="DiscPrivate"
            c:type="MirageDiscPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                       line="73"/>
    </record>
    <callback name="EnumFilterStreamInfoCallback"
              c:type="MirageEnumFilterStreamInfoCallback">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.h"
           line="91">Callback function type used with mirage_enumerate_filter_streams().
A pointer to filter stream information structure is stored in @info; the
structure belongs to the filter stream object and should not be modified.
@user_data is user data passed to enumeration function.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="103"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.h"
             line="101">%TRUE on success, otherwise %FALSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="info" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.h"
               line="93">filter stream info</doc>
          <type name="FilterStreamInfo"
                c:type="const MirageFilterStreamInfo*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.h"
               line="94">user data passed to enumeration function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="EnumFragmentCallback" c:type="MirageEnumFragmentCallback">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/track.h"
           line="77">Callback function type used with mirage_track_enumerate_fragments().
A pointer to a fragment object is stored in @fragment, without incrementing
its reference counter. @user_data is user data passed to enumeration function.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="88"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.h"
             line="86">%TRUE on success, otherwise %FALSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="fragment" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.h"
               line="79">fragment</doc>
          <type name="Fragment" c:type="MirageFragment*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.h"
               line="80">user data passed to enumeration function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="EnumIndexCallback" c:type="MirageEnumIndexCallback">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/track.h"
           line="64">Callback function type used with mirage_track_enumerate_indices().
A pointer to an index object is stored in @index, without incrementing
its reference counter. @user_data is user data passed to enumeration function.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="75"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.h"
             line="73">%TRUE on success, otherwise %FALSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="index" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.h"
               line="66">index</doc>
          <type name="Index" c:type="MirageIndex*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.h"
               line="67">user data passed to enumeration function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="EnumLanguageCallback" c:type="MirageEnumLanguageCallback">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/session.h"
           line="66">Callback function type used with mirage_session_enumerate_languages() and
mirage_track_enumerate_languages(). A pointer to a language object is
stored in @language, without incrementing its reference counter.
@user_data is user data passed to enumeration function.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="78"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.h"
             line="76">%TRUE on success, otherwise %FALSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="language" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.h"
               line="68">language</doc>
          <type name="Language" c:type="MirageLanguage*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.h"
               line="69">user data passed to enumeration function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="EnumParserInfoCallback"
              c:type="MirageEnumParserInfoCallback">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.h"
           line="62">Callback function type used with mirage_enumerate_parsers().
A pointer to parser information structure is stored in @info; the
structure belongs to the parser object and should not be modified.
@user_data is user data passed to enumeration function.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="74"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.h"
             line="72">%TRUE on success, otherwise %FALSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="info" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.h"
               line="64">parser info</doc>
          <type name="ParserInfo" c:type="const MirageParserInfo*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.h"
               line="65">user data passed to enumeration function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="EnumSessionCallback" c:type="MirageEnumSessionCallback">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/disc.h"
           line="48">Callback function type used with mirage_disc_enumerate_sessions().
A pointer to a session object is stored in @session, without incrementing
its reference counter. @user_data is user data passed to enumeration function.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                       line="59"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.h"
             line="57">%TRUE on success, otherwise %FALSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="session" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.h"
               line="50">session</doc>
          <type name="Session" c:type="MirageSession*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/disc.h"
               line="51">user data passed to enumeration function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="EnumTrackCallback" c:type="MirageEnumTrackCallback">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/session.h"
           line="53">Callback function type used with mirage_session_enumerate_tracks().
A pointer to a track object is stored in @track, without incrementing
its reference counter. @user_data is user data passed to enumeration function.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="64"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.h"
             line="62">%TRUE on success, otherwise %FALSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="track" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.h"
               line="55">track</doc>
          <type name="Track" c:type="MirageTrack*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.h"
               line="56">user data passed to enumeration function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="EnumWriterInfoCallback"
              c:type="MirageEnumWriterInfoCallback">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.h"
           line="76">Callback function type used with mirage_enumerate_writers().
A pointer to writer information structure is stored in @info; the
structure belongs to the writer object and should not be modified.
@user_data is user data passed to enumeration function.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="88"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.h"
             line="86">%TRUE on success, otherwise %FALSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="info" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.h"
               line="78">writer info</doc>
          <type name="WriterInfo" c:type="const MirageWriterInfo*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.h"
               line="79">user data passed to enumeration function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="Error"
                 glib:type-name="MirageError"
                 glib:get-type="mirage_error_get_type"
                 c:type="MirageError"
                 glib:error-domain="mirage-error">
      <member name="LibraryError"
              value="0"
              c:identifier="MIRAGE_ERROR_LIBRARY_ERROR"
              glib:nick="LibraryError"
              glib:name="MIRAGE_ERROR_LIBRARY_ERROR">
      </member>
      <member name="ParserError"
              value="1"
              c:identifier="MIRAGE_ERROR_PARSER_ERROR"
              glib:nick="ParserError"
              glib:name="MIRAGE_ERROR_PARSER_ERROR">
      </member>
      <member name="FragmentError"
              value="2"
              c:identifier="MIRAGE_ERROR_FRAGMENT_ERROR"
              glib:nick="FragmentError"
              glib:name="MIRAGE_ERROR_FRAGMENT_ERROR">
      </member>
      <member name="DiscError"
              value="3"
              c:identifier="MIRAGE_ERROR_DISC_ERROR"
              glib:nick="DiscError"
              glib:name="MIRAGE_ERROR_DISC_ERROR">
      </member>
      <member name="LanguageError"
              value="4"
              c:identifier="MIRAGE_ERROR_LANGUAGE_ERROR"
              glib:nick="LanguageError"
              glib:name="MIRAGE_ERROR_LANGUAGE_ERROR">
      </member>
      <member name="SectorError"
              value="5"
              c:identifier="MIRAGE_ERROR_SECTOR_ERROR"
              glib:nick="SectorError"
              glib:name="MIRAGE_ERROR_SECTOR_ERROR">
      </member>
      <member name="SessionError"
              value="6"
              c:identifier="MIRAGE_ERROR_SESSION_ERROR"
              glib:nick="SessionError"
              glib:name="MIRAGE_ERROR_SESSION_ERROR">
      </member>
      <member name="TrackError"
              value="7"
              c:identifier="MIRAGE_ERROR_TRACK_ERROR"
              glib:nick="TrackError"
              glib:name="MIRAGE_ERROR_TRACK_ERROR">
      </member>
      <member name="StreamError"
              value="8"
              c:identifier="MIRAGE_ERROR_STREAM_ERROR"
              glib:nick="StreamError"
              glib:name="MIRAGE_ERROR_STREAM_ERROR">
      </member>
      <member name="ImageFileError"
              value="9"
              c:identifier="MIRAGE_ERROR_IMAGE_FILE_ERROR"
              glib:nick="ImageFileError"
              glib:name="MIRAGE_ERROR_IMAGE_FILE_ERROR">
      </member>
      <member name="DataFileError"
              value="10"
              c:identifier="MIRAGE_ERROR_DATA_FILE_ERROR"
              glib:nick="DataFileError"
              glib:name="MIRAGE_ERROR_DATA_FILE_ERROR">
      </member>
      <member name="CannotHandle"
              value="11"
              c:identifier="MIRAGE_ERROR_CANNOT_HANDLE"
              glib:nick="CannotHandle"
              glib:name="MIRAGE_ERROR_CANNOT_HANDLE">
      </member>
      <member name="EncryptedImage"
              value="12"
              c:identifier="MIRAGE_ERROR_ENCRYPTED_IMAGE"
              glib:nick="EncryptedImage"
              glib:name="MIRAGE_ERROR_ENCRYPTED_IMAGE">
      </member>
      <member name="WriterError"
              value="13"
              c:identifier="MIRAGE_ERROR_WRITER_ERROR"
              glib:nick="WriterError"
              glib:name="MIRAGE_ERROR_WRITER_ERROR">
      </member>
      <function name="quark" c:identifier="mirage_error_quark">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.c"
             line="40">Registers an error quark for libMirage if necessary.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/error.c"
               line="45">The error quark used for libMirage errors.</doc>
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </enumeration>
    <enumeration name="ErrorCode" c:type="MirageErrorCode">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/error.h"
           line="33">Error codes for libMirage library.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/error.h"
                       line="68"/>
      <member name="library_error"
              value="0"
              c:identifier="MIRAGE_ERROR_LIBRARY_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="35">error in core libMirage code</doc>
      </member>
      <member name="parser_error"
              value="1"
              c:identifier="MIRAGE_ERROR_PARSER_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="36">error in parser code</doc>
      </member>
      <member name="fragment_error"
              value="2"
              c:identifier="MIRAGE_ERROR_FRAGMENT_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="37">error in fragment code</doc>
      </member>
      <member name="disc_error"
              value="3"
              c:identifier="MIRAGE_ERROR_DISC_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="38">error in disc code</doc>
      </member>
      <member name="language_error"
              value="4"
              c:identifier="MIRAGE_ERROR_LANGUAGE_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="39">error in language/CD-TEXT code</doc>
      </member>
      <member name="sector_error"
              value="5"
              c:identifier="MIRAGE_ERROR_SECTOR_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="40">error in sector code</doc>
      </member>
      <member name="session_error"
              value="6"
              c:identifier="MIRAGE_ERROR_SESSION_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="41">error in session code</doc>
      </member>
      <member name="track_error"
              value="7"
              c:identifier="MIRAGE_ERROR_TRACK_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="42">error in track code</doc>
      </member>
      <member name="stream_error"
              value="8"
              c:identifier="MIRAGE_ERROR_STREAM_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="43">error in stream code</doc>
      </member>
      <member name="image_file_error"
              value="9"
              c:identifier="MIRAGE_ERROR_IMAGE_FILE_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="44">error related to image file</doc>
      </member>
      <member name="data_file_error"
              value="10"
              c:identifier="MIRAGE_ERROR_DATA_FILE_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="45">error related to data file</doc>
      </member>
      <member name="cannot_handle"
              value="11"
              c:identifier="MIRAGE_ERROR_CANNOT_HANDLE">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="46">parser/writer/filter stream cannot handle given file</doc>
      </member>
      <member name="encrypted_image"
              value="12"
              c:identifier="MIRAGE_ERROR_ENCRYPTED_IMAGE">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="47">image is encrypted and password needs to be provided</doc>
      </member>
      <member name="writer_error"
              value="13"
              c:identifier="MIRAGE_ERROR_WRITER_ERROR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.h"
             line="48">error in image writer code</doc>
      </member>
    </enumeration>
    <function-macro name="FILE_STREAM"
                    c:identifier="MIRAGE_FILE_STREAM"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/file-stream.h"
                       line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILE_STREAM_CLASS"
                    c:identifier="MIRAGE_FILE_STREAM_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/file-stream.h"
                       line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILE_STREAM_GET_CLASS"
                    c:identifier="MIRAGE_FILE_STREAM_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/file-stream.h"
                       line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILTER_STREAM"
                    c:identifier="MIRAGE_FILTER_STREAM"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                       line="57"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILTER_STREAM_CLASS"
                    c:identifier="MIRAGE_FILTER_STREAM_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                       line="58"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILTER_STREAM_GET_CLASS"
                    c:identifier="MIRAGE_FILTER_STREAM_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                       line="61"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FRAGMENT"
                    c:identifier="MIRAGE_FRAGMENT"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                       line="70"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FRAGMENT_CLASS"
                    c:identifier="MIRAGE_FRAGMENT_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                       line="71"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FRAGMENT_GET_CLASS"
                    c:identifier="MIRAGE_FRAGMENT_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                       line="74"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="FileStream"
           c:symbol-prefix="file_stream"
           c:type="MirageFileStream"
           parent="Object"
           glib:type-name="MirageFileStream"
           glib:get-type="mirage_file_stream_get_type"
           glib:type-struct="FileStreamClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/file-stream.h"
           line="43">All the fields in the &lt;structname&gt;MirageFileStream&lt;/structname&gt;
structure are private to the #MirageFileStream implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/file-stream.h"
                       line="67"/>
      <implements name="Contextual"/>
      <implements name="Stream"/>
      <method name="open" c:identifier="mirage_file_stream_open" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/file-stream.c"
             line="64">Opens the stream on the file pointed to by @filename. If @writable
is %FALSE, the stream is opened in read-only mode; if @writable is
%TRUE, the stream is opened in read-write mode.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/file-stream.h"
                         line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/file-stream.c"
               line="75">%TRUE on success, %FALSE on failure.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/file-stream.c"
                 line="66">a #MirageFileStream</doc>
            <type name="FileStream" c:type="MirageFileStream*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/file-stream.c"
                 line="67">name of file on which the stream is to be opened</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="writable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/file-stream.c"
                 line="68">a boolean indicating whether stream should be opened for read/write access</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="FileStreamPrivate" c:type="MirageFileStreamPrivate*"/>
      </field>
    </class>
    <record name="FileStreamClass"
            c:type="MirageFileStreamClass"
            glib:is-gtype-struct-for="FileStream">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/file-stream.h"
           line="58">The class structure for the &lt;structname&gt;MirageFileStream&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/file-stream.h"
                       line="67"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/file-stream.h"
             line="60">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
    </record>
    <record name="FileStreamPrivate"
            c:type="MirageFileStreamPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/file-stream.h"
                       line="41"/>
    </record>
    <class name="FilterStream"
           c:symbol-prefix="filter_stream"
           c:type="MirageFilterStream"
           parent="Object"
           abstract="1"
           glib:type-name="MirageFilterStream"
           glib:get-type="mirage_filter_stream_get_type"
           glib:type-struct="FilterStreamClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/filter-stream.h"
           line="67">All the fields in the &lt;structname&gt;MirageFilterStream&lt;/structname&gt;
structure are private to the #MirageFilterStream implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                       line="111"/>
      <implements name="Contextual"/>
      <implements name="Stream"/>
      <virtual-method name="open" invoker="open" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.c"
             line="186">Opens stream on top of provided underlying stream.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/filter-stream.c"
               line="195">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="188">a #MirageFilterStream</doc>
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="189">an underlying stream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </parameter>
          <parameter name="writable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="190">a flag indicating whether the stream should be opened in read/write mode or not</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="read" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="86">reads data from stream</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="103"/>
        <return-value transfer-ownership="none">
          <type name="gssize" c:type="gssize"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
          <parameter name="buffer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="seek" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="89">seeks to a location within stream</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="105"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <type name="gint64" c:type="goffset"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <type name="GLib.SeekType" c:type="GSeekType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="simplified_partial_read">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="90">reads a chunk of requested data from stream (part of simplified interface)</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="109"/>
        <return-value transfer-ownership="none">
          <type name="gssize" c:type="gssize"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
          <parameter name="buffer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="simplified_partial_write">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="91">writes a chunk of requested data to stream (part of simplified interface)</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="110"/>
        <return-value transfer-ownership="none">
          <type name="gssize" c:type="gssize"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
          <parameter name="buffer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="tell">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="88">tells the current location within stream</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="106"/>
        <return-value transfer-ownership="none">
          <type name="gint64" c:type="goffset"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="87">wrties data to stream</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="104"/>
        <return-value transfer-ownership="none">
          <type name="gssize" c:type="gssize"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
          <parameter name="buffer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="generate_info"
              c:identifier="mirage_filter_stream_generate_info"
              introspectable="0">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.c"
             line="133">Generates filter stream information from the input fields. It is intended as a function
for creating filter stream information in filter stream implementations.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="116"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="135">a #MirageFilterStream</doc>
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="136">filter stream ID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="137">filter stream name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="writable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="138">flag indicating whether filter stream supports write operation</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="num_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="139">number of MIME types</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="140">description and MIME type string pairs, one for each defined type</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_info" c:identifier="mirage_filter_stream_get_info">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.c"
             line="156">Retrieves filter stream information.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="117"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/filter-stream.c"
               line="162">a pointer to filter stream information structure. The
structure belongs to object and therefore should not be modified.</doc>
          <type name="FilterStreamInfo"
                c:type="const MirageFilterStreamInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="158">a #MirageFilterStream</doc>
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_underlying_stream"
              c:identifier="mirage_filter_stream_get_underlying_stream">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.c"
             line="171">Retrieves filter stream's underlying stream.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="119"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/filter-stream.c"
               line="177">a pointer to filter stream's underlying stream.
The reference belongs to filter stream and should not be released.</doc>
          <type name="Stream" c:type="MirageStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="173">a #MirageFilterStream</doc>
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open" c:identifier="mirage_filter_stream_open" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.c"
             line="186">Opens stream on top of provided underlying stream.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="121"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/filter-stream.c"
               line="195">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="188">a #MirageFilterStream</doc>
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="189">an underlying stream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </parameter>
          <parameter name="writable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="190">a flag indicating whether the stream should be opened in read/write mode or not</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="simplified_get_position"
              c:identifier="mirage_filter_stream_simplified_get_position">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.c"
             line="236">Retrieves position in the stream.

This function is intented for use in filter stream implementations that
are based on the simplified interface. It should be used by the
implementation's simplified_partial_read function to determine position to
read from without having to worry about position management and update.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="124"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/filter-stream.c"
               line="247">position in the stream</doc>
          <type name="gint64" c:type="goffset"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="238">a #MirageFilterStream</doc>
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="simplified_set_stream_length"
              c:identifier="mirage_filter_stream_simplified_set_stream_length">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.c"
             line="218">Sets size of the stream.

This function is intented for use in filter stream implementations that
are based on the simplified interface. It should be used by the
implementation to set the stream size during stream parsing; the set
stream size is then used by the read function that is implemented by
the simplified interface.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="123"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="220">a #MirageFilterStream</doc>
            <type name="FilterStream" c:type="MirageFilterStream*"/>
          </instance-parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="221">length of the stream</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="FilterStreamPrivate" c:type="MirageFilterStreamPrivate*"/>
      </field>
    </class>
    <record name="FilterStreamClass"
            c:type="MirageFilterStreamClass"
            glib:is-gtype-struct-for="FilterStream">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/filter-stream.h"
           line="82">The class structure for the &lt;structname&gt;MirageFilterStream&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                       line="111"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="84">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
      <field name="open">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="85">opens a filter stream on top underyling stream</doc>
        <callback name="open" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                           line="100"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="195">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/filter-stream.c"
                   line="188">a #MirageFilterStream</doc>
              <type name="FilterStream" c:type="MirageFilterStream*"/>
            </parameter>
            <parameter name="stream" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/filter-stream.c"
                   line="189">an underlying stream</doc>
              <type name="Stream" c:type="MirageStream*"/>
            </parameter>
            <parameter name="writable" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/filter-stream.c"
                   line="190">a flag indicating whether the stream should be opened in read/write mode or not</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="read">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="86">reads data from stream</doc>
        <callback name="read" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                           line="103"/>
          <return-value transfer-ownership="none">
            <type name="gssize" c:type="gssize"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="FilterStream" c:type="MirageFilterStream*"/>
            </parameter>
            <parameter name="buffer"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="void*"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type name="gsize" c:type="gsize"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="87">wrties data to stream</doc>
        <callback name="write" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                           line="104"/>
          <return-value transfer-ownership="none">
            <type name="gssize" c:type="gssize"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="FilterStream" c:type="MirageFilterStream*"/>
            </parameter>
            <parameter name="buffer"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="void*"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type name="gsize" c:type="gsize"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="seek">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="89">seeks to a location within stream</doc>
        <callback name="seek" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                           line="105"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="FilterStream" c:type="MirageFilterStream*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <type name="gint64" c:type="goffset"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type name="GLib.SeekType" c:type="GSeekType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tell">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="88">tells the current location within stream</doc>
        <callback name="tell">
          <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                           line="106"/>
          <return-value transfer-ownership="none">
            <type name="gint64" c:type="goffset"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="FilterStream" c:type="MirageFilterStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="simplified_partial_read">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="90">reads a chunk of requested data from stream (part of simplified interface)</doc>
        <callback name="simplified_partial_read">
          <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                           line="109"/>
          <return-value transfer-ownership="none">
            <type name="gssize" c:type="gssize"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="FilterStream" c:type="MirageFilterStream*"/>
            </parameter>
            <parameter name="buffer"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="void*"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type name="gsize" c:type="gsize"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="simplified_partial_write">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="91">writes a chunk of requested data to stream (part of simplified interface)</doc>
        <callback name="simplified_partial_write">
          <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                           line="110"/>
          <return-value transfer-ownership="none">
            <type name="gssize" c:type="gssize"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="FilterStream" c:type="MirageFilterStream*"/>
            </parameter>
            <parameter name="buffer"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="void*"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <type name="gsize" c:type="gsize"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="FilterStreamInfo" c:type="MirageFilterStreamInfo">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/filter-stream.h"
           line="28">A structure containing filter stream information. It can be obtained
with call to mirage_filter_stream_get_info().</doc>
      <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                       line="47"/>
      <field name="id" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="30">filter stream ID</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="31">filter stream name</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="writable" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="32">whether filter stream supports write operation</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="description" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="33">zero-terminated array of file type description strings</doc>
        <array c:type="gchar**">
          <type name="utf8" c:type="gchar*"/>
        </array>
      </field>
      <field name="mime_type" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.h"
             line="34">zero-terminated array of file type MIME strings</doc>
        <array c:type="gchar**">
          <type name="utf8" c:type="gchar*"/>
        </array>
      </field>
      <method name="copy" c:identifier="mirage_filter_stream_info_copy">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.c"
             line="98">Copies parser information from @info to @dest.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="49"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="100">a #MirageFilterStreamInfo to copy data from</doc>
            <type name="FilterStreamInfo"
                  c:type="const MirageFilterStreamInfo*"/>
          </instance-parameter>
          <parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="101">a #MirageFilterStreamInfo to copy data to</doc>
            <type name="FilterStreamInfo" c:type="MirageFilterStreamInfo*"/>
          </parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="mirage_filter_stream_info_free">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/filter-stream.c"
             line="114">Frees the allocated fields in @info (but not the structure itself!).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                         line="50"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/filter-stream.c"
                 line="116">a #MirageFilterStreamInfo to free</doc>
            <type name="FilterStreamInfo" c:type="MirageFilterStreamInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="FilterStreamPrivate"
            c:type="MirageFilterStreamPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                       line="65"/>
    </record>
    <class name="Fragment"
           c:symbol-prefix="fragment"
           c:type="MirageFragment"
           parent="Object"
           glib:type-name="MirageFragment"
           glib:get-type="mirage_fragment_get_type"
           glib:type-struct="FragmentClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/fragment.h"
           line="79">All the fields in the &lt;structname&gt;MirageFragment&lt;/structname&gt;
structure are private to the #MirageFragment implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                       line="103"/>
      <implements name="Contextual"/>
      <method name="contains_address"
              c:identifier="mirage_fragment_contains_address">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="219">Checks whether the fragment contains the given address or not.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="117"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="226">%TRUE if @address falls inside fragment, %FALSE if it does not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="221">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="222">address to be checked</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_address" c:identifier="mirage_fragment_get_address">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="111">Retrieves fragment's start address. The @address is given in sectors.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="121">start address</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="113">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_length" c:identifier="mirage_fragment_get_length">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="152">Retrieves fragment's length. The returned @length is given in sectors.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="113"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="162">length</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="154">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_writable" c:identifier="mirage_fragment_is_writable">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="879">Checks if fragment is writable, i.e., whether it has main channel data
stream set and this stream is writable.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="145"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="886">%TRUE if fragment is writable, %FALSE if it is not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="881">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="main_data_get_filename"
              c:identifier="mirage_fragment_main_data_get_filename">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="256">Retrieves filename of main channel data stream.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="121"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="262">pointer to main channel data file name string.
The string belongs to object and should not be modified.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="258">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="main_data_get_format"
              c:identifier="mirage_fragment_main_data_get_format">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="341">Retrieves main data file format.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="127"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="347">main data file format</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="343">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="main_data_get_offset"
              c:identifier="mirage_fragment_main_data_get_offset">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="287">Retrieves main data file offset.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="123"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="293">main data file offset</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="289">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="main_data_get_size"
              c:identifier="mirage_fragment_main_data_get_size">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="314">Retrieves main data file sector size.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="125"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="320">main data file sector size</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="316">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="main_data_set_format"
              c:identifier="mirage_fragment_main_data_set_format">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="328">Sets main data file format. @format must be one of #MirageMainDataFormat.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="126"/>
        <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="cdemu-code/libmirage/mirage/fragment.c"
                 line="330">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="331">main data file format</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="main_data_set_offset"
              c:identifier="mirage_fragment_main_data_set_offset">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="274">Sets main data file offset.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="122"/>
        <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="cdemu-code/libmirage/mirage/fragment.c"
                 line="276">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="277">main data file offset</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="main_data_set_size"
              c:identifier="mirage_fragment_main_data_set_size">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="301">Sets main data file sector size.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="124"/>
        <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="cdemu-code/libmirage/mirage/fragment.c"
                 line="303">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="304">main data file sector size</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="main_data_set_stream"
              c:identifier="mirage_fragment_main_data_set_stream">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="237">Sets main channel data stream.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="120"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="239">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="240">a #MirageStream on main channel data file</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_main_data"
              c:identifier="mirage_fragment_read_main_data"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="387">Reads main channel data for sector at fragment-relative @address (given
in sectors). The buffer for reading data into is allocated by function
and should be freed using g_free() when no longer needed. The pointer
to buffer is stored into @buffer and the length of read data is stored into
@length.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="129"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="401">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="389">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="390">address</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="buffer"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="391">location to store pointer to buffer with read data, or %NULL</doc>
            <array length="2" zero-terminated="0" c:type="guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="length"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="392">location to store read data length</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read_subchannel_data"
              c:identifier="mirage_fragment_read_subchannel_data"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="698">Writes subchannel data for sector at fragment-relative @address (given
in sectors).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="142"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="709">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="700">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="701">address</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="buffer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="702">buffer with data to write, or %NULL</doc>
            <array length="2" zero-terminated="0" c:type="guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="length"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="703">location to store read data length</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_address" c:identifier="mirage_fragment_set_address">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="88">Sets fragment's start address. The @address is given in sectors.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;

&lt;note&gt;
Causes top-down change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="109"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="90">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="91">start address</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_length" c:identifier="mirage_fragment_set_length">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="129">Sets fragment's length. The @length is given in sectors.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="112"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="131">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="132">length</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="subchannel_data_get_filename"
              c:identifier="mirage_fragment_subchannel_data_get_filename">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="566">Retrieves filename of subchannel data input stream.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="134"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="572">pointer to subchannel data file name string.
The string belongs to object and should not be modified.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="568">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="subchannel_data_get_format"
              c:identifier="mirage_fragment_subchannel_data_get_format">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="652">Retrieves subchannel data file format.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="658">subchannel data file format</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="654">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="subchannel_data_get_offset"
              c:identifier="mirage_fragment_subchannel_data_get_offset">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="597">Retrieves subchannel data file offset.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="136"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="603">subchannel data file offset</doc>
          <type name="guint64" c:type="guint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="599">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="subchannel_data_get_size"
              c:identifier="mirage_fragment_subchannel_data_get_size">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="624">Retrieves subchannel data file sector size.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="138"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="630">subchannel data file sector size</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="626">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="subchannel_data_set_format"
              c:identifier="mirage_fragment_subchannel_data_set_format">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="638">Sets subchannel data file format. @format must be a combination of
#MirageSubchannelDataFormat.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="139"/>
        <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="cdemu-code/libmirage/mirage/fragment.c"
                 line="640">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="641">subchannel data file format</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="subchannel_data_set_offset"
              c:identifier="mirage_fragment_subchannel_data_set_offset">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="584">Sets subchannel data file offset.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="135"/>
        <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="cdemu-code/libmirage/mirage/fragment.c"
                 line="586">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="587">subchannel data file offset</doc>
            <type name="guint64" c:type="guint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="subchannel_data_set_size"
              c:identifier="mirage_fragment_subchannel_data_set_size">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="611">Sets subchannel data file sector size.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="137"/>
        <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="cdemu-code/libmirage/mirage/fragment.c"
                 line="613">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="614">subchannel data file sector size</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="subchannel_data_set_stream"
              c:identifier="mirage_fragment_subchannel_data_set_stream">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="547">Sets subchannel data stream.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="133"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="549">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="550">a #MirageStream on subchannel data file</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="use_the_rest_of_file"
              c:identifier="mirage_fragment_use_the_rest_of_file"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="171">Uses the rest of data file. It automatically calculates and sets fragment's
length.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="179">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="173">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write_main_data"
              c:identifier="mirage_fragment_write_main_data"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="458">Writes main channel data for sector at fragment-relative @address (given
in sectors).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="130"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="469">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="460">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="461">address</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="buffer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="462">buffer with data to write, or %NULL</doc>
            <array length="2" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="463">length of data to write</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_subchannel_data"
              c:identifier="mirage_fragment_write_subchannel_data"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="795">Reads subchannel data for sector at fragment-relative @address (given
in sectors). The buffer for reading data into is allocated by function
and should be freed using g_free() when no longer needed. The pointer
to buffer is stored into @buffer and the length of read data is stored into
@length.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                         line="143"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/fragment.c"
               line="809">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="797">a #MirageFragment</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="798">address</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="buffer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="799">buffer with read data, or %NULL</doc>
            <array length="2" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/fragment.c"
                 line="800">length of data to write</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="FragmentPrivate" c:type="MirageFragmentPrivate*"/>
      </field>
      <glib:signal name="layout-changed" when="last">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.c"
             line="940">Emitted when a layout of #MirageFragment changed in a way that causes a bottom-up change.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="FragmentClass"
            c:type="MirageFragmentClass"
            glib:is-gtype-struct-for="Fragment">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/fragment.h"
           line="94">The class structure for the &lt;structname&gt;MirageFragment&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                       line="103"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.h"
             line="96">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
    </record>
    <record name="FragmentPrivate"
            c:type="MirageFragmentPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                       line="77"/>
    </record>
    <enumeration name="FragmentRole" c:type="MirageFragmentRole">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/writer.h"
           line="29">Fragment roles.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                       line="40"/>
      <member name="pregap" value="0" c:identifier="MIRAGE_FRAGMENT_PREGAP">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="31">pregap fragment</doc>
      </member>
      <member name="data" value="1" c:identifier="MIRAGE_FRAGMENT_DATA">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="32">data fragment</doc>
      </member>
    </enumeration>
    <function-macro name="INDEX"
                    c:identifier="MIRAGE_INDEX"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/index.h"
                       line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="INDEX_CLASS"
                    c:identifier="MIRAGE_INDEX_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/index.h"
                       line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="INDEX_GET_CLASS"
                    c:identifier="MIRAGE_INDEX_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/index.h"
                       line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="ISRC_SIZE" value="12" c:type="MIRAGE_ISRC_SIZE">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/track.h"
           line="28">Length of ISRC string.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="33"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <function-macro name="IS_CDTEXT_CODER"
                    c:identifier="MIRAGE_IS_CDTEXT_CODER"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="58"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CDTEXT_CODER_CLASS"
                    c:identifier="MIRAGE_IS_CDTEXT_CODER_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="59"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CONTEXT"
                    c:identifier="MIRAGE_IS_CONTEXT"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/context.h"
                       line="51"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CONTEXTUAL"
                    c:identifier="MIRAGE_IS_CONTEXTUAL"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/contextual.h"
                       line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CONTEXT_CLASS"
                    c:identifier="MIRAGE_IS_CONTEXT_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/context.h"
                       line="52"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DISC"
                    c:identifier="MIRAGE_IS_DISC"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                       line="68"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DISC_CLASS"
                    c:identifier="MIRAGE_IS_DISC_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                       line="69"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILE_STREAM"
                    c:identifier="MIRAGE_IS_FILE_STREAM"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/file-stream.h"
                       line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILE_STREAM_CLASS"
                    c:identifier="MIRAGE_IS_FILE_STREAM_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/file-stream.h"
                       line="36"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILTER_STREAM"
                    c:identifier="MIRAGE_IS_FILTER_STREAM"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                       line="59"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILTER_STREAM_CLASS"
                    c:identifier="MIRAGE_IS_FILTER_STREAM_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/filter-stream.h"
                       line="60"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FRAGMENT"
                    c:identifier="MIRAGE_IS_FRAGMENT"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                       line="72"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FRAGMENT_CLASS"
                    c:identifier="MIRAGE_IS_FRAGMENT_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                       line="73"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_INDEX"
                    c:identifier="MIRAGE_IS_INDEX"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/index.h"
                       line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_INDEX_CLASS"
                    c:identifier="MIRAGE_IS_INDEX_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/index.h"
                       line="36"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_LANGUAGE"
                    c:identifier="MIRAGE_IS_LANGUAGE"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/language.h"
                       line="76"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_LANGUAGE_CLASS"
                    c:identifier="MIRAGE_IS_LANGUAGE_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/language.h"
                       line="77"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_OBJECT"
                    c:identifier="MIRAGE_IS_OBJECT"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/object.h"
                       line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_OBJECT_CLASS"
                    c:identifier="MIRAGE_IS_OBJECT_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/object.h"
                       line="36"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PARSER"
                    c:identifier="MIRAGE_IS_PARSER"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                       line="58"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PARSER_CLASS"
                    c:identifier="MIRAGE_IS_PARSER_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                       line="59"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PLUGIN"
                    c:identifier="MIRAGE_IS_PLUGIN"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/plugin.h"
                       line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_PLUGIN_CLASS"
                    c:identifier="MIRAGE_IS_PLUGIN_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/plugin.h"
                       line="36"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SECTOR"
                    c:identifier="MIRAGE_IS_SECTOR"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                       line="73"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SECTOR_CLASS"
                    c:identifier="MIRAGE_IS_SECTOR_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                       line="74"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SESSION"
                    c:identifier="MIRAGE_IS_SESSION"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="87"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SESSION_CLASS"
                    c:identifier="MIRAGE_IS_SESSION_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="88"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_STREAM"
                    c:identifier="MIRAGE_IS_STREAM"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                       line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_TRACK"
                    c:identifier="MIRAGE_IS_TRACK"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="97"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_TRACK_CLASS"
                    c:identifier="MIRAGE_IS_TRACK_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="98"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_WRITER"
                    c:identifier="MIRAGE_IS_WRITER"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                       line="90"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_WRITER_CLASS"
                    c:identifier="MIRAGE_IS_WRITER_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                       line="91"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Index"
           c:symbol-prefix="index"
           c:type="MirageIndex"
           parent="Object"
           glib:type-name="MirageIndex"
           glib:get-type="mirage_index_get_type"
           glib:type-struct="IndexClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/index.h"
           line="42">All the fields in the &lt;structname&gt;MirageIndex&lt;/structname&gt;
structure are private to the #MirageIndex implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/index.h"
                       line="66"/>
      <implements name="Contextual"/>
      <method name="get_address" c:identifier="mirage_index_get_address">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/index.c"
             line="92">Retrieves index' start adddress. The @address is given in sectors.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/index.h"
                         line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/index.c"
               line="98">address</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/index.c"
                 line="94">a #MirageIndex</doc>
            <type name="Index" c:type="MirageIndex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_number" c:identifier="mirage_index_get_number">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/index.c"
             line="64">Retrieves index' index number.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/index.h"
                         line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/index.c"
               line="70">index number</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/index.c"
                 line="66">a #MirageIndex</doc>
            <type name="Index" c:type="MirageIndex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_address" c:identifier="mirage_index_set_address">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/index.c"
             line="79">Sets index' start address. The @address is given in sectors.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/index.h"
                         line="74"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/index.c"
                 line="81">a #MirageIndex</doc>
            <type name="Index" c:type="MirageIndex*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/index.c"
                 line="82">address</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_number" c:identifier="mirage_index_set_number">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/index.c"
             line="51">Sets index' index number.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/index.h"
                         line="71"/>
        <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="cdemu-code/libmirage/mirage/index.c"
                 line="53">a #MirageIndex</doc>
            <type name="Index" c:type="MirageIndex*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/index.c"
                 line="54">index number</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="IndexPrivate" c:type="MirageIndexPrivate*"/>
      </field>
    </class>
    <record name="IndexClass"
            c:type="MirageIndexClass"
            glib:is-gtype-struct-for="Index">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/index.h"
           line="57">The class structure for the &lt;structname&gt;MirageIndex&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/index.h"
                       line="66"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/index.h"
             line="59">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
    </record>
    <record name="IndexPrivate"
            c:type="MirageIndexPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/index.h"
                       line="40"/>
    </record>
    <function-macro name="LANGUAGE"
                    c:identifier="MIRAGE_LANGUAGE"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/language.h"
                       line="74"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="LANGUAGE_CLASS"
                    c:identifier="MIRAGE_LANGUAGE_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/language.h"
                       line="75"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="LANGUAGE_GET_CLASS"
                    c:identifier="MIRAGE_LANGUAGE_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/language.h"
                       line="78"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Language"
           c:symbol-prefix="language"
           c:type="MirageLanguage"
           parent="Object"
           glib:type-name="MirageLanguage"
           glib:get-type="mirage_language_get_type"
           glib:type-struct="LanguageClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/language.h"
           line="83">All the fields in the &lt;structname&gt;MirageLanguage&lt;/structname&gt;
structure are private to the #MirageLanguage implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/language.h"
                       line="107"/>
      <implements name="Contextual"/>
      <method name="get_code" c:identifier="mirage_language_get_code">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.c"
             line="109">Retrieves language's language code.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/language.h"
                         line="114"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/language.c"
               line="115">language code</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/language.c"
                 line="111">a #MirageLanguage</doc>
            <type name="Language" c:type="MirageLanguage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pack_data"
              c:identifier="mirage_language_get_pack_data"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.c"
             line="164">Retrieves pack data of type @pack_type. A pointer to buffer containing pack
data is stored in @pack data; the buffer belongs to the object and therefore
should not be modified.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/language.h"
                         line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/language.c"
               line="176">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/language.c"
                 line="166">a #MirageLanguage</doc>
            <type name="Language" c:type="MirageLanguage*"/>
          </instance-parameter>
          <parameter name="pack_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/language.c"
                 line="167">pack type</doc>
            <type name="LanguagePackType" c:type="MirageLanguagePackType"/>
          </parameter>
          <parameter name="pack_data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/language.c"
                 line="168">location to store buffer containing pack data, or %NULL</doc>
            <array length="2" zero-terminated="0" c:type="const guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="length"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/language.c"
                 line="169">location to store length of pack data, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_code" c:identifier="mirage_language_set_code">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.c"
             line="97">Sets language's language code.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/language.h"
                         line="113"/>
        <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="cdemu-code/libmirage/mirage/language.c"
                 line="99">a #MirageLanguage</doc>
            <type name="Language" c:type="MirageLanguage*"/>
          </instance-parameter>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/language.c"
                 line="100">language code</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pack_data"
              c:identifier="mirage_language_set_pack_data"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.c"
             line="123">Sets pack data of type @pack_type to data in @pack_data. @length is length of
data in @pack_data. @pack_type must be one of #MirageLanguagePackType.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/language.h"
                         line="117"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/language.c"
               line="134">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/language.c"
                 line="125">a #MirageLanguage</doc>
            <type name="Language" c:type="MirageLanguage*"/>
          </instance-parameter>
          <parameter name="pack_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/language.c"
                 line="126">pack type</doc>
            <type name="LanguagePackType" c:type="MirageLanguagePackType"/>
          </parameter>
          <parameter name="pack_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/language.c"
                 line="127">pack data</doc>
            <array length="2" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/language.c"
                 line="128">length of pack data</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="LanguagePrivate" c:type="MirageLanguagePrivate*"/>
      </field>
    </class>
    <record name="LanguageClass"
            c:type="MirageLanguageClass"
            glib:is-gtype-struct-for="Language">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/language.h"
           line="98">The class structure for the &lt;structname&gt;MirageLanguage&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/language.h"
                       line="107"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="100">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
    </record>
    <enumeration name="LanguagePackType" c:type="MirageLanguagePackType">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/language.h"
           line="28">CD-TEXT pack types.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/language.h"
                       line="67"/>
      <member name="title"
              value="128"
              c:identifier="MIRAGE_LANGUAGE_PACK_TITLE">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="30">Album name and Track titles</doc>
      </member>
      <member name="performer"
              value="129"
              c:identifier="MIRAGE_LANGUAGE_PACK_PERFORMER">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="31">Singer/player/conductor/orchestra</doc>
      </member>
      <member name="songwriter"
              value="130"
              c:identifier="MIRAGE_LANGUAGE_PACK_SONGWRITER">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="32">Name of the songwriter</doc>
      </member>
      <member name="composer"
              value="131"
              c:identifier="MIRAGE_LANGUAGE_PACK_COMPOSER">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="33">Name of the composer</doc>
      </member>
      <member name="arranger"
              value="132"
              c:identifier="MIRAGE_LANGUAGE_PACK_ARRANGER">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="34">Name of the arranger</doc>
      </member>
      <member name="message"
              value="133"
              c:identifier="MIRAGE_LANGUAGE_PACK_MESSAGE">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="35">Message from content provider or artist</doc>
      </member>
      <member name="disc_id"
              value="134"
              c:identifier="MIRAGE_LANGUAGE_PACK_DISC_ID">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="36">Disc identification information</doc>
      </member>
      <member name="genre"
              value="135"
              c:identifier="MIRAGE_LANGUAGE_PACK_GENRE">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="37">Genre identification / information</doc>
      </member>
      <member name="toc" value="136" c:identifier="MIRAGE_LANGUAGE_PACK_TOC">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="38">TOC information</doc>
      </member>
      <member name="toc2" value="137" c:identifier="MIRAGE_LANGUAGE_PACK_TOC2">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="39">Second TOC</doc>
      </member>
      <member name="res_8a"
              value="138"
              c:identifier="MIRAGE_LANGUAGE_PACK_RES_8A">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="40">Reserved 8A</doc>
      </member>
      <member name="res_8b"
              value="139"
              c:identifier="MIRAGE_LANGUAGE_PACK_RES_8B">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="41">Reserved 8B</doc>
      </member>
      <member name="res_8c"
              value="140"
              c:identifier="MIRAGE_LANGUAGE_PACK_RES_8C">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="42">Reserved 8C</doc>
      </member>
      <member name="closed_info"
              value="141"
              c:identifier="MIRAGE_LANGUAGE_PACK_CLOSED_INFO">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="43">For internal use by content provider</doc>
      </member>
      <member name="upc_isrc"
              value="142"
              c:identifier="MIRAGE_LANGUAGE_PACK_UPC_ISRC">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="44">UPC/EAN code of album and ISRC for tracks</doc>
      </member>
      <member name="size" value="143" c:identifier="MIRAGE_LANGUAGE_PACK_SIZE">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/language.h"
             line="45">Size information of the block</doc>
      </member>
    </enumeration>
    <record name="LanguagePrivate"
            c:type="MirageLanguagePrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/language.h"
                       line="81"/>
    </record>
    <constant name="MCN_SIZE" value="13" c:type="MIRAGE_MCN_SIZE">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/session.h"
           line="28">Length of MCN string.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="33"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <enumeration name="MainDataFormat" c:type="MirageMainDataFormat">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/fragment.h"
           line="28">Track file data formats.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                       line="41"/>
      <member name="data"
              value="1"
              c:identifier="MIRAGE_MAIN_DATA_FORMAT_DATA">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.h"
             line="30">binary data</doc>
      </member>
      <member name="audio"
              value="2"
              c:identifier="MIRAGE_MAIN_DATA_FORMAT_AUDIO">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.h"
             line="31">audio data</doc>
      </member>
      <member name="audio_swap"
              value="4"
              c:identifier="MIRAGE_MAIN_DATA_FORMAT_AUDIO_SWAP">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.h"
             line="32">audio data that needs to be swapped</doc>
      </member>
    </enumeration>
    <enumeration name="MediumType" c:type="MirageMediumType">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/disc.h"
           line="28">Medium types.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/disc.h"
                       line="45"/>
      <member name="cd" value="1" c:identifier="MIRAGE_MEDIUM_CD">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.h"
             line="30">CD disc</doc>
      </member>
      <member name="dvd" value="2" c:identifier="MIRAGE_MEDIUM_DVD">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.h"
             line="31">DVD disc</doc>
      </member>
      <member name="bd" value="3" c:identifier="MIRAGE_MEDIUM_BD">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.h"
             line="32">BD (Blue-Ray) disc</doc>
      </member>
      <member name="hd" value="4" c:identifier="MIRAGE_MEDIUM_HD">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.h"
             line="33">HD-DVD disc</doc>
      </member>
      <member name="hdd" value="5" c:identifier="MIRAGE_MEDIUM_HDD">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/disc.h"
             line="34">Hard-disk</doc>
      </member>
    </enumeration>
    <function-macro name="OBJECT"
                    c:identifier="MIRAGE_OBJECT"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/object.h"
                       line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="OBJECT_CLASS"
                    c:identifier="MIRAGE_OBJECT_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/object.h"
                       line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="OBJECT_GET_CLASS"
                    c:identifier="MIRAGE_OBJECT_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/object.h"
                       line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Object"
           c:symbol-prefix="object"
           c:type="MirageObject"
           parent="GObject.Object"
           glib:type-name="MirageObject"
           glib:get-type="mirage_object_get_type"
           glib:type-struct="ObjectClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/object.h"
           line="44">All the fields in the &lt;structname&gt;MirageObject&lt;/structname&gt;
structure are private to the #MirageObject implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/object.h"
                       line="68"/>
      <implements name="Contextual"/>
      <method name="get_parent" c:identifier="mirage_object_get_parent">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/object.c"
             line="100">Returns pointer to object's parent object.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/object.h"
                         line="74"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/object.c"
               line="106">parent object, or %NULL.</doc>
          <type name="Object" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/object.c"
                 line="102">a #MirageObject</doc>
            <type name="Object" c:type="MirageObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_parent" c:identifier="mirage_object_set_parent">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/object.c"
             line="68">Sets object's parent. If @parent is %NULL, the object's parent is
reset.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/object.h"
                         line="73"/>
        <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="cdemu-code/libmirage/mirage/object.c"
                 line="70">a #MirageObject</doc>
            <type name="Object" c:type="MirageObject*"/>
          </instance-parameter>
          <parameter name="parent"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/object.c"
                 line="71">parent</doc>
            <type name="Object" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ObjectPrivate" c:type="MirageObjectPrivate*"/>
      </field>
      <glib:signal name="context-changed" when="last">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/object.c"
             line="201">Emitted when a new #MirageContext is set to a #MirageObject.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="ObjectClass"
            c:type="MirageObjectClass"
            glib:is-gtype-struct-for="Object">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/object.h"
           line="59">The class structure for the &lt;structname&gt;MirageObject&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/object.h"
                       line="68"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/object.h"
             line="61">the parent class</doc>
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="ObjectPrivate"
            c:type="MirageObjectPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/object.h"
                       line="41"/>
    </record>
    <function-macro name="PARSER"
                    c:identifier="MIRAGE_PARSER"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                       line="56"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PARSER_CLASS"
                    c:identifier="MIRAGE_PARSER_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                       line="57"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PARSER_GET_CLASS"
                    c:identifier="MIRAGE_PARSER_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                       line="60"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PLUGIN"
                    c:identifier="MIRAGE_PLUGIN"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/plugin.h"
                       line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PLUGIN_CLASS"
                    c:identifier="MIRAGE_PLUGIN_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/plugin.h"
                       line="34"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="PLUGIN_GET_CLASS"
                    c:identifier="MIRAGE_PLUGIN_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/plugin.h"
                       line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Parser"
           c:symbol-prefix="parser"
           c:type="MirageParser"
           parent="Object"
           abstract="1"
           glib:type-name="MirageParser"
           glib:get-type="mirage_parser_get_type"
           glib:type-struct="ParserClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/parser.h"
           line="66">All the fields in the &lt;structname&gt;MirageParser&lt;/structname&gt;
structure are private to the #MirageParser implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                       line="94"/>
      <implements name="Contextual"/>
      <virtual-method name="load_image" invoker="load_image" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.c"
             line="149">Loads the image stored in @streams.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                         line="93"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/parser.c"
               line="157">a #MirageDisc object representing image on success, %NULL on failure</doc>
          <type name="Disc" c:type="MirageDisc*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="151">a #MirageParser</doc>
            <type name="Parser" c:type="MirageParser*"/>
          </instance-parameter>
          <parameter name="streams" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="152">%NULL-terminated array of data streams</doc>
            <array c:type="MirageStream**">
              <type name="Stream" c:type="MirageStream*"/>
            </array>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_redbook_pregap"
              c:identifier="mirage_parser_add_redbook_pregap">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.c"
             line="206">A helper function, intended to be used in simpler parsers that don't get proper
pregap information from the image file.

First, it sets disc layout start to -150. Then, it adds 150-sector pregap to
first track of each session found on the layout; for this, a NULL fragment is
used. If track already has a pregap, then the pregaps are stacked.

Note that the function works only on discs which have medium type set to
CD-ROM. On other discs, it does nothing.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/parser.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="cdemu-code/libmirage/mirage/parser.c"
                 line="208">a #MirageParser</doc>
            <type name="Parser" c:type="MirageParser*"/>
          </instance-parameter>
          <parameter name="disc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="209">disc object</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_text_stream"
              c:identifier="mirage_parser_create_text_stream"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.c"
             line="281">Constructs a filter chain for reading text files on top of provided
@stream. First, if encoding is provided via parser parameters, or if
a multi-byte encoding is detected, a #GConverterInputStream with a
#GCharsetConverter is applied. Then on top of it, a #GDataInputStream
is created, which can be used to read text file line-by-line.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                         line="107"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/parser.c"
               line="293">a #GDataInputStream object on success,
or %NULL on failure.</doc>
          <type name="Gio.DataInputStream" c:type="GDataInputStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="283">a #MirageParser</doc>
            <type name="Parser" c:type="MirageParser*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="284">a #MirageStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="generate_info"
              c:identifier="mirage_parser_generate_info"
              introspectable="0">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.c"
             line="113">Generates parser information from the input fields. It is intended as a function
for creating parser information in parser implementations.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                         line="99"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="115">a #MirageParser</doc>
            <type name="Parser" c:type="MirageParser*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="116">parser ID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="117">parser name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="num_types" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="118">number of MIME types</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="119">description and MIME type string pairs, one for each defined type</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="get_info" c:identifier="mirage_parser_get_info">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.c"
             line="134">Retrieves parser information.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                         line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/parser.c"
               line="140">a pointer to parser information structure.  The
structure belongs to object and should not be modified.</doc>
          <type name="ParserInfo" c:type="const MirageParserInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="136">a #MirageParser</doc>
            <type name="Parser" c:type="MirageParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="guess_medium_type"
              c:identifier="mirage_parser_guess_medium_type">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.c"
             line="165">Attempts to guess medium type by looking at the length of the disc layout.
Currently, it supports identification of CD-ROM media, which are assumed to
have layout length of 90 minutes or less.

Note that this function does not set the medium type to disc object; you still
need to do it via mirage_disc_set_medium_type(). It is meant to be used in
simple parsers whose image files don't provide medium type information.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                         line="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/parser.c"
               line="178">a value from #MirageMediumType, according to the guessed medium type.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="167">a #MirageParser</doc>
            <type name="Parser" c:type="MirageParser*"/>
          </instance-parameter>
          <parameter name="disc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="168">disc object</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_image"
              c:identifier="mirage_parser_load_image"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.c"
             line="149">Loads the image stored in @streams.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                         line="102"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/parser.c"
               line="157">a #MirageDisc object representing image on success, %NULL on failure</doc>
          <type name="Disc" c:type="MirageDisc*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="151">a #MirageParser</doc>
            <type name="Parser" c:type="MirageParser*"/>
          </instance-parameter>
          <parameter name="streams" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="152">%NULL-terminated array of data streams</doc>
            <array c:type="MirageStream**">
              <type name="Stream" c:type="MirageStream*"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ParserPrivate" c:type="MirageParserPrivate*"/>
      </field>
    </class>
    <record name="ParserClass"
            c:type="MirageParserClass"
            glib:is-gtype-struct-for="Parser">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/parser.h"
           line="81">The class structure for the &lt;structname&gt;MirageParser&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                       line="94"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.h"
             line="83">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
      <field name="load_image">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.h"
             line="84">loads image</doc>
        <callback name="load_image" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                           line="93"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="157">a #MirageDisc object representing image on success, %NULL on failure</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/parser.c"
                   line="151">a #MirageParser</doc>
              <type name="Parser" c:type="MirageParser*"/>
            </parameter>
            <parameter name="streams" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/parser.c"
                   line="152">%NULL-terminated array of data streams</doc>
              <array c:type="MirageStream**">
                <type name="Stream" c:type="MirageStream*"/>
              </array>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="ParserInfo" c:type="MirageParserInfo">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/parser.h"
           line="29">A structure containing parser information. It can be obtained with call to
mirage_parser_get_info().</doc>
      <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                       line="46"/>
      <field name="id" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.h"
             line="31">parser ID</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.h"
             line="32">parser name</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="description" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.h"
             line="33">zero-terminated array of file type description strings</doc>
        <array c:type="gchar**">
          <type name="utf8" c:type="gchar*"/>
        </array>
      </field>
      <field name="mime_type" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.h"
             line="34">zero-terminated array of file type MIME strings</doc>
        <array c:type="gchar**">
          <type name="utf8" c:type="gchar*"/>
        </array>
      </field>
      <method name="copy" c:identifier="mirage_parser_info_copy">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.c"
             line="79">Copies parser information from @info to @dest.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                         line="48"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="81">a #MirageParserInfo to copy data from</doc>
            <type name="ParserInfo" c:type="const MirageParserInfo*"/>
          </instance-parameter>
          <parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="82">a #MirageParserInfo to copy data to</doc>
            <type name="ParserInfo" c:type="MirageParserInfo*"/>
          </parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="mirage_parser_info_free">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/parser.c"
             line="94">Frees the allocated fields in @info (but not the structure itself!).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                         line="49"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/parser.c"
                 line="96">a #MirageParserInfo to free</doc>
            <type name="ParserInfo" c:type="MirageParserInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="ParserPrivate"
            c:type="MirageParserPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/parser.h"
                       line="64"/>
    </record>
    <callback name="PasswordFunction" c:type="MiragePasswordFunction">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/context.h"
           line="29">Password function type used to obtain password for encrypted
images. A password function needs to be set to #MirageContext via
mirage_context_set_password_function(), along with @user_data that
the password function should be called with.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/context.h"
                       line="42"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/context.h"
             line="38">password string on success, otherwise %NULL. Password string should
be a copy, allocated via function such as g_strdup(), and will be freed after
it is used.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="0">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/context.h"
               line="31">user data passed to password function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="Plugin"
           c:symbol-prefix="plugin"
           c:type="MiragePlugin"
           parent="GObject.TypeModule"
           glib:type-name="MiragePlugin"
           glib:get-type="mirage_plugin_get_type"
           glib:type-struct="PluginClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/plugin.h"
           line="43">All the fields in the &lt;structname&gt;MiragePlugin&lt;/structname&gt;
structure are private to the #MiragePlugin implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/plugin.h"
                       line="67"/>
      <implements name="GObject.TypePlugin"/>
      <constructor name="new" c:identifier="mirage_plugin_new">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/plugin.c"
             line="63">Creates new plugin.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/plugin.h"
                         line="72"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/plugin.c"
               line="69">a new #MiragePlugin object that represents plugin. It should be
released with g_object_unref() when no longer needed.</doc>
          <type name="Plugin" c:type="MiragePlugin*"/>
        </return-value>
        <parameters>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/plugin.c"
                 line="65">plugin's filename</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <property name="filename"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                default-value="NULL">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent_instance">
        <type name="GObject.TypeModule" c:type="GTypeModule"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="PluginPrivate" c:type="MiragePluginPrivate*"/>
      </field>
    </class>
    <record name="PluginClass"
            c:type="MiragePluginClass"
            glib:is-gtype-struct-for="Plugin">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/plugin.h"
           line="58">The class structure for the &lt;structname&gt;MiragePlugin&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/plugin.h"
                       line="67"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/plugin.h"
             line="60">the parent class</doc>
        <type name="GObject.TypeModuleClass" c:type="GTypeModuleClass"/>
      </field>
    </record>
    <record name="PluginPrivate"
            c:type="MiragePluginPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/plugin.h"
                       line="41"/>
    </record>
    <function-macro name="SECTOR"
                    c:identifier="MIRAGE_SECTOR"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                       line="71"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SECTOR_CLASS"
                    c:identifier="MIRAGE_SECTOR_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                       line="72"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SECTOR_GET_CLASS"
                    c:identifier="MIRAGE_SECTOR_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                       line="75"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SESSION"
                    c:identifier="MIRAGE_SESSION"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="85"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SESSION_CLASS"
                    c:identifier="MIRAGE_SESSION_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="86"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SESSION_GET_CLASS"
                    c:identifier="MIRAGE_SESSION_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="89"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="SOVERSION_MAJOR"
              value="11"
              c:type="MIRAGE_SOVERSION_MAJOR">
      <doc xml:space="preserve"
           filename="build/mirage/version.h"
           line="94">&lt;para&gt;
The major component of semantic version of the libMirage library. Like
#mirage_soversion_major, but from the headers used at application compile time,
rather than from the library linked against at application run time.
&lt;/para&gt;</doc>
      <source-position filename="build/mirage/version.h" line="103"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SOVERSION_MINOR" value="0" c:type="MIRAGE_SOVERSION_MINOR">
      <doc xml:space="preserve"
           filename="build/mirage/version.h"
           line="105">&lt;para&gt;
The minor component of semantic version of the libMirage library. Like
#mirage_soversion_minor, but from the headers used at application compile time,
rather than from the library linked against at application run time.
&lt;/para&gt;</doc>
      <source-position filename="build/mirage/version.h" line="114"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="SOVERSION_PATCH" value="0" c:type="MIRAGE_SOVERSION_PATCH">
      <doc xml:space="preserve"
           filename="build/mirage/version.h"
           line="116">&lt;para&gt;
The patch component of semantic version of the libMirage library. Like
#mirage_soversion_patch, but from the headers used at application compile time,
rather than from the library linked against at application run time.
&lt;/para&gt;</doc>
      <source-position filename="build/mirage/version.h" line="125"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <function-macro name="STREAM"
                    c:identifier="MIRAGE_STREAM"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                       line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="STREAM_GET_INTERFACE"
                    c:identifier="MIRAGE_STREAM_GET_INTERFACE"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                       line="35"/>
      <parameters>
        <parameter name="inst">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Sector"
           c:symbol-prefix="sector"
           c:type="MirageSector"
           parent="Object"
           glib:type-name="MirageSector"
           glib:get-type="mirage_sector_get_type"
           glib:type-struct="SectorClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/sector.h"
           line="80">All the fields in the &lt;structname&gt;MirageSector&lt;/structname&gt;
structure are private to the #MirageSector implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                       line="104"/>
      <implements name="Contextual"/>
      <method name="extract_data"
              c:identifier="mirage_sector_extract_data"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="954">Extracts data from sector. Which parts of main channel data are extracted
depends on provided @main_data_length.

&lt;note&gt;
Intended for internal use.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="971">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="956">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="main_data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="957">location to store pointer to main data buffer</doc>
            <type name="guint8" c:type="const guint8**"/>
          </parameter>
          <parameter name="main_data_length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="958">requested length of data in main data buffer</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="subchannel_format"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="959">requested subchannel data format</doc>
            <type name="SectorSubchannelFormat"
                  c:type="MirageSectorSubchannelFormat"/>
          </parameter>
          <parameter name="subchannel_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="960">location to store pointer to subchannel data buffer, or %NULL</doc>
            <type name="guint8" c:type="const guint8**"/>
          </parameter>
          <parameter name="subchannel_data_length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="961">requested length of data in subchannel data buffer</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="feed_data"
              c:identifier="mirage_sector_feed_data"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="849">Feeds data to sector. If @type is %MIRAGE_SECTOR_RAW or %MIRAGE_SECTOR_RAW_SCRAMBLED,
the real sector type is determined during feeding.

&lt;note&gt;
Intended for internal use.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="869">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="851">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="852">absolute disc address the sector represents. Given in sectors.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="853">track type (one of #MirageSectorType)</doc>
            <type name="SectorType" c:type="MirageSectorType"/>
          </parameter>
          <parameter name="main_data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="854">main data buffer</doc>
            <type name="guint8" c:type="const guint8*"/>
          </parameter>
          <parameter name="main_data_length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="855">length of data in main data buffer</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="subchannel_format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="856">subchannel data format</doc>
            <type name="SectorSubchannelFormat"
                  c:type="MirageSectorSubchannelFormat"/>
          </parameter>
          <parameter name="subchannel_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="857">subchannel data buffer</doc>
            <type name="guint8" c:type="const guint8*"/>
          </parameter>
          <parameter name="subchannel_data_length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="858">length of data in subchannel data buffer</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="ignore_data_mask" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="859">a mask of #MirageSectorValidData values, indicating which parts of main channel sector data, if any, should be ignored and regerated even though they are provided by the data feed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_address" c:identifier="mirage_sector_get_address">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1033">Retrieves absolute disc address of the sector.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="114"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1039">sector address</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1035">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data" c:identifier="mirage_sector_get_data" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1283">Retrieves sector's user data. The pointer to appropriate location in
sector's data buffer is stored into @ret_buf;  therefore, the buffer should not
be modified.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="125"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1294">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1285">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="ret_buf"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1286">location to store pointer to buffer containing user data, or %NULL</doc>
            <array length="1" zero-terminated="0" c:type="const guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="ret_len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1287">location to store length of user data, or %NULL. Length is given in bytes.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_edc_ecc"
              c:identifier="mirage_sector_get_edc_ecc"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1356">Retrieves sector's EDC/ECC data. The pointer to appropriate location in
sector's data buffer is stored into @ret_buf;  therefore, the buffer should not
be modified.

If EDC/ECC data is not provided by image file(s), it is generated.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="128"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1369">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1358">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="ret_buf"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1359">location to store pointer to buffer containing EDC/ECC data, or %NULL</doc>
            <array length="1" zero-terminated="0" c:type="const guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="ret_len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1360">location to store length of EDC/ECC data, or %NULL. Length is given in bytes.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_header"
              c:identifier="mirage_sector_get_header"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1125">Retrieves sector's header. The pointer to appropriate location in
sector's data buffer is stored into @ret_buf; therefore, the buffer should not
be modified.

If header is not provided by image file(s), it is generated.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="119"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1138">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1127">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="ret_buf"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1128">location to store pointer to buffer containing header, or %NULL</doc>
            <array length="1" zero-terminated="0" c:type="const guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="ret_len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1129">location to store length of header, or %NULL. Length is given in bytes.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_sector_type"
              c:identifier="mirage_sector_get_sector_type">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1019">Retrieves sector type (track mode); one of #MirageSectorType.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="113"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1025">sector type (track mode)</doc>
          <type name="SectorType" c:type="MirageSectorType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1021">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subchannel"
              c:identifier="mirage_sector_get_subchannel"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1432">Retrieves sector's subchannel. @format must be one of #MirageSectorSubchannelFormat.
The pointer to appropriate location in sector's data buffer is stored into
@ret_buf;  therefore, the buffer should not be modified.

If subchannel is not provided by image file(s), it is generated.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="131"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1446">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1434">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1435">subchannel format</doc>
            <type name="SectorSubchannelFormat"
                  c:type="MirageSectorSubchannelFormat"/>
          </parameter>
          <parameter name="ret_buf"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1436">location to store pointer to buffer containing subchannel, or %NULL</doc>
            <array length="2" zero-terminated="0" c:type="const guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="ret_len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1437">location to store length of subchannel data, or %NULL. Length is given in bytes.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_subheader"
              c:identifier="mirage_sector_get_subheader"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1202">Retrieves sector's subheader. The pointer to appropriate location in
sector's data buffer is stored into @ret_buf;  therefore, the buffer should not
be modified.

If subheader is not provided by image file(s), it is generated.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="122"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1215">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1204">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="ret_buf"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1205">location to store pointer to buffer containing subheader, or %NULL</doc>
            <array length="1" zero-terminated="0" c:type="const guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="ret_len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1206">location to store length of subheader, or %NULL. Length is given in bytes.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_sync" c:identifier="mirage_sector_get_sync" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1048">Retrieves sector's sync pattern. The pointer to appropriate location in
sector's data buffer is stored into @ret_buf; therefore, the buffer should not
be modified.

If sync pattern is not provided by image file(s), it is generated.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="116"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1061">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1050">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="ret_buf"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1051">location to store pointer to buffer containing sync pattern, or %NULL</doc>
            <array length="1" zero-terminated="0" c:type="const guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="ret_len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1052">location to store length of sync pattern, or %NULL. Length is given in bytes.</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="scramble" c:identifier="mirage_sector_scramble">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1665">Scrambles 2340 bytes of sector data after sync pattern, using scrambler
from ECMA-130 Annex B. Running this function on already-scrambled
sector results in unscrambling.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="139"/>
        <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="cdemu-code/libmirage/mirage/sector.c"
                 line="1667">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_data" c:identifier="mirage_sector_set_data" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1320">Sets sector's user data to that stored in @buf.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="126"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1329">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1322">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1323">buffer containing user data</doc>
            <array length="1" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1324">length of user data</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_edc_ecc"
              c:identifier="mirage_sector_set_edc_ecc"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1396">Sets sector's EDC/ECC data to that stored in @buf.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="129"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1405">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1398">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1399">buffer containing EDC/ECC data</doc>
            <array length="1" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1400">length of EDC/ECC data</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_header"
              c:identifier="mirage_sector_set_header"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1165">Sets sector's header to that stored in @buf.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="120"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1174">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1167">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1168">buffer containing header</doc>
            <array length="1" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1169">length of header</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_subchannel"
              c:identifier="mirage_sector_set_subchannel"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1498">Sets sector's subchannel data to that stored in @buf. @format must be
one of #MirageSectorSubchannelFormat.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="132"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1509">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1500">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1501">subchannel format</doc>
            <type name="SectorSubchannelFormat"
                  c:type="MirageSectorSubchannelFormat"/>
          </parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1502">buffer containing subchannel data</doc>
            <array length="2" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1503">length of subchannel data</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_subheader"
              c:identifier="mirage_sector_set_subheader"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1242">Sets sector's subheader to that stored in @buf.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="123"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1251">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1244">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1245">buffer containing subheader</doc>
            <array length="1" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1246">length of subheader</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sync" c:identifier="mirage_sector_set_sync" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1088">Sets sector's sync pattern to that stored in @buf.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="117"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1097">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1090">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1091">buffer containing sync pattern</doc>
            <array length="1" zero-terminated="0" c:type="const guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1092">length of sync pattern</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify_lec" c:identifier="mirage_sector_verify_lec">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1559">Verifies the sector data in terms of L-EC error detection/correction.
Data sectors (Mode 1, Mode 2 Form 1 and Mode 2 Form 2) contain error
detection/error correction codes which is part of so called layered
error correction. This function calculates the EDC for sector data and
compares it with EDC provided by the image file.

As a result of comparison, the sectors with intentionally faulty EDC
(and possibly ECC, though ECC is not verified) can be discovered.

This function requires EDC/ECC data to be provided by the image. If it
is not provided, it would be generated by #MirageSector on first access
via mirage_sector_get_edc_ecc() using the same algorithm as the one used
by this function. Therefore, in case of EDC/ECC data missing, the verification
automatically succeeds.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="135"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1578">%TRUE if sector passes verification (i.e. no L-EC errors are detected) otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1561">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="verify_subchannel_crc"
              c:identifier="mirage_sector_verify_subchannel_crc">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.c"
             line="1622">Verifies the Q subchannel's CRC for the sector.

As a result of comparison, the sectors with intentionally faulty Q subchannel
can be discovered.

This function requires subchannel data to be provided by the image. If it
is not provided, it would be generated by #MirageSector on first access
via mirage_sector_get_subchannel() using the same algorithm as the one used
by this function. Therefore, in case of subchannel data missing, the verification
automatically succeeds.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                         line="136"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/sector.c"
               line="1637">%TRUE if sector's Q subchannel CRC passes verification otherwise %FALSE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/sector.c"
                 line="1624">a #MirageSector</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SectorPrivate" c:type="MirageSectorPrivate*"/>
      </field>
    </class>
    <record name="SectorClass"
            c:type="MirageSectorClass"
            glib:is-gtype-struct-for="Sector">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/sector.h"
           line="95">The class structure for the &lt;structname&gt;MirageSector&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                       line="104"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.h"
             line="97">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
    </record>
    <record name="SectorPrivate"
            c:type="MirageSectorPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                       line="78"/>
    </record>
    <enumeration name="SectorSubchannelFormat"
                 c:type="MirageSectorSubchannelFormat">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/sector.h"
           line="28">Subchannel selection flags.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                       line="43"/>
      <member name="none" value="0" c:identifier="MIRAGE_SUBCHANNEL_NONE">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.h"
             line="30">no subchannel</doc>
      </member>
      <member name="pw" value="1" c:identifier="MIRAGE_SUBCHANNEL_PW">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.h"
             line="31">PW subchannel; 96 bytes, interleaved P-W</doc>
      </member>
      <member name="q" value="2" c:identifier="MIRAGE_SUBCHANNEL_Q">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.h"
             line="32">Q subchannel; 16 bytes, Q subchannel</doc>
      </member>
      <member name="rw" value="3" c:identifier="MIRAGE_SUBCHANNEL_RW">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.h"
             line="33">RW subchannel; 96 bytes, cooked R-W</doc>
      </member>
    </enumeration>
    <enumeration name="SectorType" c:type="MirageSectorType">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/types.h"
           line="37">Sector type. Also implies track mode.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/types.h"
                       line="62"/>
      <member name="mode0" value="0" c:identifier="MIRAGE_SECTOR_MODE0">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/types.h"
             line="39">Mode 0 sector</doc>
      </member>
      <member name="audio" value="1" c:identifier="MIRAGE_SECTOR_AUDIO">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/types.h"
             line="40">Audio sector</doc>
      </member>
      <member name="mode1" value="2" c:identifier="MIRAGE_SECTOR_MODE1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/types.h"
             line="41">Mode 1 sector</doc>
      </member>
      <member name="mode2" value="3" c:identifier="MIRAGE_SECTOR_MODE2">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/types.h"
             line="42">Mode 2 Formless sector</doc>
      </member>
      <member name="mode2_form1"
              value="4"
              c:identifier="MIRAGE_SECTOR_MODE2_FORM1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/types.h"
             line="43">Mode 2 Form 1 sector</doc>
      </member>
      <member name="mode2_form2"
              value="5"
              c:identifier="MIRAGE_SECTOR_MODE2_FORM2">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/types.h"
             line="44">Mode 2 Form 2 sector</doc>
      </member>
      <member name="mode2_mixed"
              value="6"
              c:identifier="MIRAGE_SECTOR_MODE2_MIXED">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/types.h"
             line="45">Mode 2 Mixed sector</doc>
      </member>
      <member name="raw" value="7" c:identifier="MIRAGE_SECTOR_RAW">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/types.h"
             line="46">raw sector (automatic sector type detection)</doc>
      </member>
      <member name="raw_scrambled"
              value="8"
              c:identifier="MIRAGE_SECTOR_RAW_SCRAMBLED">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/types.h"
             line="47">scrambled raw sector (automatic sector type detection)</doc>
      </member>
    </enumeration>
    <enumeration name="SectorValidData" c:type="MirageSectorValidData">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/sector.h"
           line="45">Sector data validity flags.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/sector.h"
                       line="64"/>
      <member name="sync" value="1" c:identifier="MIRAGE_VALID_SYNC">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.h"
             line="47">sync pattern valid</doc>
      </member>
      <member name="header" value="2" c:identifier="MIRAGE_VALID_HEADER">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.h"
             line="48">header valid</doc>
      </member>
      <member name="subheader" value="4" c:identifier="MIRAGE_VALID_SUBHEADER">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.h"
             line="49">subheader valid</doc>
      </member>
      <member name="data" value="8" c:identifier="MIRAGE_VALID_DATA">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.h"
             line="50">user data valid</doc>
      </member>
      <member name="edc_ecc" value="16" c:identifier="MIRAGE_VALID_EDC_ECC">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.h"
             line="51">EDC/ECC data valid</doc>
      </member>
      <member name="subchan" value="32" c:identifier="MIRAGE_VALID_SUBCHAN">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/sector.h"
             line="52">subchannel valid</doc>
      </member>
    </enumeration>
    <class name="Session"
           c:symbol-prefix="session"
           c:type="MirageSession"
           parent="Object"
           glib:type-name="MirageSession"
           glib:get-type="mirage_session_get_type"
           glib:type-struct="SessionClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/session.h"
           line="94">All the fields in the &lt;structname&gt;MirageSession&lt;/structname&gt;
structure are private to the #MirageSession implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="118"/>
      <implements name="Contextual"/>
      <method name="add_language"
              c:identifier="mirage_session_add_language"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1020">Adds language to session.

@code is language code that should be assigned to added language. If
language with that code is already present in the session, the function fails.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="162"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="1032">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1022">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1023">language code for the added language</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="language" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1024">a #MirageLanguage to be added</doc>
            <type name="Language" c:type="MirageLanguage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_track_by_index"
              c:identifier="mirage_session_add_track_by_index">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="596">Adds track to session layout.

@index is the index at which track is added. Negative index denotes
index going backwards (i.e. -1 adds track at the end, -2 adds track
second-to-last, etc.). If index, either negative or positive, is too big,
track is respectively added at the beginning or at the end of the layout.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="148"/>
        <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="cdemu-code/libmirage/mirage/session.c"
                 line="598">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="599">index at which track should be added</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="track" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="600">a #MirageTrack to be added</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_track_by_number"
              c:identifier="mirage_session_add_track_by_number"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="648">Adds track to session layout.

@number is track number that should be assigned to added track. It determines
track's position in the layout. If track with that number already exists in
the layout, the function fails.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="149"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="665">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="650">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="651">track number for the added track</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="track" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="652">a #MirageTrack to be added</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </parameter>
        </parameters>
      </method>
      <method name="enumerate_languages"
              c:identifier="mirage_session_enumerate_languages">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1207">Iterates over languages list, calling @func for each language.

If @func returns %FALSE, the function immediately returns %FALSE.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="168"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="1217">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1209">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1210">callback function</doc>
            <type name="EnumLanguageCallback"
                  c:type="MirageEnumLanguageCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1211">data to be passed to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="enumerate_tracks"
              c:identifier="mirage_session_enumerate_tracks">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="913">Iterates over tracks list, calling @func for each track in the layout.

If @func returns %FALSE, the function immediately returns %FALSE.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="156"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="923">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="915">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="916">callback function</doc>
            <type name="EnumTrackCallback" c:type="MirageEnumTrackCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="917">data to be passed to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_cdtext_data"
              c:identifier="mirage_session_get_cdtext_data"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1314">Returns CD-TEXT data for session. It internally creates and uses #MirageCdTextCoder
object as an encoder to encode data from #MirageLanguage objects from both session and
its tracks. Buffer with encoded data is stored in @data; it should be freed with
g_free() when no longer needed.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="172"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="1326">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1316">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="data"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1317">location to return buffer with encoded CD-TEXT data</doc>
            <array length="1" zero-terminated="0" c:type="guint8**">
              <type name="guint8" c:type="guint8*"/>
            </array>
          </parameter>
          <parameter name="len"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1318">location to return length of data in buffer</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_language_by_code"
              c:identifier="mirage_session_get_language_by_code"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1170">Retrieves language by language code.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="167"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="1178">a #MirageLanguage on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Language" c:type="MirageLanguage*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1172">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1173">language code of language to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_language_by_index"
              c:identifier="mirage_session_get_language_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1130">Retrieves language by index. If @index is negative, languages from the end of
session are retrieved (e.g. -1 is for last language, -2 for second-to-last
language, etc.). If @index is out of range, regardless of the sign, the
function fails.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="166"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="1141">a #MirageLanguage on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Language" c:type="MirageLanguage*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1132">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1133">index of language to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_leadout_length"
              c:identifier="mirage_session_get_leadout_length">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="551">Retrieves session's leadout length. The returned length is given in sectors.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="144"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="561">leadout length</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="553">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mcn" c:identifier="mirage_session_get_mcn">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="338">Retrieves MCN.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="129"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="344">pointer to MCN string, or %NULL. The string
belongs to the object and should not be modified.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="340">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_next"
              c:identifier="mirage_session_get_next"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1469">Retrieves session that is placed after @self in disc layout.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="176"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="1476">a #MirageSession on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Session" c:type="MirageSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1471">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_number_of_languages"
              c:identifier="mirage_session_get_number_of_languages">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1006">Retrieves number of languages the session contains.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="161"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="1012">number of languages</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1008">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_number_of_tracks"
              c:identifier="mirage_session_get_number_of_tracks">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="582">Retrieves number of tracks in the session layout.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="147"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="588">number of tracks</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="584">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_prev"
              c:identifier="mirage_session_get_prev"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1440">Retrieves session that is placed before @self in disc layout.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="175"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="1447">a #MirageSession on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Session" c:type="MirageSession*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1442">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_session_type"
              c:identifier="mirage_session_get_session_type">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="295">Retrieves session type.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="125"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="301">session type</doc>
          <type name="SessionType" c:type="MirageSessionType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="297">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_track_after"
              c:identifier="mirage_session_get_track_after"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="970">Retrieves track that comes after @track.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="158"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="978">a #MirageTrack on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Track" c:type="MirageTrack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="972">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="track" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="973">a track</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_track_before"
              c:identifier="mirage_session_get_track_before"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="937">Retrieves track that comes before @track.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="157"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="945">a #MirageTrack on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Track" c:type="MirageTrack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="939">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="track" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="940">a track</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_track_by_address"
              c:identifier="mirage_session_get_track_by_address"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="869">Retrieves track by address. @address must be valid (disc-relative) sector
address that is part of the track to be retrieved (i.e. lying between tracks's
start and end sector).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="155"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="879">a #MirageTrack on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Track" c:type="MirageTrack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="871">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="872">address belonging to track to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_track_by_index"
              c:identifier="mirage_session_get_track_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="790">Retrieves track by index. If @index is negative, tracks from the end of
layout are retrieved (e.g. -1 is for last track, -2 for second-to-last
track, etc.). If @index is out of range, regardless of the sign, the
function fails.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="153"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="801">a #MirageTrack on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Track" c:type="MirageTrack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="792">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="793">index of track to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_track_by_number"
              c:identifier="mirage_session_get_track_by_number"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="832">Retrieves track by track number.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="154"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="840">a #MirageTrack on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Track" c:type="MirageTrack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="834">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="835">number of track to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="layout_contains_address"
              c:identifier="mirage_session_layout_contains_address">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="494">Checks whether the session contains the given address or not.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="501">%TRUE if @address falls inside session, %FALSE if it does not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="496">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="497">address to be checked</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="layout_get_first_track"
              c:identifier="mirage_session_layout_get_first_track">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="417">Retrieves track number of the first track in the session layout.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="135"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="427">first track number</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="419">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_get_length"
              c:identifier="mirage_session_layout_get_length">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="477">Retrieves length of the session layout. This means the length of
all tracks combined, including lead-in and lead-out tracks. The returned
length is given in sectors.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="138"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="485">session layout length</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="479">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_get_session_number"
              c:identifier="mirage_session_layout_get_session_number">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="379">Retrieves sessions's session number.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="133"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="385">session number</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="381">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_get_start_sector"
              c:identifier="mirage_session_layout_get_start_sector">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="459">Retrieves start sector of the session layout.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="137"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="469">start sector</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="461">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_set_first_track"
              c:identifier="mirage_session_layout_set_first_track">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="393">Sets first track number to @first_track. This is a number that is
assigned to the first track in the session layout.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;

&lt;note&gt;
Causes top-down change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="134"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="395">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="first_track" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="396">first track number</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="layout_set_session_number"
              c:identifier="mirage_session_layout_set_session_number">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="362">Sets sessions's session number.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="132"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="364">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="365">session number</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="layout_set_start_sector"
              c:identifier="mirage_session_layout_set_start_sector">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="435">Sets start sector of the session layout to @start_sector. This is a sector at which
the first track in the session layout will start.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;

&lt;note&gt;
Causes top-down change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="136"/>
        <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="cdemu-code/libmirage/mirage/session.c"
                 line="437">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="start_sector" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="438">start sector</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_language_by_code"
              c:identifier="mirage_session_remove_language_by_code"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1089">Removes language from session.

@code is language code the language to be removed.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="164"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="1099">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1091">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1092">language code of language to be removed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_language_by_index"
              c:identifier="mirage_session_remove_language_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1059">Removes language from session.

@index is the index of the language to be removed. This function calls
mirage_session_get_language_by_index() so @index behavior is determined by that
function.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="163"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="1071">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1061">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1062">index of language to be removed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_language_by_object"
              c:identifier="mirage_session_remove_language_by_object">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1116">Removes language from session.

@language is a #MirageLanguage object to be removed.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="165"/>
        <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="cdemu-code/libmirage/mirage/session.c"
                 line="1118">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="language" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1119">language object to be removed</doc>
            <type name="Language" c:type="MirageLanguage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_track_by_index"
              c:identifier="mirage_session_remove_track_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="698">Removes track from session layout.

@index is the index of the track to be removed. This function calls
mirage_session_get_track_by_index() so @index behavior is determined by that
function.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="150"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="714">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="700">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="701">index of track to be removed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_track_by_number"
              c:identifier="mirage_session_remove_track_by_number"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="733">Removes track from session layout.

@number is track number of the track to be removed.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="151"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="747">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="735">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="736">track number of track to be removed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_track_by_object"
              c:identifier="mirage_session_remove_track_by_object">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="772">Removes track from session layout.

@track is a #MirageTrack object to be removed.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="152"/>
        <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="cdemu-code/libmirage/mirage/session.c"
                 line="774">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="track" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="775">track object to be removed</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cdtext_data"
              c:identifier="mirage_session_set_cdtext_data"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1275">Sets CD-TEXT data for session. It internally creates and uses #MirageCdTextCoder
object as a decoder to decode data in @data. Decoded data is stored in #MirageLanguage
objects in both session and its tracks. Therefore session must have same number of tracks
as the encoded CD-TEXT data.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="171"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/session.c"
               line="1287">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1277">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1278">buffer containing encoded CD-TEXT data</doc>
            <array length="1" zero-terminated="0" c:type="guint8*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="1279">length of data in buffer</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_leadout_length"
              c:identifier="mirage_session_set_leadout_length">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="509">Sets session's leadout length to @length. It does so by creating NULL fragment
and adding it to leadout. This function is internally used to properly handle
multi-session disc layouts. The length is given in sectors.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="143"/>
        <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="cdemu-code/libmirage/mirage/session.c"
                 line="511">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="512">leadout length</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_mcn" c:identifier="mirage_session_set_mcn">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="310">Sets MCN (Media Catalogue Number).

Because MCN is stored in subchannel data, this function silently
fails if any of session's tracks contains fragments with subchannel
data provided.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="128"/>
        <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="cdemu-code/libmirage/mirage/session.c"
                 line="312">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="mcn" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="313">MCN</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_session_type"
              c:identifier="mirage_session_set_session_type">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="282">Sets session type. @type must be one of #MirageSessionType.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/session.h"
                         line="124"/>
        <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="cdemu-code/libmirage/mirage/session.c"
                 line="284">a #MirageSession</doc>
            <type name="Session" c:type="MirageSession*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/session.c"
                 line="285">session type</doc>
            <type name="SessionType" c:type="MirageSessionType"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SessionPrivate" c:type="MirageSessionPrivate*"/>
      </field>
      <glib:signal name="layout-changed" when="last">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.c"
             line="1585">Emitted when a layout of #MirageSession changed in a way that causes a bottom-up change.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="SessionClass"
            c:type="MirageSessionClass"
            glib:is-gtype-struct-for="Session">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/session.h"
           line="109">The class structure for the &lt;structname&gt;MirageSession&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="118"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.h"
             line="111">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
    </record>
    <record name="SessionPrivate"
            c:type="MirageSessionPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="92"/>
    </record>
    <enumeration name="SessionType" c:type="MirageSessionType">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/session.h"
           line="35">Session type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/session.h"
                       line="50"/>
      <member name="cdda" value="0" c:identifier="MIRAGE_SESSION_CDDA">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.h"
             line="37">CD AUDIO</doc>
      </member>
      <member name="cdrom" value="1" c:identifier="MIRAGE_SESSION_CDROM">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.h"
             line="38">CD-ROM</doc>
      </member>
      <member name="cdi" value="2" c:identifier="MIRAGE_SESSION_CDI">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.h"
             line="39">CD-I</doc>
      </member>
      <member name="cdrom_xa" value="3" c:identifier="MIRAGE_SESSION_CDROM_XA">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/session.h"
             line="40">CD-ROM XA</doc>
      </member>
    </enumeration>
    <interface name="Stream"
               c:symbol-prefix="stream"
               c:type="MirageStream"
               glib:type-name="MirageStream"
               glib:get-type="mirage_stream_get_type"
               glib:type-struct="StreamInterface">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/stream.h"
           line="37">A stream object.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                       line="72"/>
      <virtual-method name="get_filename" invoker="get_filename">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="47">Retrieves the name to file on which the stream is opened. If @self is
a filter stream in the filter stream chain, the filename is obtained from
the stream at the bottom of the chain.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="63"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="55">pointer to a buffer containing the filename.
The buffer belongs to the stream object and should not be modified.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="49">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_writable" invoker="is_writable">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="63">Queries the stream (chain) for write support. For the stream to be
writable, the stream object implementation itself must support write
operations, and any stream objects below it in the stream chain must
also be writable.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="72">%TRUE if the stream (chain) is writable, %FALSE if it is not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="65">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="move_file" invoker="move_file" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="147">Attempts to move the file on top of which the stream (chain) is opened
to @new_filename. If supported, native move operations are used,
otherwise a copy + delete fallback is used.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="157">%TRUE on success, %FALSE on failure.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="149">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
          <parameter name="new_filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="150">the new filename</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="read" invoker="read" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="83">Attempts to read @count bytes from stream into the buffer starting at
@buffer. Will block during the operation.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="93">number of bytes read, or -1 on error, or 0 on end of file.</doc>
          <type name="gssize" c:type="gssize"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="85">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
          <parameter name="buffer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="86">a buffer to read data into</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="87">number of bytes to read from stream</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="seek" invoker="seek" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="117">Seeks in the stream by the given @offset, modified by @type.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="70"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="126">%TRUE on success, %FALSE on failure.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="119">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="120">offset to seek</doc>
            <type name="gint64" c:type="goffset"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="121">seek type</doc>
            <type name="GLib.SeekType" c:type="GSeekType"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="tell" invoker="tell">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="133">Retrieves the current position within the stream.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="139">the offset from the beginning of the stream.</doc>
          <type name="gint64" c:type="goffset"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="135">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write" invoker="write" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="100">Attempts to write @count bytes to stream from the buffer starting at
@buffer. Will block during the operation.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="69"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="110">number of bytes written, or -1 on error.</doc>
          <type name="gssize" c:type="gssize"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="102">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
          <parameter name="buffer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="103">a buffer to write data from</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="104">number of bytes to write to stream</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_filename" c:identifier="mirage_stream_get_filename">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="47">Retrieves the name to file on which the stream is opened. If @self is
a filter stream in the filter stream chain, the filename is obtained from
the stream at the bottom of the chain.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="55">pointer to a buffer containing the filename.
The buffer belongs to the stream object and should not be modified.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="49">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_g_input_stream"
              c:identifier="mirage_stream_get_g_input_stream">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="165">Constructs and returns a compatibility object inheriting a #GInputStream.
This is to allow regular GIO stream objects (for example, a
#GDataInputStream) to be chained on top of our filter stream chain.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="88"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="173">a #GInputStream. The reference should be
released using g_object_unref() when no longer needed.</doc>
          <type name="Gio.InputStream" c:type="GInputStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="167">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_writable" c:identifier="mirage_stream_is_writable">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="63">Queries the stream (chain) for write support. For the stream to be
writable, the stream object implementation itself must support write
operations, and any stream objects below it in the stream chain must
also be writable.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="72">%TRUE if the stream (chain) is writable, %FALSE if it is not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="65">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="move_file"
              c:identifier="mirage_stream_move_file"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="147">Attempts to move the file on top of which the stream (chain) is opened
to @new_filename. If supported, native move operations are used,
otherwise a copy + delete fallback is used.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="157">%TRUE on success, %FALSE on failure.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="149">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
          <parameter name="new_filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="150">the new filename</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="read" c:identifier="mirage_stream_read" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="83">Attempts to read @count bytes from stream into the buffer starting at
@buffer. Will block during the operation.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="81"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="93">number of bytes read, or -1 on error, or 0 on end of file.</doc>
          <type name="gssize" c:type="gssize"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="85">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
          <parameter name="buffer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="86">a buffer to read data into</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="87">number of bytes to read from stream</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
      <method name="seek" c:identifier="mirage_stream_seek" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="117">Seeks in the stream by the given @offset, modified by @type.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="83"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="126">%TRUE on success, %FALSE on failure.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="119">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="120">offset to seek</doc>
            <type name="gint64" c:type="goffset"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="121">seek type</doc>
            <type name="GLib.SeekType" c:type="GSeekType"/>
          </parameter>
        </parameters>
      </method>
      <method name="tell" c:identifier="mirage_stream_tell">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="133">Retrieves the current position within the stream.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="139">the offset from the beginning of the stream.</doc>
          <type name="gint64" c:type="goffset"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="135">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write" c:identifier="mirage_stream_write" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.c"
             line="100">Attempts to write @count bytes to stream from the buffer starting at
@buffer. Will block during the operation.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                         line="82"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/stream.c"
               line="110">number of bytes written, or -1 on error.</doc>
          <type name="gssize" c:type="gssize"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="102">a #MirageFileStream</doc>
            <type name="Stream" c:type="MirageStream*"/>
          </instance-parameter>
          <parameter name="buffer"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="103">a buffer to write data from</doc>
            <type name="gpointer" c:type="void*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="104">number of bytes to write to stream</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="StreamInterface"
            c:type="MirageStreamInterface"
            glib:is-gtype-struct-for="Stream">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/stream.h"
           line="45">Provides an interface for implementing I/O streams.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                       line="72"/>
      <field name="parent_iface">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.h"
             line="47">the parent interface</doc>
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_filename">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.h"
             line="48">retrieves the filename of the underlying file</doc>
        <callback name="get_filename">
          <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                           line="63"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="55">pointer to a buffer containing the filename.
The buffer belongs to the stream object and should not be modified.</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="49">a #MirageFileStream</doc>
              <type name="Stream" c:type="MirageStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_writable">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.h"
             line="49">determines whether the stream (chain) is writable</doc>
        <callback name="is_writable">
          <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                           line="64"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="72">%TRUE if the stream (chain) is writable, %FALSE if it is not.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="65">a #MirageFileStream</doc>
              <type name="Stream" c:type="MirageStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="move_file">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.h"
             line="50">moves the underlying file</doc>
        <callback name="move_file" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                           line="66"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="157">%TRUE on success, %FALSE on failure.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="149">a #MirageFileStream</doc>
              <type name="Stream" c:type="MirageStream*"/>
            </parameter>
            <parameter name="new_filename" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="150">the new filename</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="read">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.h"
             line="51">reads from stream</doc>
        <callback name="read" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                           line="68"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="93">number of bytes read, or -1 on error, or 0 on end of file.</doc>
            <type name="gssize" c:type="gssize"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="85">a #MirageFileStream</doc>
              <type name="Stream" c:type="MirageStream*"/>
            </parameter>
            <parameter name="buffer"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="86">a buffer to read data into</doc>
              <type name="gpointer" c:type="void*"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="87">number of bytes to read from stream</doc>
              <type name="gsize" c:type="gsize"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.h"
             line="52">writes to stream</doc>
        <callback name="write" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                           line="69"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="110">number of bytes written, or -1 on error.</doc>
            <type name="gssize" c:type="gssize"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="102">a #MirageFileStream</doc>
              <type name="Stream" c:type="MirageStream*"/>
            </parameter>
            <parameter name="buffer"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="103">a buffer to write data from</doc>
              <type name="gpointer" c:type="void*"/>
            </parameter>
            <parameter name="count" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="104">number of bytes to write to stream</doc>
              <type name="gsize" c:type="gsize"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="seek">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.h"
             line="53">seeks to specified position in stream</doc>
        <callback name="seek" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                           line="70"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="126">%TRUE on success, %FALSE on failure.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="119">a #MirageFileStream</doc>
              <type name="Stream" c:type="MirageStream*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="120">offset to seek</doc>
              <type name="gint64" c:type="goffset"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="121">seek type</doc>
              <type name="GLib.SeekType" c:type="GSeekType"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tell">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/stream.h"
             line="54">retrieves current position in stream</doc>
        <callback name="tell">
          <source-position filename="cdemu-code/libmirage/mirage/stream.h"
                           line="71"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/stream.c"
                 line="139">the offset from the beginning of the stream.</doc>
            <type name="gint64" c:type="goffset"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/stream.c"
                   line="135">a #MirageFileStream</doc>
              <type name="Stream" c:type="MirageStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <enumeration name="SubChannel" c:type="MirageSubChannel">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.h"
           line="103">Subchannel type for interleaving/deinterleaving.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="126"/>
      <member name="w" value="0" c:identifier="SUBCHANNEL_W">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.h"
             line="105">W subchannel data</doc>
      </member>
      <member name="v" value="1" c:identifier="SUBCHANNEL_V">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.h"
             line="106">V subchannel data</doc>
      </member>
      <member name="u" value="2" c:identifier="SUBCHANNEL_U">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.h"
             line="107">U subchannel data</doc>
      </member>
      <member name="t" value="3" c:identifier="SUBCHANNEL_T">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.h"
             line="108">T subchannel data</doc>
      </member>
      <member name="s" value="4" c:identifier="SUBCHANNEL_S">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.h"
             line="109">S subchannel data</doc>
      </member>
      <member name="r" value="5" c:identifier="SUBCHANNEL_R">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.h"
             line="110">R subchannel data</doc>
      </member>
      <member name="q" value="6" c:identifier="SUBCHANNEL_Q">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.h"
             line="111">Q subchannel data</doc>
      </member>
      <member name="p" value="7" c:identifier="SUBCHANNEL_P">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.h"
             line="112">P subchannel data</doc>
      </member>
    </enumeration>
    <enumeration name="SubchannelDataFormat"
                 c:type="MirageSubchannelDataFormat">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/fragment.h"
           line="43">Subchannel file data formats.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/fragment.h"
                       line="63"/>
      <member name="internal"
              value="1"
              c:identifier="MIRAGE_SUBCHANNEL_DATA_FORMAT_INTERNAL">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.h"
             line="45">internal subchannel (i.e. included in track file)</doc>
      </member>
      <member name="external"
              value="2"
              c:identifier="MIRAGE_SUBCHANNEL_DATA_FORMAT_EXTERNAL">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.h"
             line="46">external subchannel (i.e. provided by separate file)</doc>
      </member>
      <member name="pw96_interleaved"
              value="16"
              c:identifier="MIRAGE_SUBCHANNEL_DATA_FORMAT_PW96_INTERLEAVED">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.h"
             line="47">P-W subchannel, 96 bytes, interleaved</doc>
      </member>
      <member name="pw96_linear"
              value="32"
              c:identifier="MIRAGE_SUBCHANNEL_DATA_FORMAT_PW96_LINEAR">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.h"
             line="48">P-W subchannel, 96 bytes, linear</doc>
      </member>
      <member name="rw96"
              value="64"
              c:identifier="MIRAGE_SUBCHANNEL_DATA_FORMAT_RW96">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.h"
             line="49">R-W subchannel, 96 bytes, cooked</doc>
      </member>
      <member name="q16"
              value="128"
              c:identifier="MIRAGE_SUBCHANNEL_DATA_FORMAT_Q16">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/fragment.h"
             line="50">Q subchannel, 16 bytes</doc>
      </member>
    </enumeration>
    <function-macro name="TRACK"
                    c:identifier="MIRAGE_TRACK"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="95"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TRACK_CLASS"
                    c:identifier="MIRAGE_TRACK_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="96"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="TRACK_GET_CLASS"
                    c:identifier="MIRAGE_TRACK_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="99"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Track"
           c:symbol-prefix="track"
           c:type="MirageTrack"
           parent="Object"
           glib:type-name="MirageTrack"
           glib:get-type="mirage_track_get_type"
           glib:type-struct="TrackClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/track.h"
           line="104">All the fields in the &lt;structname&gt;MirageTrack&lt;/structname&gt;
structure are private to the #MirageTrack implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="128"/>
      <implements name="Contextual"/>
      <method name="add_fragment" c:identifier="mirage_track_add_fragment">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="792">Adds a fragment implementation to track. @index is index at which fragment
should be added. Negative index denotes index going backwards (i.e. -1 adds
fragment at the end, -2 adds fragment second-to-last, etc.). If index, either
negative or positive, is too big, fragment is respectively added at the
beginning or at the end of the track.

&lt;note&gt;
Currently, unlike in most libMirage's *_add_* functions, @fragment argument cannot be %NULL.
This is because specific fragment implementation is required and therefore must be
provided by the caller.
&lt;/note&gt;

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="167"/>
        <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="cdemu-code/libmirage/mirage/track.c"
                 line="794">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="795">index at which fragment should be added</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="fragment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="796">a #MirageFragment to be added</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_index"
              c:identifier="mirage_track_add_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1097">Adds index to track.

@address is track-relative address at which index should be added. As it determines
position of the index, it also determines the number index will be assigned.

If address falls before index 01 (i.e. if it's less than address that was set
using mirage_track_set_track_start()), the function fails.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="182"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1111">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1099">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1100">address at which the index is to be added</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_language"
              c:identifier="mirage_track_add_language"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1300">Adds language to track.

@code is language code that should be assigned to added language. If
language with that code is already present in the track, the function fails.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="191"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1312">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1302">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1303">language code for the added language</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="language"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1304">a #MirageLanguage to be added</doc>
            <type name="Language" c:type="MirageLanguage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="enumerate_fragments"
              c:identifier="mirage_track_enumerate_fragments">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="983">Iterates over fragments list, calling @func for each fragment in the layout.

If @func returns %FALSE, the function immediately returns %FALSE.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="172"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="993">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="985">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="986">callback function</doc>
            <type name="EnumFragmentCallback"
                  c:type="MirageEnumFragmentCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="987">data to be passed to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="enumerate_indices"
              c:identifier="mirage_track_enumerate_indices">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1260">Iterates over indices list, calling @func for each index.

If @func returns %FALSE, the function immediately returns %FALSE.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="187"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1270">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1262">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1263">callback function</doc>
            <type name="EnumIndexCallback" c:type="MirageEnumIndexCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1264">user data to be passed to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="enumerate_languages"
              c:identifier="mirage_track_enumerate_languages">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1486">Iterates over languages list, calling @func for each language.

If @func returns %FALSE, the function immediately returns %FALSE.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="197"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1496">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1488">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1489">callback function</doc>
            <type name="EnumLanguageCallback"
                  c:type="MirageEnumLanguageCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1490">data to be passed to callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_fragment_with_subchannel"
              c:identifier="mirage_track_find_fragment_with_subchannel"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1008">Retrieves first fragment that contains subchannel data. A reference to fragment
is stored in @fragment; it should be released with g_object_unref() when no
longer needed.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="174"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1021">a #MirageFragment on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Fragment" c:type="MirageFragment*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1010">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_adr" c:identifier="mirage_track_get_adr">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="333">Retrieves track's ADR.

&lt;note&gt;
At the moment, ADR is always returned as 1.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="142"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="343">ADR value</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="335">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ctl" c:identifier="mirage_track_get_ctl">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="374">Retrieves track's CTL. CTL is calculated on basis of track mode and track
flags.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="145"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="381">CTL value</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="376">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_flags" c:identifier="mirage_track_get_flags">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="290">Retrieves track flags.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="135"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="296">track flags</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="292">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_fragment_by_address"
              c:identifier="mirage_track_get_fragment_by_address"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="944">Retrieves fragment by address. @address must be valid (track-relative) sector
address that is part of the fragment to be retrieved (i.e. lying between fragment's
start and end address).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="171"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="954">a #MirageFragment on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Fragment" c:type="MirageFragment*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="946">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="947">address belonging to fragment to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_fragment_by_index"
              c:identifier="mirage_track_get_fragment_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="904">Retrieves fragment by index. If @index is negative, fragments from the end of
track are retrieved (e.g. -1 is for last track, -2 for second-to-last
track, etc.). If @index is out of range, regardless of the sign, the
function fails.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="170"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="915">a #MirageFragment on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Fragment" c:type="MirageFragment*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="906">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="907">index of fragment to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_index_by_address"
              c:identifier="mirage_track_get_index_by_address"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1221">Retrieves index by address. @address must be valid (track-relative) sector
address that is part of the index to be retrieved (i.e. lying between index's
start and end sector).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="186"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1231">a #MirageIndex on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Index" c:type="MirageIndex*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1223">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1224">address belonging to index to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_index_by_number"
              c:identifier="mirage_track_get_index_by_number"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1182">Retrieves index by index number. If @number is negative, indices from the end of
track are retrieved (e.g. -1 is for index, -2 for second-to-last index, etc.).
If @number is out of range, regardless of the sign, the function fails.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="185"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1192">a #MirageIndex on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Index" c:type="MirageIndex*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1184">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1185">index number of index to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_isrc" c:identifier="mirage_track_get_isrc">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="429">Retrieves ISRC.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="149"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="435">pointer to ISRC string, or %NULL. The string
belongs to the object and should not be modified.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="431">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_language_by_code"
              c:identifier="mirage_track_get_language_by_code"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1449">Retrieves language by language code.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="196"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1457">a #MirageLanguage on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Language" c:type="MirageLanguage*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1451">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1452">language code of language to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_language_by_index"
              c:identifier="mirage_track_get_language_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1409">Retrieves language by index. If @index is negative, languages from the end of
track are retrieved (e.g. -1 is for last language, -2 for second-to-last
language, etc.). If @index is out of range, regardless of the sign, the
function fails.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="195"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1420">a #MirageLanguage on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Language" c:type="MirageLanguage*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1411">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1412">index of language to be retrieved</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_next" c:identifier="mirage_track_get_next" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1540">Retrieves track that is placed after @self in session layout</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="201"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1547">a #MirageTrack on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Track" c:type="MirageTrack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1542">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_number_of_fragments"
              c:identifier="mirage_track_get_number_of_fragments">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="778">Retrieves number of fragments making up the track.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="166"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="784">number of fragments</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="780">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_number_of_indices"
              c:identifier="mirage_track_get_number_of_indices">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1082">Retrieves number of indices the track contains. Note that this includes
only indices greater than 01.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="181"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1089">number of indices</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1084">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_number_of_languages"
              c:identifier="mirage_track_get_number_of_languages">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1286">Retrieves number of languages the track contains.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="190"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1292">number of languages</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1288">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_prev" c:identifier="mirage_track_get_prev" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1511">Retrieves track that is placed before @self in session layout.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="200"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1518">a #MirageTrack on success, %NULL on failure.
The reference to the object should be released using g_object_unref()
when no longer needed.</doc>
          <type name="Track" c:type="MirageTrack*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1513">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_sector"
              c:identifier="mirage_track_get_sector"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="452">Retrieves a sector. @address is sector address for which a #MirageSector
object representing sector should be returned. @abs specifies whether @address
is absolute or relative; if %TRUE, @address is absolute (i.e. relative to start
of the disc), if %FALSE, it is relative (i.e. relative to start of the track).

A reference to sector is stored in @sector; it should be released with
g_object_unref() when no longer needed.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="152"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="467">sector object on success, %NULL on failure. The sector object
should be released with g_object_unref() when no longer needed.</doc>
          <type name="Sector" c:type="MirageSector*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="454">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="455">sector address</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="abs" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="456">absolute address</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_sector_type"
              c:identifier="mirage_track_get_sector_type">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="318">Retrieves type of sectors comprising the track.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="139"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="324">sector type</doc>
          <type name="SectorType" c:type="MirageSectorType"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="320">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_track_start"
              c:identifier="mirage_track_get_track_start">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1066">Retrieves track start address. This is track-relative address at which pregap
ends and track "logically" starts (i.e. where index changes from 00 to 01).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="178"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1073">track start address</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1068">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_contains_address"
              c:identifier="mirage_track_layout_contains_address">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="763">Checks whether the track contains the given address or not.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="163"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="770">%TRUE if @address falls inside track, %FALSE if it does not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="765">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="766">address to be checked</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="layout_get_length"
              c:identifier="mirage_track_layout_get_length">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="748">Retrieves track's length. The returned length is given in sectors.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="161"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="754">track length</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="750">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_get_session_number"
              c:identifier="mirage_track_layout_get_session_number">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="656">Retrieves track's session number. If track is not part of disc layout, 0
is returned.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="156"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="663">session number</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="658">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_get_start_sector"
              c:identifier="mirage_track_layout_get_start_sector">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="734">Retrieves track's start sector.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="160"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="740">start sector</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="736">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_get_track_number"
              c:identifier="mirage_track_layout_get_track_number">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="697">Retrieves track's track number.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="158"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="703">track number</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="699">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="layout_set_start_sector"
              c:identifier="mirage_track_layout_set_start_sector">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="711">Sets track's start sector.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;

&lt;note&gt;
Causes top-down change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="159"/>
        <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="cdemu-code/libmirage/mirage/track.c"
                 line="713">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="start_sector" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="714">start sector</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="layout_set_track_number"
              c:identifier="mirage_track_layout_set_track_number">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="680">Set track's track number.

&lt;note&gt;
Intended for internal use only.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="157"/>
        <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="cdemu-code/libmirage/mirage/track.c"
                 line="682">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="track_number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="683">track number</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="put_sector"
              c:identifier="mirage_track_put_sector"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="550">Writes the @sector to track. The address at which sector is written
is retrieved from sector's property; for this function to succeed,
the address must either fall within track's layout (i.e., the track's
fragment(s) must have sufficient length "reserved" to accept sector),
or, alternatively, the sector address is allowed to equal track's
current lenght plus one. In the latter case, the track's length is
incremented when the sector is written (i.e., the corresponding track's
fragment is extended before data is written to it).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="153"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="565">%TRUE on success, %FALSE on failure.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="552">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="sector" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="553">a #MirageSector representing sector to be written</doc>
            <type name="Sector" c:type="MirageSector*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_fragment_by_index"
              c:identifier="mirage_track_remove_fragment_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="853">Removes fragment from track.

@index is the index of the fragment to be removed. This function calls
mirage_track_get_fragment_by_index() so @index behavior is determined by that
function.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="168"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="869">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="855">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="856">index of fragment to be removed.</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_fragment_by_object"
              c:identifier="mirage_track_remove_fragment_by_object">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="886">Removes fragment from track.

@fragment is a #MirageFragment object to be removed.

&lt;note&gt;
Causes bottom-up change.
&lt;/note&gt;</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="169"/>
        <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="cdemu-code/libmirage/mirage/track.c"
                 line="888">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="fragment" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="889">fragment object to be removed</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_index_by_number"
              c:identifier="mirage_track_remove_index_by_number"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1140">Removes index from track. This causes index numbers of remaining indices to be readjusted.

@number is index number of index to be removed. It must be greater or equal than 2.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="183"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1150">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1142">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1143">index number of index to be removed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_index_by_object"
              c:identifier="mirage_track_remove_index_by_object">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1167">Removes index from track.This causes index numbers of remaining indices to be readjusted.

@index is a #MirageIndex object to be removed.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="184"/>
        <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="cdemu-code/libmirage/mirage/track.c"
                 line="1169">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1170">index object to be removed</doc>
            <type name="Index" c:type="MirageIndex*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_language_by_code"
              c:identifier="mirage_track_remove_language_by_code"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1368">Removes language from track.

@code is language code the language to be removed.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="193"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1378">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1370">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1371">language code of language to be removed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_language_by_index"
              c:identifier="mirage_track_remove_language_by_index"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1339">Removes language from track.

@index is the index of the language to be removed. This function calls
mirage_track_get_language_by_index() so @index behavior is determined by that
function.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="192"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/track.c"
               line="1351">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1341">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1342">index of language to be removed</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_language_by_object"
              c:identifier="mirage_track_remove_language_by_object">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1395">Removes language from track.

@language is a #MirageLanguage object to be removed.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="194"/>
        <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="cdemu-code/libmirage/mirage/track.c"
                 line="1397">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="language" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1398">language object to be removed</doc>
            <type name="Language" c:type="MirageLanguage*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ctl" c:identifier="mirage_track_set_ctl">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="352">Sets track's CTL; the function translates CTL into track flags and sets them
using mirage_track_set_flags(). Track mode set with CTL is ignored.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="144"/>
        <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="cdemu-code/libmirage/mirage/track.c"
                 line="354">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="ctl" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="355">track's CTL</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_flags" c:identifier="mirage_track_set_flags">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="277">Sets track flags. @flags must be a combination of #MirageTrackFlags.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="134"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="279">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="280">track flags</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_isrc" c:identifier="mirage_track_set_isrc">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="404">Sets MCN.

Because ISRC is stored in subchannel data, this function silently
fails if track contains fragments with subchannel data provided.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="148"/>
        <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="cdemu-code/libmirage/mirage/track.c"
                 line="406">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="isrc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="407">ISRC</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sector_type"
              c:identifier="mirage_track_set_sector_type">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="305">Sets sector type. @mode must be one of #MirageSectorType.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="138"/>
        <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="cdemu-code/libmirage/mirage/track.c"
                 line="307">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="sector_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="308">type of sectors comprising the track</doc>
            <type name="SectorType" c:type="MirageSectorType"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_track_start"
              c:identifier="mirage_track_set_track_start">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1050">Sets track start address. @track_start is a track-relative address at which track's
pregap ends and track "logically" starts (i.e. where index changes from 00 to 01). Note that
this is not the same as start address that is set by mirage_track_layout_set_start_sector();
that one sets the address at which track "physically" starts (i.e. where index 00 starts).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/track.h"
                         line="177"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1052">a #MirageTrack</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </instance-parameter>
          <parameter name="track_start" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/track.c"
                 line="1053">track start address</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="TrackPrivate" c:type="MirageTrackPrivate*"/>
      </field>
      <glib:signal name="layout-changed" when="last">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.c"
             line="1653">Emitted when a layout of #MirageTrack changed in a way that causes a bottom-up change.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="TrackClass"
            c:type="MirageTrackClass"
            glib:is-gtype-struct-for="Track">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/track.h"
           line="119">The class structure for the &lt;structname&gt;MirageTrack&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="128"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.h"
             line="121">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
    </record>
    <enumeration name="TrackConstant" c:type="MirageTrackConstant">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/track.h"
           line="50">Track constants.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="61"/>
      <member name="leadin" value="0" c:identifier="MIRAGE_TRACK_LEADIN">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.h"
             line="52">Lead-in track</doc>
      </member>
      <member name="leadout" value="170" c:identifier="MIRAGE_TRACK_LEADOUT">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.h"
             line="53">Lead-out track</doc>
      </member>
    </enumeration>
    <enumeration name="TrackFlag" c:type="MirageTrackFlag">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/track.h"
           line="35">Track flags.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="48"/>
      <member name="fourchannel"
              value="1"
              c:identifier="MIRAGE_TRACK_FLAG_FOURCHANNEL">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.h"
             line="37">four channel audio</doc>
      </member>
      <member name="copypermitted"
              value="2"
              c:identifier="MIRAGE_TRACK_FLAG_COPYPERMITTED">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.h"
             line="38">copy permitted</doc>
      </member>
      <member name="preemphasis"
              value="4"
              c:identifier="MIRAGE_TRACK_FLAG_PREEMPHASIS">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/track.h"
             line="39">pre-emphasis</doc>
      </member>
    </enumeration>
    <record name="TrackPrivate"
            c:type="MirageTrackPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/track.h"
                       line="102"/>
    </record>
    <constant name="VERSION_LONG" value="3.2.10" c:type="MIRAGE_VERSION_LONG">
      <doc xml:space="preserve"
           filename="build/mirage/version.h"
           line="71">&lt;para&gt;
The long version string of the libMirage library. Like #mirage_version_long,
but from the headers used at application compile time, rather than from the
library linked against at application run time.
&lt;/para&gt;</doc>
      <source-position filename="build/mirage/version.h" line="80"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="VERSION_MAJOR" value="3" c:type="MIRAGE_VERSION_MAJOR">
      <doc xml:space="preserve"
           filename="build/mirage/version.h"
           line="37">&lt;para&gt;
The major version number of the libMirage library. Like #mirage_version_major,
but from the headers used at application compile time, rather than from the
library linked against at application run time.
&lt;/para&gt;</doc>
      <source-position filename="build/mirage/version.h" line="46"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VERSION_MICRO" value="10" c:type="MIRAGE_VERSION_MICRO">
      <doc xml:space="preserve"
           filename="build/mirage/version.h"
           line="59">&lt;para&gt;
The micro version number of the libMirage library. Like #mirage_version_micro,
but from the headers used at application compile time, rather than from the
library linked against at application run time.
&lt;/para&gt;</doc>
      <source-position filename="build/mirage/version.h" line="68"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VERSION_MINOR" value="2" c:type="MIRAGE_VERSION_MINOR">
      <doc xml:space="preserve"
           filename="build/mirage/version.h"
           line="48">&lt;para&gt;
The minor version number of the libMirage library. Like #mirage_version_minor,
but from the headers used at application compile time, rather than from the
library linked against at application run time.
&lt;/para&gt;</doc>
      <source-position filename="build/mirage/version.h" line="57"/>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="VERSION_SHORT" value="3.2" c:type="MIRAGE_VERSION_SHORT">
      <doc xml:space="preserve"
           filename="build/mirage/version.h"
           line="82">&lt;para&gt;
The short version string of the libMirage library. Like #mirage_version_long,
but from the headers used at application compile time, rather than from the
library linked against at application run time.
&lt;/para&gt;</doc>
      <source-position filename="build/mirage/version.h" line="91"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="WRITER"
                    c:identifier="MIRAGE_WRITER"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                       line="88"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="WRITER_CLASS"
                    c:identifier="MIRAGE_WRITER_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                       line="89"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="WRITER_GET_CLASS"
                    c:identifier="MIRAGE_WRITER_GET_CLASS"
                    introspectable="0">
      <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                       line="92"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Writer"
           c:symbol-prefix="writer"
           c:type="MirageWriter"
           parent="Object"
           abstract="1"
           glib:type-name="MirageWriter"
           glib:get-type="mirage_writer_get_type"
           glib:type-struct="WriterClass">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/writer.h"
           line="98">All the fields in the &lt;structname&gt;MirageWriter&lt;/structname&gt;
structure are private to the #MirageWriter implementation and
should never be accessed directly.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                       line="130"/>
      <implements name="Contextual"/>
      <virtual-method name="create_fragment"
                      invoker="create_fragment"
                      throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="478">Creates a fragment with specified @role for given @track. The latter
needs to already be part of disc's layout.

The role helps writer implementation determine what kind of fragment
to create; for example, some writer implementations create dummy
fragments for pregaps.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="128"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="492">pointer to created fragment object on success, %NULL on failure</doc>
          <type name="Fragment" c:type="MirageFragment*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="480">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="track" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="481">track for which the fragment is to be created</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </parameter>
          <parameter name="role" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="482">fragment role</doc>
            <type name="FragmentRole" c:type="MirageFragmentRole"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="finalize_image"
                      invoker="finalize_image"
                      throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="500">Finalizes the image, possibly creating the image descriptor file if
necessary.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="129"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="509">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="502">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="disc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="503">disc object for which the image is being written</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="open_image_impl" throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="116">initializes writer on specified image</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="127"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="disc" transfer-ownership="none">
            <type name="Disc" c:type="MirageDisc*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_parameter_boolean"
              c:identifier="mirage_writer_add_parameter_boolean">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="164">Adds a boolean parameter to writer's parameter sheet.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="138"/>
        <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="cdemu-code/libmirage/mirage/writer.c"
                 line="166">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="167">parameter ID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="168">parameter name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="169">parameter description</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="170">default value</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_parameter_enum"
              c:identifier="mirage_writer_add_parameter_enum"
              introspectable="0">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="209">Adds an enum parameter to writer's parameter sheet. The enum parameters
are treated as string parameters, except they have a pre-defined set
of valid values.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="141"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="211">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="212">parameter ID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="213">parameter name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="214">parameter description</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="215">default value</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="216">%NULL-terminated list of valid string values</doc>
            <varargs/>
          </parameter>
        </parameters>
      </method>
      <method name="add_parameter_int"
              c:identifier="mirage_writer_add_parameter_int">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="194">Adds an integer parameter to writer's parameter sheet.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="140"/>
        <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="cdemu-code/libmirage/mirage/writer.c"
                 line="196">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="197">parameter ID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="198">parameter name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="199">parameter description</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="200">default value</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_parameter_string"
              c:identifier="mirage_writer_add_parameter_string">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="179">Adds a string parameter to writer's parameter sheet.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="139"/>
        <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="cdemu-code/libmirage/mirage/writer.c"
                 line="181">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="182">parameter ID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="183">parameter name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="184">parameter description</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="default_value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="185">default value</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="convert_image"
              c:identifier="mirage_writer_convert_image"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="553">Convenience function that converts an already-opened image stored in
@original_disc and writes it to @filename. If conversion progress
reporting is enabled via mirage_writer_set_conversion_progress_step(),
the #MirageWriter::conversion-progress signal is emitted at specified
time intervals during conversion.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="157"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="568">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="555">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="556">filename of output image</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="original_disc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="557">disc layout obtained from original image</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </parameter>
          <parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="558">writer parameters</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="GLib.Variant"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="559">optional %GCancellable object, NULL to ignore.</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_fragment"
              c:identifier="mirage_writer_create_fragment"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="478">Creates a fragment with specified @role for given @track. The latter
needs to already be part of disc's layout.

The role helps writer implementation determine what kind of fragment
to create; for example, some writer implementations create dummy
fragments for pregaps.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="152"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="492">pointer to created fragment object on success, %NULL on failure</doc>
          <type name="Fragment" c:type="MirageFragment*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="480">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="track" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="481">track for which the fragment is to be created</doc>
            <type name="Track" c:type="MirageTrack*"/>
          </parameter>
          <parameter name="role" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="482">fragment role</doc>
            <type name="FragmentRole" c:type="MirageFragmentRole"/>
          </parameter>
        </parameters>
      </method>
      <method name="finalize_image"
              c:identifier="mirage_writer_finalize_image"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="500">Finalizes the image, possibly creating the image descriptor file if
necessary.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="153"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="509">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="502">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="disc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="503">disc object for which the image is being written</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </parameter>
        </parameters>
      </method>
      <method name="generate_info" c:identifier="mirage_writer_generate_info">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="413">Generates writer information from the input fields. It is intended as a function
for creating writer information in writer implementations.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="135"/>
        <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="cdemu-code/libmirage/mirage/writer.c"
                 line="415">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="416">writer ID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="417">writer name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_conversion_progress_step"
              c:identifier="mirage_writer_get_conversion_progress_step">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="526">Retrieves conversion progress step setting.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="155"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="532">the value of conversion progress step.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="528">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_info" c:identifier="mirage_writer_get_info">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="427">Retrieves writer information.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="136"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="433">a pointer to writer information structure.  The
structure belongs to object and should not be modified.</doc>
          <type name="WriterInfo" c:type="const MirageWriterInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="429">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parameter_boolean"
              c:identifier="mirage_writer_get_parameter_boolean">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="345">Looks up the boolean parameter with specified @id from user-supplied
writer parameters and returns its value. If user did not supply the
parameter, its default value is returned instead.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="146"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="354">user-supplied parameter value.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="347">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="348">parameter ID string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_parameter_enum"
              c:identifier="mirage_writer_get_parameter_enum">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="393">Looks up the enum parameter with specified @id from user-supplied
writer parameters and returns its value. If user did not supply the
parameter, its default value is returned instead.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="149"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="402">user-supplied parameter value.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="395">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="396">parameter ID string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_parameter_int"
              c:identifier="mirage_writer_get_parameter_int">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="377">Looks up the string parameter with specified @id from user-supplied
writer parameters and returns its value. If user did not supply the
parameter, its default value is returned instead.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="148"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="386">user-supplied parameter value.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="379">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="380">parameter ID string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_parameter_string"
              c:identifier="mirage_writer_get_parameter_string">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="361">Looks up the string parameter with specified @id from user-supplied
writer parameters and returns its value. If user did not supply the
parameter, its default value is returned instead.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="147"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="370">user-supplied parameter value.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="363">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="364">parameter ID string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_parameter_ids"
              c:identifier="mirage_writer_lookup_parameter_ids">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="242">Retrieves the list of parameter ID strings from writer's parameter
sheet. The IDs are ordered in the same way as they were inserted into
the parameter sheet.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="143"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="250">the list of parameter
IDs. The list and its elements belong to the writer and should not be
modified.</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="244">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lookup_parameter_info"
              c:identifier="mirage_writer_lookup_parameter_info">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="259">Looks up the parameter with specified @id in writer's parameter sheet
and retrieves the parameter's information structure.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="144"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="267">the pointer to parameter's information structure on success,
%NULL on failure. The information structure belong to the writer and
should not be modified.</doc>
          <type name="WriterParameter" c:type="const MirageWriterParameter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="261">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="262">parameter ID string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_image"
              c:identifier="mirage_writer_open_image"
              throws="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="442">Initializes the image writer to start the writing process for @disc.
The latter should have set the image filename(s) and medium type, but
does not have to have disc layout (sessions, tracks) built yet.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="151"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/writer.c"
               line="453">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="444">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="disc" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="445">disc object for which the image will be created</doc>
            <type name="Disc" c:type="MirageDisc*"/>
          </parameter>
          <parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="446">writer parameters</doc>
            <type name="GLib.HashTable" c:type="GHashTable*">
              <type name="utf8"/>
              <type name="GLib.Variant"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="set_conversion_progress_step"
              c:identifier="mirage_writer_set_conversion_progress_step">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="539">Sets conversion progress step. Setting @step to 0 disables conversion
progress reporting.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="156"/>
        <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="cdemu-code/libmirage/mirage/writer.c"
                 line="541">a #MirageWriter</doc>
            <type name="Writer" c:type="MirageWriter*"/>
          </instance-parameter>
          <parameter name="step" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="542">new conversion progress step value</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_instance">
        <type name="Object" c:type="MirageObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="WriterPrivate" c:type="MirageWriterPrivate*"/>
      </field>
      <glib:signal name="conversion-progress" when="last">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="857">Emitted when the image conversion progress reaches a new progress mark.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="progress" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="860">percentual image conversion progress</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="WriterClass"
            c:type="MirageWriterClass"
            glib:is-gtype-struct-for="Writer">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/writer.h"
           line="113">The class structure for the &lt;structname&gt;MirageWriter&lt;/structname&gt; type.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                       line="130"/>
      <field name="parent_class">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="115">the parent class</doc>
        <type name="ObjectClass" c:type="MirageObjectClass"/>
      </field>
      <field name="open_image_impl">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="116">initializes writer on specified image</doc>
        <callback name="open_image_impl" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                           line="127"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <type name="Writer" c:type="MirageWriter*"/>
            </parameter>
            <parameter name="disc" transfer-ownership="none">
              <type name="Disc" c:type="MirageDisc*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_fragment">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="117">creates a fragment of specified role for the given track</doc>
        <callback name="create_fragment" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                           line="128"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="492">pointer to created fragment object on success, %NULL on failure</doc>
            <type name="Fragment" c:type="MirageFragment*"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/writer.c"
                   line="480">a #MirageWriter</doc>
              <type name="Writer" c:type="MirageWriter*"/>
            </parameter>
            <parameter name="track" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/writer.c"
                   line="481">track for which the fragment is to be created</doc>
              <type name="Track" c:type="MirageTrack*"/>
            </parameter>
            <parameter name="role" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/writer.c"
                   line="482">fragment role</doc>
              <type name="FragmentRole" c:type="MirageFragmentRole"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="finalize_image">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="118">finalizes image</doc>
        <callback name="finalize_image" throws="1">
          <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                           line="129"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="509">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="self" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/writer.c"
                   line="502">a #MirageWriter</doc>
              <type name="Writer" c:type="MirageWriter*"/>
            </parameter>
            <parameter name="disc" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="cdemu-code/libmirage/mirage/writer.c"
                   line="503">disc object for which the image is being written</doc>
              <type name="Disc" c:type="MirageDisc*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="WriterInfo" c:type="MirageWriterInfo">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/writer.h"
           line="43">A structure containing writer information. It can be obtained with call to
mirage_writer_get_info().</doc>
      <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                       line="56"/>
      <field name="id" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="45">writer ID</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="46">writer name</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <method name="copy" c:identifier="mirage_writer_info_copy">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="99">Copies parser information from @info to @dest.</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="58"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="101">a #MirageWriterInfo to copy data from</doc>
            <type name="WriterInfo" c:type="const MirageWriterInfo*"/>
          </instance-parameter>
          <parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="102">a #MirageWriterInfo to copy data to</doc>
            <type name="WriterInfo" c:type="MirageWriterInfo*"/>
          </parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="mirage_writer_info_free">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.c"
             line="112">Frees the allocated fields in @info (but not the structure itself!).</doc>
        <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                         line="59"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="info" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="cdemu-code/libmirage/mirage/writer.c"
                 line="114">a #MirageWriterInfo to free</doc>
            <type name="WriterInfo" c:type="MirageWriterInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="WriterParameter" c:type="MirageWriterParameter">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/writer.h"
           line="62">A structure encapsulating information about image writer parameters,
using in writer's parameter sheet.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                       line="81"/>
      <field name="name" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="64">parameter name</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="description" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="65">description of parameter</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="default_value" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="66">default value for parameter. Also determines parameter type.</doc>
        <type name="GLib.Variant" c:type="GVariant*"/>
      </field>
      <field name="enum_values" writable="1">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/writer.h"
             line="67">if parameter is an enum, this field contains all possible values. The variant has a signature "as".</doc>
        <type name="GLib.Variant" c:type="GVariant*"/>
      </field>
    </record>
    <record name="WriterPrivate"
            c:type="MirageWriterPrivate"
            disguised="1"
            opaque="1">
      <source-position filename="cdemu-code/libmirage/mirage/writer.h"
                       line="96"/>
    </record>
    <function name="cdtext_decoder_get_block_info"
              c:identifier="mirage_cdtext_decoder_get_block_info"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
           line="664">Retrieves block information for CD-TEXT block specified by @block. @block
must be a valid block number (0-7). Language code assigned to the block is
stored in @code, code of character set used within block is stored in
@charset and block's copyright flag is stored in @copyright.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="103"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
             line="678">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="666">a #MirageCdTextCoder</doc>
          <type name="CdTextCoder" c:type="MirageCdTextCoder*"/>
        </parameter>
        <parameter name="block" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="667">block number</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="code"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="668">location to store language code, or %NULL</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
        <parameter name="charset"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="669">location to store character set, or %NULL</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
        <parameter name="copyright"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="670">location to store copyright flag, or %NULL</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="cdtext_decoder_get_data"
              c:identifier="mirage_cdtext_decoder_get_data">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
           line="706">Retrieves data for CD-TEXT block specified by @block. @block must be a valid
block number (0-7). It calls @callback_func for every data pack that has been
encoded in the block.

If @callback_func returns %FALSE, the function immediately returns %FALSE.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="104"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
             line="719">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="708">a #MirageCdTextCoder</doc>
          <type name="CdTextCoder" c:type="MirageCdTextCoder*"/>
        </parameter>
        <parameter name="block" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="709">block number</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="callback_func"
                   transfer-ownership="none"
                   scope="call"
                   closure="3">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="710">callback function</doc>
          <type name="CdTextDataCallback" c:type="MirageCdTextDataCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="711">data to be passed to callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="cdtext_decoder_init"
              c:identifier="mirage_cdtext_decoder_init">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
           line="533">Initializes CD-TEXT decoder. @buffer is the buffer containing encoded CD-TEXT
data and @buflen is length of data in the buffer.

This function decodes CD-TEXT data and stores it in decoder's internal representation.
Information about decoded CD-TEXT blocks and their data can be obtained via
subsequent calls to mirage_cdtext_decoder_get_block_info() and
mirage_cdtext_decoder_get_data().</doc>
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="102"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="535">a #MirageCdTextCoder</doc>
          <type name="CdTextCoder" c:type="MirageCdTextCoder*"/>
        </parameter>
        <parameter name="buffer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="536">buffer containing encoded data</doc>
          <array length="2" zero-terminated="0" c:type="guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="buflen" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="537">length of data in buffer</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="cdtext_encoder_add_data"
              c:identifier="mirage_cdtext_encoder_add_data">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
           line="384">Adds data to the encoder. @code is language code of the block the data
should be added to. @type denotes pack type and should be one of #MirageLanguagePackType.
@track is track number the data belongs to, or 0 if data is global (belongs to disc/session).
@data is buffer containing data to be added, and @data_len is length of data in the buffer.

This function does not perform any encoding yet; it merely adds the data into
encoder's internal representation of CD-TEXT block.

&lt;note&gt;
Block needs to have its information set with mirage_cdtext_encoder_set_block_info()
before data can be added to it.
&lt;/note&gt;</doc>
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="98"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="386">a #MirageCdTextCoder</doc>
          <type name="CdTextCoder" c:type="MirageCdTextCoder*"/>
        </parameter>
        <parameter name="code" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="387">language code</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="388">data type</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="track" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="389">track number</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="390">data</doc>
          <array length="5" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="data_len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="391">data length</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="cdtext_encoder_encode"
              c:identifier="mirage_cdtext_encoder_encode">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
           line="436">Encodes the CD-TEXT data. Pointer to buffer containing the encoded data is
stored in @buffer, and length of data in buffer is stored in @buflen.

Note that @buffer is the same as the argument passed to mirage_cdtext_encoder_init().</doc>
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="99"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="438">a #MirageCdTextCoder</doc>
          <type name="CdTextCoder" c:type="MirageCdTextCoder*"/>
        </parameter>
        <parameter name="buffer"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="439">location to store buffer</doc>
          <array length="2" zero-terminated="0" c:type="guint8**">
            <type name="guint8" c:type="guint8*"/>
          </array>
        </parameter>
        <parameter name="buflen"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="440">location to store buffer length</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="cdtext_encoder_init"
              c:identifier="mirage_cdtext_encoder_init">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
           line="331">Initializes CD-TEXT encoder.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="96"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="333">a #MirageCdTextCoder</doc>
          <type name="CdTextCoder" c:type="MirageCdTextCoder*"/>
        </parameter>
        <parameter name="buffer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="334">buffer into which data will be encoded</doc>
          <array length="2" zero-terminated="0" c:type="guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="buflen" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="335">buffer length</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="cdtext_encoder_set_block_info"
              c:identifier="mirage_cdtext_encoder_set_block_info"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
           line="351">Sets block information for CD-TEXT block specified by @block. @block must be
a valid block number (0-7). @code is the language code that is to be assigned
to the block (e.g. 9 for English), @charset denotes character set that is used within
the block, and @copyright is the copyright flag for the block.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/cdtext-coder.h"
                       line="97"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
             line="365">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="self" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="353">a #MirageCdTextCoder</doc>
          <type name="CdTextCoder" c:type="MirageCdTextCoder*"/>
        </parameter>
        <parameter name="block" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="354">block number</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="code" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="355">language code</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="charset" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="356">character set</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="copyright" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
               line="357">copyright flag</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="create_writer"
              c:identifier="mirage_create_writer"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="534">Attempts to create an instance of image writer whose ID is @writer_id.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="137"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="541">newly-created writer object on success, %NULL
on failure. The reference to the object should be released using
g_object_unref() when no longer needed.</doc>
        <type name="Writer" c:type="MirageWriter*"/>
      </return-value>
      <parameters>
        <parameter name="writer_id" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="536">ID of writer to create</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="enumerate_filter_streams"
              c:identifier="mirage_enumerate_filter_streams"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="474">Iterates over list of supported filter streams, calling @func for each filter stream.

If @func returns %FALSE, the function immediately returns %FALSE.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="133"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="484">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="func"
                   transfer-ownership="none"
                   scope="call"
                   closure="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="476">callback function</doc>
          <type name="EnumFilterStreamInfoCallback"
                c:type="MirageEnumFilterStreamInfoCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="477">data to be passed to callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="enumerate_parsers"
              c:identifier="mirage_enumerate_parsers"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="314">Iterates over list of supported parsers, calling @func for each parser.

If @func returns %FALSE, the function immediately returns %FALSE.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="125"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="324">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="func"
                   transfer-ownership="none"
                   scope="call"
                   closure="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="316">callback function</doc>
          <type name="EnumParserInfoCallback"
                c:type="MirageEnumParserInfoCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="317">data to be passed to callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="enumerate_writers"
              c:identifier="mirage_enumerate_writers"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="394">Iterates over list of supported writers, calling @func for each writers.

If @func returns %FALSE, the function immediately returns %FALSE.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="129"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="404">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="func"
                   transfer-ownership="none"
                   scope="call"
                   closure="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="396">callback function</doc>
          <type name="EnumWriterInfoCallback"
                c:type="MirageEnumWriterInfoCallback"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="397">data to be passed to callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="error_quark"
              c:identifier="mirage_error_quark"
              moved-to="Error.quark">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/error.c"
           line="40">Registers an error quark for libMirage if necessary.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/error.c"
             line="45">The error quark used for libMirage errors.</doc>
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="get_filter_streams_info"
              c:identifier="mirage_get_filter_streams_info"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="450">Retrieves information structures for supported filter streams.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="132"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="458">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="info"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="452">array of filter streams' information structures</doc>
          <array length="1"
                 zero-terminated="0"
                 c:type="const MirageFilterStreamInfo**">
            <type name="FilterStreamInfo" c:type="MirageFilterStreamInfo*"/>
          </array>
        </parameter>
        <parameter name="num_filter_streams"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="453">number of supported filter streams</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_filter_streams_type"
              c:identifier="mirage_get_filter_streams_type"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="426">Retrieves #GType values for supported filter streams.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="131"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="434">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="types"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="428">array of filter streams' #GType values</doc>
          <array length="1" zero-terminated="0" c:type="const GType**">
            <type name="GType" c:type="GType*"/>
          </array>
        </parameter>
        <parameter name="num_filter_streams"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="429">number of supported filter streams</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_parsers_info"
              c:identifier="mirage_get_parsers_info"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="290">Retrieves information structures for supported parsers.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="124"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="298">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="info"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="292">array of parsers' information structures</doc>
          <array length="1"
                 zero-terminated="0"
                 c:type="const MirageParserInfo**">
            <type name="ParserInfo" c:type="MirageParserInfo*"/>
          </array>
        </parameter>
        <parameter name="num_parsers"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="293">number of supported parsers</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_parsers_type"
              c:identifier="mirage_get_parsers_type"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="266">Retrieves #GType values for supported parsers.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="123"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="274">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="types"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="268">array of parsers' #GType values</doc>
          <array length="1" zero-terminated="0" c:type="const GType**">
            <type name="GType" c:type="GType*"/>
          </array>
        </parameter>
        <parameter name="num_parsers"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="269">number of supported parsers</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_supported_debug_masks"
              c:identifier="mirage_get_supported_debug_masks"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="506">Retrieves the pointer to array of supported debug masks and stores it in @masks.
The array consists of one or more structures of type #MirageDebugMaskInfo. The
number of elements in the array is stored in @num_masks. The array belongs to
libMirage and should not be altered or freed.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="135"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="517">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="masks"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="508">location to store pointer to masks array</doc>
          <array length="1"
                 zero-terminated="0"
                 c:type="const MirageDebugMaskInfo**">
            <type name="DebugMaskInfo" c:type="MirageDebugMaskInfo*"/>
          </array>
        </parameter>
        <parameter name="num_masks"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="509">location to store number of elements in masks array</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_writers_info"
              c:identifier="mirage_get_writers_info"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="370">Retrieves information structures for supported parsers.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="128"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="378">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="info"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="372">array of writers' information structures</doc>
          <array length="1"
                 zero-terminated="0"
                 c:type="const MirageWriterInfo**">
            <type name="WriterInfo" c:type="MirageWriterInfo*"/>
          </array>
        </parameter>
        <parameter name="num_writers"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="373">number of supported writers</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_writers_type"
              c:identifier="mirage_get_writers_type"
              throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="346">Retrieves #GType values for supported writers.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="127"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="354">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="types"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="348">array of writers' #GType values</doc>
          <array length="1" zero-terminated="0" c:type="const GType**">
            <type name="GType" c:type="GType*"/>
          </array>
        </parameter>
        <parameter name="num_writers"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/mirage.c"
               line="349">number of supported writers</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_ascii2isrc" c:identifier="mirage_helper_ascii2isrc">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="455">Converts ASCII character @c into ISRC character.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="81"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="461">ISRC character</doc>
        <type name="guint8" c:type="guint8"/>
      </return-value>
      <parameters>
        <parameter name="c" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="457">ASCII character</doc>
          <type name="gchar" c:type="gchar"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_bcd2hex" c:identifier="mirage_helper_bcd2hex">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="431">Converts bcd-encoded integer into hex-encoded integer.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="78"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="437">hex-encoded integer</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="bcd" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="433">bcd-encoded integer</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_calculate_crc16"
              c:identifier="mirage_helper_calculate_crc16">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="672">Calculates the CRC-16 checksum of the data stored in @data.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="92"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="682">CRC-16 checksum of data</doc>
        <type name="guint16" c:type="guint16"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="674">buffer containing data</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="675">length of data</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="crctab" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="676">pointer to CRC polynomial table</doc>
          <array zero-terminated="0" c:type="const guint16*" fixed-size="256">
            <type name="guint16" c:type="guint16"/>
          </array>
        </parameter>
        <parameter name="reflected" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="677">whether to use the reflected algorithm</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="invert" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="678">whether the result should be inverted</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_calculate_crc32_fast"
              c:identifier="mirage_helper_calculate_crc32_fast">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="707">Calculates the CRC-32 checksum of the data stored in @data. This is
fast slice-by-8 implementation that processes 8 bytes at a time, and
requires @crctab to be allocating using mirage_helper_init_crc32_lut()
with slice parameter set to 8.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="93"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="720">CRC-32 checksum of data</doc>
        <type name="guint32" c:type="guint32"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="709">buffer containing data</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="710">length of data</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="crctab" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="711">pointer to CRC polynomial table</doc>
          <array zero-terminated="0" c:type="const guint32*" fixed-size="2048">
            <type name="guint32" c:type="guint32"/>
          </array>
        </parameter>
        <parameter name="reflected" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="712">whether to use the reflected algorithm</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="invert" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="713">whether the initial value and result should be inverted</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_calculate_crc32_standard"
              c:identifier="mirage_helper_calculate_crc32_standard">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="805">Calculates the CRC-32 checksum of the data stored in @data. This is
standard inplementation that processes 1 byte at a time, and requires
@crctab to be allocated using mirage_helper_init_crc32_lut() with slice
parameter set to 1.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="94"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="818">CRC-32 checksum of data</doc>
        <type name="guint32" c:type="guint32"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="807">buffer containing data</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="length" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="808">length of data</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="crctab" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="809">pointer to CRC polynomial table</doc>
          <array zero-terminated="0" c:type="const guint32*" fixed-size="256">
            <type name="guint32" c:type="guint32"/>
          </array>
        </parameter>
        <parameter name="reflected" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="810">whether to use the reflected algorithm</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="invert" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="811">whether the initial value and result should be inverted</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_determine_sector_type"
              c:identifier="mirage_helper_determine_sector_type">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="1169">Determines sector type from its data, based on first 16 bytes, which
correspond to sync pattern and header.

This function is intened to be used in image parsers, for determining
track mode in cases when full (2352-byte) sector data is available.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="135"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="1179">sector type (one of %MirageSectorType)</doc>
        <type name="SectorType" c:type="MirageSectorType"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1171">buffer containing at least first 16 bytes of sector's data</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_encoding_from_bom"
              c:identifier="mirage_helper_encoding_from_bom">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="1211">Tries to decode BOM provided in @buffer, and based on the result
returns the following encodings: UTF-32BE, UTF32-LE, UTF-16LE, UTF-16BE
or UTF-8 (if BOM is not valid).</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="138"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="1219">the name of encoding, or %NULL if UTF-8 is
assumed. The string is statically stored and should not be modified.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="buffer" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1213">a 4-byte buffer containing BOM</doc>
          <array zero-terminated="0" c:type="const guint8*" fixed-size="4">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="helper_find_data_file"
              c:identifier="mirage_helper_find_data_file">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="124">Attempts to find a file with filename @filename and path @path. @filename can
be file's basename or an absolute path. @path can be either directory path (in
this case, it must end with '/') or a filename (i.e. of file descriptor).

If @filename is an absolute path, its existence is first checked. If it
does not exist, search (see below) is performed in @filename's dirname. If
still no match is found and @path is not %NULL, @path's dirname is combined
with @filename's basename, and the combination's existence is checked. If
that fails as well, search (see below) is performed in @path's dirname.
Searching in the directory is performed as follows. Directory is opened
and its content is case-insensitively compared to @filename's basename.
All filenames whose beginning match @filename are considered, and the
shortest one is returned. This way, all possible case variations
(i.e. file.iso, FILE.ISO, FiLe.IsO, etc.) are taken into account.
This function can return a filename with additional suffices, but only if
a file without those extra suffices does not exist. E.g., if search is
done for 'data.img', and only 'data.img.gz' exists, it will be returned.
However, if both 'data.img' and 'data.img.gz' exist, the former will be
returned.
The returned string should be freed when no longer needed.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="60"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="150">a newly allocated string containing the fullpath of file, or %NULL.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="126">declared filename</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="path"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="127">path where to look for file (can be a filename), or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_format_string"
              c:identifier="mirage_helper_format_string"
              introspectable="0">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="1362">General-purpose string formatter with token replacement. Similarly to
sprintf, the tokens begin with percent character, but instead of denoting
format type, the tokens denote placeholders for user-defined replacements.
Sprintf-like field width and precision modifiers are supported for formatting
the replacements. If replacement is not specified for a replacement token
found in format, then the token is removed in the output string.

If replacement does not exist and the token to be replaced is preceded
by other word-caracters (see #GRegex documentation for details), in
addition to the replacement token, all those word characters are removed
together with the leading non-word character.

&lt;informalexample&gt;
&lt;programlisting&gt;
// Example: formatting a filename
output = mirage_helper_format_string("%b-%02s-track%t.%e",
    "b", g_variant_new_string("some_image"),
    "s", g_variant_new_int16(1),
    "t", g_variant_new_int16(3),
    "e", g_variant_new_string("iso"), NULL);
// output = "some_image-01-track3.iso"

// Example: removal of preceding characters when replacement does not exist
output = mirage_helper_format_string("%b-%02s-track%t.%e",
    "b", g_variant_new_string("some_image"),
    "s", g_variant_new_int16(1),
    "e", g_variant_new_string("iso"), NULL);
// output = "some_image-01.iso"
&lt;/programlisting&gt;
&lt;/informalexample&gt;

@Varargs is a %NULL-terminated list of replacement token/value pairs,
where a replacement token/value pair is a pair of string and a #GVariant.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="148"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="1401">string with all replacement tokens either
replaced or removed. The string should be freed using g_free() when
no longer needed.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1364">format string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1365">%NULL-terminated list of replacement token/value pairs</doc>
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_format_stringd"
              c:identifier="mirage_helper_format_stringd">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="1455">Dictionary-version of mirage_helper_format_string().

@dictionary is a #GHashTable where keys are replacement token strings
and each value is a #GVariant containing corresponding token replacement
value.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="150"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="1466">string with all replacement tokens either
replaced or removed. The string should be freed using g_free() when
no longer needed.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1457">format string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="dictionary" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1458">a #GHashTable containing replacement token/value pairs</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="gpointer" c:type="gpointer"/>
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="helper_format_stringv"
              c:identifier="mirage_helper_format_stringv"
              introspectable="0">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="1418">Variable-argument-list-version of mirage_helper_format_string().

@args is a %NULL-terminated list of replacement token/value pairs,
where a replacement token/value pair is a pair of string and a #GVariant.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="149"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="1428">string with all replacement tokens either
replaced or removed. The string should be freed using g_free() when
no longer needed.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1420">format string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="args" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1421">%NULL-terminated list of replacement token/value pairs</doc>
          <type name="va_list" c:type="va_list"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_get_suffix" c:identifier="mirage_helper_get_suffix">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="196">Retrieves suffix from @filename.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="63"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="202">pointer to character in @filename at which the suffix starts.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="198">filename</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_has_suffix" c:identifier="mirage_helper_has_suffix">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="209">Checks whether file name @filename ends with suffix @suffix.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="64"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="216">%TRUE if @filename contains suffix @suffix, %FALSE if not</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="211">filename</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="suffix" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="212">suffix</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_hex2bcd" c:identifier="mirage_helper_hex2bcd">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="414">Converts hex-encoded integer into bcd-encoded integer.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="77"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="420">bcd-encoded integer</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="hex" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="416">hex-encoded integer</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_init_crc16_lut"
              c:identifier="mirage_helper_init_crc16_lut">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="577">Calculates a look-up table for CRC16 based on the generator polynomial.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="89"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="583">Pointer to the CRC16 look-up table or NULL on failure.</doc>
        <type name="guint16" c:type="guint16*"/>
      </return-value>
      <parameters>
        <parameter name="genpoly" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="579">generator polynomial</doc>
          <type name="guint16" c:type="guint16"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_init_crc32_lut"
              c:identifier="mirage_helper_init_crc32_lut">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="614">Calculates a look-up table for CRC32 based on the generator polynomial.
The size of the lookup table depends on @slices. The standard algorithm
processes 1 byte at a time and has a look-up table size of 1KiB, whereas
The slice-by-4 and slice-by-8 algorithms use 4 and 8 KiB look-up tables that
are derived from the initial look-up table.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="90"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="625">Pointer to the CRC32 look-up table or NULL on failure.</doc>
        <type name="guint32" c:type="guint32*"/>
      </return-value>
      <parameters>
        <parameter name="genpoly" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="616">generator polynomial</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="slices" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="617">number of bytes to process at once</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_init_ecma_130b_scrambler_lut"
              c:identifier="mirage_helper_init_ecma_130b_scrambler_lut">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="1254">Calculates a look-up table for sector data scrambler from ECMA-130,
Annex B. The look-up table consists of 2340 entries, each being a
scramble byte for corresponding byte in sector data.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="144"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="1261">Pointer to the generated scrambler look-up table or NULL on failure.</doc>
        <type name="guint8" c:type="guint8*"/>
      </return-value>
    </function>
    <function name="helper_isrc2ascii" c:identifier="mirage_helper_isrc2ascii">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="477">Converts ISRC character @c into ASCII character.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="82"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="483">ACSII character</doc>
        <type name="gchar" c:type="gchar"/>
      </return-value>
      <parameters>
        <parameter name="c" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="479">ISRC character</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_lba2msf" c:identifier="mirage_helper_lba2msf">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="293">Converts LBA sector address stored in @lba into MSF address, storing each field
into @m, @s and @f, respectively.

If @diff is %TRUE, 150 frames difference is accounted for; this should be
used when converting absolute addresses. When converting relative addresses
(or lengths), @diff should be set to %FALSE.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="71"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="lba" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="295">LBA address</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="diff" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="296">account for the difference</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="m"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="297">location to store minutes, or %NULL</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="s"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="298">location to store seconds, or %NULL</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
        <parameter name="f"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full"
                   optional="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="299">location to store frames, or %NULL</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_lba2msf_str"
              c:identifier="mirage_helper_lba2msf_str">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="326">Converts LBA sector address stored in @lba into MSF address.

If @diff is %TRUE, 150 frames difference is accounted for; this should be
used when converting absolute addresses. When converting relative addresses
(or lengths), @diff should be set to %FALSE.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="72"/>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="337">a newly-allocated string containing MSF address; it should be freed
with g_free() when no longer needed.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="lba" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="328">LBA address</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="diff" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="329">account for the difference</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_msf2lba" c:identifier="mirage_helper_msf2lba">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="356">Converts MSF sector address stored in @m, @s and @f into LBA address.

If @diff is %TRUE, 150 frames difference is accounted for; this should be
used when converting absolute addresses. When converting relative addresses
(or lengths), @diff should be set to %FALSE.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="73"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="369">integer representing LBA address</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="m" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="358">minutes</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
        <parameter name="s" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="359">seconds</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
        <parameter name="f" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="360">frames</doc>
          <type name="guint8" c:type="guint8"/>
        </parameter>
        <parameter name="diff" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="361">difference</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_msf2lba_str"
              c:identifier="mirage_helper_msf2lba_str">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="387">Converts MSF sector address stored in @msf string into LBA address.

If @diff is %TRUE, 150 frames difference is accounted for; this should be
used when converting absolute addresses. When converting relative addresses
(or lengths), @diff should be set to %FALSE.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="74"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="398">integer representing LBA address or -1 on failure.</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="msf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="389">MSF string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="diff" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="390">difference</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_sector_edc_ecc_compute_ecc_block"
              c:identifier="mirage_helper_sector_edc_ecc_compute_ecc_block">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="1109">Calculates ECC (error correction code) for data in @src and writes the result
into @dest. The code assumes 2352 byte sectors. It can calculate both P and Q
layer of ECC data, depending on @major_count, @minor_count, @major_mult and
minor_inc.

To calculate ECC (first P, then Q layer) for different types of sectors and store it into sector data, use:
&lt;itemizedlist&gt;
&lt;listitem&gt;
Mode 1 sector:
&lt;programlisting&gt;
mirage_helper_sector_edc_ecc_compute_ecc_block(sector_buffer+0xC, 86, 24, 2, 86, sector_buffer+0x81C);
mirage_helper_sector_edc_ecc_compute_ecc_block(sector_buffer+0xC, 52, 43, 86, 88, sector_buffer+0x8C8);
&lt;/programlisting&gt;
&lt;/listitem&gt;
&lt;listitem&gt;
Mode 2 Form 1 sector:
&lt;programlisting&gt;
mirage_helper_sector_edc_ecc_compute_ecc_block(sector_buffer+0xC, 86, 24, 2, 86, sector_buffer+0x81C); \n
mirage_helper_sector_edc_ecc_compute_ecc_block(sector_buffer+0xC, 52, 43, 86, 88, sector_buffer+0x8C8);
&lt;/programlisting&gt;
&lt;/listitem&gt;
&lt;/itemizedlist&gt;
(This is assuming all other sector data, including EDC, is already stored in sector_buffer and that sector_buffer is 2532 bytes long)</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="133"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="src" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1111">data to calculate ECC data for</doc>
          <type name="guint8" c:type="const guint8*"/>
        </parameter>
        <parameter name="major_count" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1112">major count</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="minor_count" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1113">minor count</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="major_mult" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1114">major multiplicator</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="minor_inc" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1115">minor increment</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="dest"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1116">buffer to write calculated ECC data into</doc>
          <type name="guint8" c:type="guint8*"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_sector_edc_ecc_compute_edc_block"
              c:identifier="mirage_helper_sector_edc_ecc_compute_edc_block">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="1068">Calculates EDC (error detection code) for data in @src of length @size and
writes the result into @dest.

To calculate EDC for different types of sectors and store it into sector data, use:
&lt;itemizedlist&gt;
&lt;listitem&gt;
Mode 1 sector:
&lt;programlisting&gt;
mirage_helper_sector_edc_ecc_compute_edc_block(sector_buffer+0x00, 0x810, sector_buffer+0x810);
&lt;/programlisting&gt;
&lt;/listitem&gt;
&lt;listitem&gt;
Mode 2 Form 1 sector:
&lt;programlisting&gt;
mirage_helper_sector_edc_ecc_compute_edc_block(sector_buffer+0x10, 0x808, sector_buffer+0x818);
&lt;/programlisting&gt;
&lt;/listitem&gt;
&lt;listitem&gt;
Mode 2 Form 2 sector:
&lt;programlisting&gt;
mirage_helper_sector_edc_ecc_compute_edc_block(sector_buffer+0x10, 0x91C, sector_buffer+0x92C);
&lt;/programlisting&gt;
&lt;/listitem&gt;
&lt;/itemizedlist&gt;
(This is assuming all other sector data is already stored in sector_buffer and that sector_buffer is 2532 bytes long)</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="132"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="src" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1070">data to calculate EDC data for</doc>
          <array length="1" zero-terminated="0" c:type="const guint8*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="size" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1071">size of data in @src</doc>
          <type name="guint16" c:type="guint16"/>
        </parameter>
        <parameter name="dest"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="1072">buffer to write calculated EDC data into (4 bytes)</doc>
          <array zero-terminated="0" c:type="guint8*" fixed-size="4">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="helper_strcasecmp" c:identifier="mirage_helper_strcasecmp">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="234">Replacement function for g_strcasecmp/strcasecmp, which can properly handle UTF-8.
Glib docs state this is only an approximation, albeit it should be a fairly good one.

It compares the two strings @str1 and @str2, ignoring the case of the characters.
It returns an integer less than, equal to, or greater than zero if @str1 is found,
respectively, to be less than, to match, or be greater than @str2.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="67"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="246">an integer less than, equal to, or greater than zero  if  @str1
is  found, respectively, to  be less than, to match, or be greater than @str2.</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="str1" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="236">first string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="str2" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="237">second string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_strncasecmp"
              c:identifier="mirage_helper_strncasecmp">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="260">Replacement function for g_strncasecmp/strncasecmp, which can properly handle UTF-8.
Glib docs state this is only an approximation, albeit it should be a fairly good one.

It compares first @len characters of string @str1 and @str2, ignoring the case of
the characters. It returns an integer less than, equal to, or greater than zero if
first @len characters of @str1 is found, respectively, to be less than, to match,
or be greater than first @len characters of @str2.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="68"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="274">an integer less than, equal to, or greater than zero  if  first @len
characters of @str1 is found, respectively, to  be less than, to match, or
be greater than first @len characters of @str2.</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="str1" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="262">first string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="str2" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="263">second string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="264">length of string to compare</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="helper_subchannel_deinterleave"
              c:identifier="mirage_helper_subchannel_deinterleave">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="994">Deinterleaves subchannel data of type @subchan from subchannel data stored in
@channel96 and writes the resulting subhcannel data into @subchannel12.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="129"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="subchan" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="996">subchannel type</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="channel96" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="997">buffer containing subchannel data to deinterleave (96 bytes)</doc>
          <array zero-terminated="0" c:type="const guint8*" fixed-size="96">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="channel12"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="998">buffer to deinterleave subchannel data into (12 bytes)</doc>
          <array zero-terminated="0" c:type="guint8*" fixed-size="12">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="helper_subchannel_interleave"
              c:identifier="mirage_helper_subchannel_interleave">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="971">Interleaves subchannel data of type @subchan stored in @channel12 into
subchannel data stored in @subchannel96.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="128"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="subchan" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="973">subchannel type</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="channel12" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="974">buffer containing subchannel data to interleave (12 bytes)</doc>
          <array zero-terminated="0" c:type="const guint8*" fixed-size="12">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="channel96"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="975">buffer to interleave subchannel data into (96 bytes)</doc>
          <array zero-terminated="0" c:type="guint8*" fixed-size="96">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="helper_subchannel_q_calculate_crc"
              c:identifier="mirage_helper_subchannel_q_calculate_crc">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="851">Calculates the CRC-16 checksum of the Q subchannel data stored in @data.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="97"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="857">CRC-16 checksum of Q subchannel data</doc>
        <type name="guint16" c:type="guint16"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="853">buffer containing Q subchannel data (10 bytes)</doc>
          <array zero-terminated="0" c:type="const guint8*" fixed-size="10">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="helper_subchannel_q_decode_isrc"
              c:identifier="mirage_helper_subchannel_q_decode_isrc">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="936">Decodes ISRC stored in @buf into string @isrc.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="101"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="938">buffer containing encoded ISRC (8 bytes)</doc>
          <array zero-terminated="0" c:type="const guint8*" fixed-size="8">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="isrc"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="939">string to decode ISRC into (12 bytes)</doc>
          <array zero-terminated="0" c:type="gchar*" fixed-size="12">
            <type name="utf8" c:type="gchar"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="helper_subchannel_q_decode_mcn"
              c:identifier="mirage_helper_subchannel_q_decode_mcn">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="886">Decodes MCN stored in @buf into string @mcn.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="99"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="buf" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="888">buffer containing encoded MCN (7 bytes)</doc>
          <array zero-terminated="0" c:type="const guint8*" fixed-size="7">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="mcn"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="889">string to decode MCN into (13 bytes)</doc>
          <array zero-terminated="0" c:type="gchar*" fixed-size="13">
            <type name="utf8" c:type="gchar"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="helper_subchannel_q_encode_isrc"
              c:identifier="mirage_helper_subchannel_q_encode_isrc">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="905">Encodes ISRC string @isrc into buffer @buf.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="100"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="buf"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="907">buffer to encode ISRC into (8 bytes)</doc>
          <array zero-terminated="0" c:type="guint8*" fixed-size="8">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="isrc" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="908">ISRC string (12 bytes)</doc>
          <array zero-terminated="0" c:type="const gchar*" fixed-size="12">
            <type name="utf8" c:type="gchar"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="helper_subchannel_q_encode_mcn"
              c:identifier="mirage_helper_subchannel_q_encode_mcn">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="864">Encodes MCN string @mcn into buffer @buf.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="98"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="buf"
                   direction="out"
                   caller-allocates="1"
                   transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="866">buffer to encode MCN into (7 bytes)</doc>
          <array zero-terminated="0" c:type="guint8*" fixed-size="7">
            <type name="guint8" c:type="guint8"/>
          </array>
        </parameter>
        <parameter name="mcn" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="867">MCN string (13 bytes)</doc>
          <array zero-terminated="0" c:type="const gchar*" fixed-size="13">
            <type name="utf8" c:type="gchar"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="helper_validate_isrc"
              c:identifier="mirage_helper_validate_isrc">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="498">Performs a limited validation of an ISRC string.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/utils.h"
                       line="83"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/utils.c"
             line="504">TRUE or FALSE</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="isrc" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="cdemu-code/libmirage/mirage/utils.c"
               line="500">An ASCII encoded ISRC string.</doc>
          <array zero-terminated="0" c:type="const gchar*" fixed-size="12">
            <type name="utf8" c:type="gchar"/>
          </array>
        </parameter>
      </parameters>
    </function>
    <function name="initialize" c:identifier="mirage_initialize" throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="123">Initializes libMirage library. It should be called before any other of
libMirage functions.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="120"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="130">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <docsection name="mirage">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="20">These functions represent the core of the libMirage API. Before the
library can be used, it must be initialized using mirage_initialize(),
which loads the plugins containing image parsers, writers and filter
streams. When library is no longer needed, it can be shut down using
mirage_shutdown(), which unloads the plugins.

The core functions listed in this section enable enumeration of
supported parsers, writers and filter streams. Most of the core functionality
of libMirage, such as loading images, is encapsulated in #MirageContext
object, which can be obtained using GLib's g_object_new().</doc>
    </docsection>
    <docsection name="mirage-cdtext-coder">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/cdtext-coder.c"
           line="20">#MirageCdTextCoder object is a general-purpose CD-TEXT encoder/decoder.
It was designed to be used by #MirageSession objects to encode and decode
CD-TEXT data, but it could be used in other applications as well.

It is loosely based on the CD-TEXT encoding/decoding code found in
cdrdao and supports 8 CD-TEXT blocks with pack types from 0x80 to
0x8F. When encoding data, pack size data (pack type 0x8F) is always
generated.

To be used as encoder, a #MirageCdTextCoder encoder must be first
initialized with mirage_cdtext_encoder_init(). Then, information for
at least one CD-TEXT block (up to 8 are supported) should be set with
mirage_cdtext_encoder_set_block_info(). After all the CD-TEXT data is
added to encoder with mirage_cdtext_encoder_add_data(), buffer containing
the encoded data can be obtained with mirage_cdtext_encoder_encode().

To use a #MirageCdTextCoder as CD-TEXT decoder, one should first
initialize it with mirage_cdtext_decoder_init(). This function already
performs all the decoding; block information can be obtained with
mirage_cdtext_decoder_get_block_info() and data for each block can
be obtained with mirage_cdtext_decoder_get_data() and the appropriate
callback function.</doc>
    </docsection>
    <docsection name="mirage-context">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/context.c"
           line="20">#MirageContext provides a context, which is attached to libMirage's
objects. This way, it allows sharing and propagation of settings, such
as debug verbosity, parser options, password function, etc. It also
provides I/O stream caching, which is used by image parsers and writers.

Due to all the properties it holds, #MirageContext is designed as the
core object of libMirage and provides the library's main functionality,
the loading of image files. Therefore, loading an image usually looks
as follows:
- initialize the library using mirage_initialize()
- create a #MirageContext object, i.e. using g_object_new() and %MIRAGE_TYPE_CONTEXT
- (optionally) set debug name, domain and mask
- load the image using mirage_context_load_image()</doc>
    </docsection>
    <docsection name="mirage-contextual">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/contextual.c"
           line="20">#MirageContextual provides an interface that allows attachment of a
#MirageContext to the object implementing it. The object must implement
two functions for getting and setting the context - mirage_contextual_get_context()
and mirage_contextual_set_context().

In addition, #MirageContextual provides some shared code that can be
used by implementations. Most notable are debugging facilities, in
form of functions mirage_contextual_debug_message() and
mirage_contextual_debug_messagev(), which print debug messages depending
on the settings of the attached context.

Furthermore, for convenience of image parser and filter stream implementations,
passthrough is provided for some functions of #MirageContext. Using these
functions is equivalent to getting and verifying the attached context,
calling its function directly, and releasing the reference.</doc>
    </docsection>
    <docsection name="mirage-debug">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/debug.h"
           line="23">libMirage supports changing of debug message verbosity on fly,
without the need to restart the application. This is achieved by using
#MirageContext objects, which are attached to objects implementing
#MirageContextual interface. Such an object is #MirageObject, which
can obtain context from its parent. This way, all objects in the
hierarchy share the same context, and same debug verbosity setting.

Debug verbosity can be controlled via mask, which can be set to the
context using mirage_context_set_debug_mask(). See #MirageDebugMasks.
The actual printing of debug messages within the code is achieved by
mirage_contextual_debug_messagev() or mirage_contextual_debug_message(),
or by convenience macro MIRAGE_DEBUG().</doc>
    </docsection>
    <docsection name="mirage-disc">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/disc.c"
           line="20">#MirageDisc object is a top-level object in the disc layout
representation, representing the actual disc.

It provides functions for manipulating the disc layout; adding and
removing sessions and tracks, manipulating medium type, and convenience
functions for accessing sectors on the disc.

Typically, a #MirageDisc is obtained as a result of loading an image
using #MirageContext and its mirage_context_load_image() function.</doc>
    </docsection>
    <docsection name="mirage-error">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/error.c"
           line="20">libMirage uses GLib's #GError system for reporting errors. Many
functions provided by libMirage's objects take an optional @error
parameter. If @error is not %NULL, in case that such function should
fail, a #GError error is set into it using g_set_error().
Unless coming from underlying GLib's systems, the returned error
code is one of #MirageErrorCode.</doc>
    </docsection>
    <docsection name="mirage-file-stream">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/file-stream.c"
           line="20">#MirageFileStream is a basic unit of file access abstraction used in
libMirage. It implements #MirageStream interface to perform I/O operations.

A #MirageFileStream is found at the bottom of all filter chains used
by libMirage's image parsers and writers.</doc>
    </docsection>
    <docsection name="mirage-filter-stream">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/filter-stream.c"
           line="20">#MirageFilterStream is a basic unit of file access abstraction used in
libMirage. It implements #MirageStream interface to perform I/O operations.

When opening a file with libMirage, mirage_context_create_input_stream()
function should be used. It creates a chain of #MirageFilterStream objects
on top of a #MirageFileStream, and returns the top object on the chain.
This allows transparent access to, for example, compressed data stored
in the file. Alternatively, you can create a #MirageFileStream yourself
and open additional #MirageFilterStream objects on top of it.

There are two ways to implement a #MirageFilterStream. For full control
over the logic for reading from parts and managing position in the
stream, use "full interface", which requires implementation of three
virtual functions: read, seek and tell. The second option is to use
"simplified read interface", which provides framework for stream position
management and reading logic, and requires that filter stream implements
partial_read function. Additionally, it requires that filter stream
implementation sets the file stream size using
mirage_filter_stream_simplified_set_stream_length() function. In
simplified_partial_read, the current position in the stream, which is
managed by the framework, can be obtained using mirage_filter_stream_simplified_get_position().</doc>
    </docsection>
    <docsection name="mirage-fragment">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/fragment.c"
           line="20">#MirageFragment object represents an interface between a #MirageTrack
and I/O stream(s) containing the data. It allows tracks to read and/or
write both sectors' main channel and subchannel data. When constructing
a track, an image parser will typically create and append at least one
fragment. Similarly, during image conversion and writing process, at
least one fragment will be requested from image writer and written to.

A #MirageFragment object is obtained using g_object_new() function.
Both main channel and subchannel data I/O streams can be set
using mirage_fragment_main_data_set_stream() and mirage_fragment_subchannel_data_set_stream()
functions. If no streams are set, the fragment acts as a "NULL" fragment,
and can be used to represent zero-filled pregaps and postgaps in
tracks.</doc>
    </docsection>
    <docsection name="mirage-index">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/index.c"
           line="20">#MirageIndex object represents an index within a track. It is a
container object that stores the index number and corresponding
address.</doc>
    </docsection>
    <docsection name="mirage-language">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/language.c"
           line="20">#MirageLanguage object represents a CD-TEXT language for session or
track. It is a container object that stores language code and CD-TEXT
pack data for different pack types.</doc>
    </docsection>
    <docsection name="mirage-object">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/object.c"
           line="20">#MirageObject is used as a base object class throughout libMirage. It
implements #MirageContextual interface, which allows attachment of
#MirageContext. It also implements support for constructing parent-child
hierarchy, which allows propagation of the #MirageContext and its changes
from parent to the child objects.</doc>
    </docsection>
    <docsection name="mirage-parser">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/parser.c"
           line="20">#MirageParser object is a base object for image parser implementations.
In addition to providing function for image loading and obtaining
parser information, it also provides some helper functions that can
be used in parser implementations.

#MirageParser provides a single virtual function - mirage_parser_load_image().
This function must be implemented by image parsers, which derive from
#MirageParser object. The function must first check if given file(s)
are supported by the given parser, and then the actual loading is
performed. The result is a #MirageDisc object, which represents the
disc stored in the image file(s).</doc>
    </docsection>
    <docsection name="mirage-plugin">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/plugin.c"
           line="20">#MiragePlugin object is a base object of libMirage's plugin system
and derives from #GTypeModule. It provides support for loadable
modules that contain implementations of image parsers, image writers
and/or filter streams.

The plugin system is used internally by libMirage, and should
generally not be used elsewhere.</doc>
    </docsection>
    <docsection name="mirage-sector">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/sector.c"
           line="20">#MirageSector object represents a sector. It provides access to the
sector data, generating it if needed.</doc>
    </docsection>
    <docsection name="mirage-session">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/session.c"
           line="20">#MirageSession object represents a session in the disc layout. It
provides functions for manipulating session layout; setting session
type, adding and removing tracks and languages, setting CD-TEXT data
and MCN, etc.</doc>
    </docsection>
    <docsection name="mirage-stream">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/stream.c"
           line="20">#MirageStream is a basic unit of file access abstraction used in
libMirage. It supports basic I/O operations, such as read, write,
seek and tell.

Streams in libMirage are designed around the idea of filter stream
chains, where several filter streams (#MirageFilterStream) can be
chained on top of a stream that abstracts direct access to the file
(#MirageFileStream).</doc>
    </docsection>
    <docsection name="mirage-track">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/track.c"
           line="20">#MirageTrack object represents a track in the disc layout. It provides
functions for manipulating track data and layout; setting track type
and flags, adding and removing fragments, indices and languages,
read/write access to sectors, etc.</doc>
    </docsection>
    <docsection name="mirage-utils">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/utils.c"
           line="20">These functions cover various functionality. They are exported
because, while primarily designed to be used within libMirage, they
could also prove useful to other applications.</doc>
    </docsection>
    <docsection name="mirage-version">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/version.c"
           line="20">libMirage provides version information, primarily useful in configure
checks for builds that have a configure script. It can also be used
in applications when displaying underlying system version information.

Additionaly, &lt;ulink url="http://semver.org"&gt;semantic version&lt;/ulink&gt;
is also exposed, which is primarily intended to be used in libMirage's
plugin system.</doc>
    </docsection>
    <docsection name="mirage-writer">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/writer.c"
           line="20">#MirageWriter object is a base object for image writer implementations.

In contrast to image loading process, which is done by a single
function call, the image writing process is designed to be interactive:
first, the user creates a #MirageDisc object. On created disc, the
medium type should be set, and the filename should be changed to the
desired output filename, before passing the disc object to
mirage_writer_open_image(), which initializes the writer. Afterwards,
the disc layout should be populated with session(s) and track(s), and
tracks with fragments. Fragments for tracks are requested from writer
using mirage_writer_create_fragment() function. After the fragment
is set up for the track, sectors can be written to it using mirage_track_put_sector(),
or mirage_disc_put_sector(). To finish image writing, call mirage_writer_finalize_image(),
which might write the image descriptor file and rename image data files,
if necessary.

The above-outlined process makes image writing flexible enough to
accomodate both scenarios where all image data to be written is given
in advance (e.g., from another image) and cases where image data is
arriving incrementally, sector-by-sector.

A #MirageWriter provides mirage_writer_convert_image() function, which
allows writer to be used for converting an existing image by copying
all relevant data from it. In addition, conversion progress reporting
can be controlled using mirage_writer_set_conversion_progress_step()
and followed using #MirageWriter::conversion-progress.

To control image writer parameters, #MirageWriter implements parameter
sheet with API for defining parameters and validation/retrieval of
user-supplied values.</doc>
    </docsection>
    <function name="shutdown" c:identifier="mirage_shutdown" throws="1">
      <doc xml:space="preserve"
           filename="cdemu-code/libmirage/mirage/mirage.c"
           line="210">Shuts down libMirage library. It should be called when libMirage is no longer
needed.</doc>
      <source-position filename="cdemu-code/libmirage/mirage/mirage.h"
                       line="121"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="cdemu-code/libmirage/mirage/mirage.c"
             line="217">%TRUE on success, %FALSE on failure</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
  </namespace>
</repository>
