<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GLib" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <package name="libgcab-1.0"/>
  <c:include name="libgcab.h"/>
  <namespace name="GCab"
             version="1.0"
             shared-library="libgcab-1.0.so.0"
             c:identifier-prefixes="GCab"
             c:symbol-prefixes="gcab">
    <class name="Cabinet"
           c:symbol-prefix="cabinet"
           c:type="GCabCabinet"
           parent="GObject.Object"
           glib:type-name="GCabCabinet"
           glib:get-type="gcab_cabinet_get_type"
           glib:type-struct="CabinetClass">
      <doc xml:space="preserve"
           filename="../libgcab/gcab-cabinet.h"
           line="32">An opaque object holding a Cabinet file reference.</doc>
      <source-position filename="../libgcab/gcab-cabinet.h" line="38"/>
      <constructor name="new" c:identifier="gcab_cabinet_new">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.c"
             line="401">Create a new #GCabCabinet object to read or create a Cabinet
archive.</doc>
        <source-position filename="../libgcab/gcab-cabinet.h" line="66"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-cabinet.c"
               line="407">a new #GCabCabinet</doc>
          <type name="Cabinet" c:type="GCabCabinet*"/>
        </return-value>
      </constructor>
      <method name="add_folder"
              c:identifier="gcab_cabinet_add_folder"
              throws="1">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.c"
             line="152">Add @folder to @cabinet.</doc>
        <source-position filename="../libgcab/gcab-cabinet.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-cabinet.c"
               line="160">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cabinet" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="154">a #GCabCabinet</doc>
            <type name="Cabinet" c:type="GCabCabinet*"/>
          </instance-parameter>
          <parameter name="folder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="155">a #GCabFolder</doc>
            <type name="Folder" c:type="GCabFolder*"/>
          </parameter>
        </parameters>
      </method>
      <method name="extract" c:identifier="gcab_cabinet_extract" throws="1">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.c"
             line="502">Extract files to given path.

If @path is NULL then the files are decompressed to memory blobs stored on
each #GCabFile.</doc>
        <source-position filename="../libgcab/gcab-cabinet.h" line="91"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-cabinet.c"
               line="519">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cabinet" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="504">a #GCabCabinet</doc>
            <type name="Cabinet" c:type="GCabCabinet*"/>
          </instance-parameter>
          <parameter name="path"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="505">the path to extract files</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="file_callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="call"
                     closure="3">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="506">an optional #GCabFile callback,
    return %FALSE to filter out or skip files.</doc>
            <type name="FileCallback" c:type="GCabFileCallback"/>
          </parameter>
          <parameter name="progress_callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="call"
                     closure="3">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="508">a progress callback</doc>
            <type name="Gio.FileProgressCallback"
                  c:type="GFileProgressCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="509">callback data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="510">optional #GCancellable object,
    %NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="extract_simple"
              c:identifier="gcab_cabinet_extract_simple"
              throws="1">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.c"
             line="558">Extract files to given path.</doc>
        <source-position filename="../libgcab/gcab-cabinet.h" line="98"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-cabinet.c"
               line="571">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cabinet" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="560">a #GCabCabinet</doc>
            <type name="Cabinet" c:type="GCabCabinet*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="561">the path to extract files</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="file_callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="562">an optional #GCabFile callback,
    return %FALSE to filter out or skip files.</doc>
            <type name="FileCallback" c:type="GCabFileCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="564">callback data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="565">optional #GCancellable object,
    %NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_folders" c:identifier="gcab_cabinet_get_folders">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.c"
             line="185">Get the Cabinet folders within the @cabinet.
Note that Cabinet folders are not like filesystem path, they are
group of files sharing some layout parameters.</doc>
        <source-position filename="../libgcab/gcab-cabinet.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-cabinet.c"
               line="193">an array of #GCabFolder</doc>
          <array name="GLib.PtrArray" c:type="GPtrArray*">
            <type name="Folder"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cabinet" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="187">a #GCabCabinet</doc>
            <type name="Cabinet" c:type="GCabCabinet*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_signature"
              c:identifier="gcab_cabinet_get_signature"
              version="0.5"
              throws="1">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.c"
             line="584">Lookup the cabinet authenticode signature if any.</doc>
        <source-position filename="../libgcab/gcab-cabinet.h" line="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-cabinet.c"
               line="595">the array containing the PKCS#7 signed data or %NULL on error.</doc>
          <array name="GLib.ByteArray" c:type="const GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cabinet" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="586">a #GCabCabinet</doc>
            <type name="Cabinet" c:type="GCabCabinet*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="587">optional #GCancellable object,
    %NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_size"
              c:identifier="gcab_cabinet_get_size"
              version="1.0">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.c"
             line="203">Get the size of the compressed cabinet file.</doc>
        <source-position filename="../libgcab/gcab-cabinet.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-cabinet.c"
               line="209">size in bytes</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="cabinet" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="205">a #GCabCabinet</doc>
            <type name="Cabinet" c:type="GCabCabinet*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load" c:identifier="gcab_cabinet_load" throws="1">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.c"
             line="415">Load a cabinet archive.</doc>
        <source-position filename="../libgcab/gcab-cabinet.h" line="67"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-cabinet.c"
               line="425">%TRUE on success</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cabinet" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="417">a #GCabCabinet</doc>
            <type name="Cabinet" c:type="GCabCabinet*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="418">a #GInputStream</doc>
            <type name="Gio.InputStream" c:type="GInputStream*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="419">optional #GCancellable object,
    %NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write" c:identifier="gcab_cabinet_write" throws="1">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.c"
             line="221">Save @cabinet to the output stream @out. @out must be a #GSeekable.</doc>
        <source-position filename="../libgcab/gcab-cabinet.h" line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-cabinet.c"
               line="234">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cabinet" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="223">a #GCabCabinet</doc>
            <type name="Cabinet" c:type="GCabCabinet*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="224">a #GOutputStream also #GSeekable</doc>
            <type name="Gio.OutputStream" c:type="GOutputStream*"/>
          </parameter>
          <parameter name="file_callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="call"
                     closure="3">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="225">report current file being saved</doc>
            <type name="FileCallback" c:type="GCabFileCallback"/>
          </parameter>
          <parameter name="progress_callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="call"
                     closure="3">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="226">report saving progress</doc>
            <type name="Gio.FileProgressCallback"
                  c:type="GFileProgressCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="227">user data to pass to callbacks</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="228">optional #GCancellable object,
    %NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_simple"
              c:identifier="gcab_cabinet_write_simple"
              throws="1">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.c"
             line="376">Save @cabinet to the output stream @out. @out must be a #GSeekable.</doc>
        <source-position filename="../libgcab/gcab-cabinet.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-cabinet.c"
               line="388">%TRUE on success.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cabinet" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="378">a #GCabCabinet</doc>
            <type name="Cabinet" c:type="GCabCabinet*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="379">a #GOutputStream also #GSeekable</doc>
            <type name="Gio.OutputStream" c:type="GOutputStream*"/>
          </parameter>
          <parameter name="file_callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="380">report current file being saved</doc>
            <type name="FileCallback" c:type="GCabFileCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="381">user data to pass to callbacks</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-cabinet.c"
                 line="382">optional #GCancellable object,
    %NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="reserved" writable="1" transfer-ownership="none">
        <array name="GLib.ByteArray">
          <type name="guint8" c:type="guint8"/>
        </array>
      </property>
      <property name="signature" writable="1" transfer-ownership="none">
        <array name="GLib.ByteArray">
          <type name="guint8" c:type="guint8"/>
        </array>
      </property>
    </class>
    <record name="CabinetClass"
            c:type="GCabCabinetClass"
            glib:is-gtype-struct-for="Cabinet">
      <source-position filename="../libgcab/gcab-cabinet.h" line="38"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="Compression"
                 glib:type-name="GCabCompression"
                 glib:get-type="gcab_compression_get_type"
                 c:type="GCabCompression">
      <doc xml:space="preserve"
           filename="../libgcab/gcab-folder.h"
           line="38">Compression used by the #GCabFolder.</doc>
      <member name="none"
              value="0"
              c:identifier="GCAB_COMPRESSION_NONE"
              glib:nick="none">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-folder.h"
             line="40">No compression.</doc>
      </member>
      <member name="mszip"
              value="1"
              c:identifier="GCAB_COMPRESSION_MSZIP"
              glib:nick="mszip">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-folder.h"
             line="41">MSZIP compression.</doc>
      </member>
      <member name="quantum"
              value="2"
              c:identifier="GCAB_COMPRESSION_QUANTUM"
              glib:nick="quantum">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-folder.h"
             line="42">QUANTUM compression (unsupported).</doc>
      </member>
      <member name="lzx"
              value="3"
              c:identifier="GCAB_COMPRESSION_LZX"
              glib:nick="lzx">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-folder.h"
             line="43">LZX compression (only decompression supported).</doc>
      </member>
      <member name="mask"
              value="15"
              c:identifier="GCAB_COMPRESSION_MASK"
              glib:nick="mask">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-folder.h"
             line="44">compression value mask.</doc>
      </member>
    </enumeration>
    <enumeration name="Error"
                 c:type="GCabError"
                 glib:error-domain="gcab-error-quark">
      <doc xml:space="preserve"
           filename="../libgcab/gcab-cabinet.h"
           line="49">The various errors triggered by the GCab functions.</doc>
      <source-position filename="../libgcab/gcab-cabinet.h" line="64"/>
      <member name="format" value="0" c:identifier="GCAB_ERROR_FORMAT">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.h"
             line="51">The given file is not of Cabinet format.</doc>
      </member>
      <member name="failed" value="1" c:identifier="GCAB_ERROR_FAILED">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.h"
             line="52">General function failure.</doc>
      </member>
      <member name="not_supported"
              value="2"
              c:identifier="GCAB_ERROR_NOT_SUPPORTED">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.h"
             line="53">Action or format is not supported</doc>
      </member>
      <member name="invalid_data"
              value="3"
              c:identifier="GCAB_ERROR_INVALID_DATA">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-cabinet.h"
             line="54">Data stream was invalid</doc>
      </member>
    </enumeration>
    <class name="File"
           c:symbol-prefix="file"
           c:type="GCabFile"
           parent="GObject.Object"
           glib:type-name="GCabFile"
           glib:get-type="gcab_file_get_type"
           glib:type-struct="FileClass">
      <doc xml:space="preserve"
           filename="../libgcab/gcab-file.h"
           line="29">An opaque object, referencing a file in a Cabinet.</doc>
      <source-position filename="../libgcab/gcab-file.h" line="35"/>
      <constructor name="new_with_bytes"
                   c:identifier="gcab_file_new_with_bytes"
                   version="1.0">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="473">Create a #GCabFile from a given #GBytes.

If this file is to be added to an archive you should also probably use
gcab_file_set_date() and gcab_file_set_attributes() to set sensible values.</doc>
        <source-position filename="../libgcab/gcab-file.h" line="69"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.c"
               line="483">a new #GCabFile</doc>
          <type name="File" c:type="GCabFile*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="475">name of the file within the cabinet</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="bytes" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="476">a #GBytes to be added to the cabinet</doc>
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_file" c:identifier="gcab_file_new_with_file">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="449">Create a #GCabFile from a given #GFile, to be added to a
#GCabCabinet for archive creation.</doc>
        <source-position filename="../libgcab/gcab-file.h" line="68"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.c"
               line="457">a new #GCabFile</doc>
          <type name="File" c:type="GCabFile*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="451">name of the file within the cabinet</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="452">a #GFile to be added to the cabinet</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_attributes"
              c:identifier="gcab_file_get_attributes"
              version="0.6">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="361">Get the file attributes.</doc>
        <source-position filename="../libgcab/gcab-file.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.c"
               line="367">the cabinet file attributes</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="363">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bytes"
              c:identifier="gcab_file_get_bytes"
              version="1.0">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="431">Get the #GFile associated with @file. This will only be non-%NULL if the
#GCabFile has been created using gcab_file_new_with_bytes().</doc>
        <source-position filename="../libgcab/gcab-file.h" line="71"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.c"
               line="438">the associated #GBytes or %NULL</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="433">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_date" c:identifier="gcab_file_get_date" version="0.6">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="334">Get the file date, in @result.</doc>
        <source-position filename="../libgcab/gcab-file.h" line="83"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.c"
               line="343">%TRUE if @tv was set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="336">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="337">a #GTimeVal to return date</doc>
            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_date_time"
              c:identifier="gcab_file_get_date_time"
              version="1.4">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="304">Gets the file date and returns it as a #GDateTime..</doc>
        <source-position filename="../libgcab/gcab-file.h" line="78"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.c"
               line="312">file date, or NULL if unknown.</doc>
          <type name="GLib.DateTime" c:type="GDateTime*"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="306">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_extract_name"
              c:identifier="gcab_file_get_extract_name">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="572">Get the file name to use for extraction, or %NULL.</doc>
        <source-position filename="../libgcab/gcab-file.h" line="75"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.c"
               line="578">a file name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="574">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_file" c:identifier="gcab_file_get_file">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="410">If the cabinet is being created, get the #GFile associated with
@file. This must be an exisiting file that can be read, in order to
be added to the archive during cabinet creation.

If @file is from an existing cabinet, the fuction will return
%NULL.</doc>
        <source-position filename="../libgcab/gcab-file.h" line="70"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.c"
               line="421">the associated #GFile or %NULL</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="412">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="gcab_file_get_name">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="394">Get the file name within the cabinet.</doc>
        <source-position filename="../libgcab/gcab-file.h" line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.c"
               line="400">the cabinet file name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="396">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size" c:identifier="gcab_file_get_size" version="0.6">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="287">Get the file size.</doc>
        <source-position filename="../libgcab/gcab-file.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.c"
               line="293">the cabinet file size</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="289">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_attributes"
              c:identifier="gcab_file_set_attributes"
              version="1.0">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="378">Set the file attributes.</doc>
        <source-position filename="../libgcab/gcab-file.h" line="77"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="380">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
          <parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="381">the attributes, e.g. %GCAB_FILE_ATTRIBUTE_RDONLY</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_date" c:identifier="gcab_file_set_date" version="1.0">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="207">Sets the file modification date, instead of the value provided by the GFile.</doc>
        <source-position filename="../libgcab/gcab-file.h" line="85"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="209">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
          <parameter name="tv" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="210">a #GTimeVal</doc>
            <type name="GLib.TimeVal" c:type="const GTimeVal*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_date_time"
              c:identifier="gcab_file_set_date_time"
              version="1.4">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="183">Sets the file modification date (instead of the date provided by the GFile)</doc>
        <source-position filename="../libgcab/gcab-file.h" line="79"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="185">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
          <parameter name="dt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="186">a #GDateTime</doc>
            <type name="GLib.DateTime" c:type="GDateTime*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_extract_name"
              c:identifier="gcab_file_set_extract_name">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.c"
             line="588">Sets the file name to use for extraction, instead of the name
provided by the Cabinet.</doc>
        <source-position filename="../libgcab/gcab-file.h" line="76"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="590">a #GCabFile</doc>
            <type name="File" c:type="GCabFile*"/>
          </instance-parameter>
          <parameter name="name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-file.c"
                 line="591">a file name or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="bytes" writable="1" transfer-ownership="none">
        <type name="GLib.Bytes"/>
      </property>
      <property name="file" writable="1" transfer-ownership="none">
        <type name="Gio.File"/>
      </property>
      <property name="name" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
    </class>
    <enumeration name="FileAttribute"
                 glib:type-name="GCabFileAttribute"
                 glib:get-type="gcab_file_attribute_get_type"
                 c:type="GCabFileAttribute">
      <doc xml:space="preserve"
           filename="../libgcab/gcab-file.h"
           line="37">Attributes associated with the #GCabFile.</doc>
      <member name="rdonly"
              value="1"
              c:identifier="GCAB_FILE_ATTRIBUTE_RDONLY"
              glib:nick="rdonly">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.h"
             line="39">file is read-only</doc>
      </member>
      <member name="hidden"
              value="2"
              c:identifier="GCAB_FILE_ATTRIBUTE_HIDDEN"
              glib:nick="hidden">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.h"
             line="40">file is hidden</doc>
      </member>
      <member name="system"
              value="4"
              c:identifier="GCAB_FILE_ATTRIBUTE_SYSTEM"
              glib:nick="system">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.h"
             line="41">file is a system file</doc>
      </member>
      <member name="arch"
              value="32"
              c:identifier="GCAB_FILE_ATTRIBUTE_ARCH"
              glib:nick="arch">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.h"
             line="42">file modified since last backup</doc>
      </member>
      <member name="exec"
              value="64"
              c:identifier="GCAB_FILE_ATTRIBUTE_EXEC"
              glib:nick="exec">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.h"
             line="43">run after extraction</doc>
      </member>
      <member name="name_is_utf"
              value="128"
              c:identifier="GCAB_FILE_ATTRIBUTE_NAME_IS_UTF"
              glib:nick="name-is-utf">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-file.h"
             line="44">name contains UTF</doc>
      </member>
    </enumeration>
    <callback name="FileCallback" c:type="GCabFileCallback">
      <doc xml:space="preserve"
           filename="../libgcab/gcab-file.h"
           line="58">The type used for callback called when processing Cabinet archive
files.</doc>
      <source-position filename="../libgcab/gcab-file.h" line="66"/>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="file" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.h"
               line="60">the file being processed</doc>
          <type name="File" c:type="GCabFile*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="1">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-file.h"
               line="61">user data passed to the callback.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="FileClass"
            c:type="GCabFileClass"
            glib:is-gtype-struct-for="File">
      <source-position filename="../libgcab/gcab-file.h" line="35"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="Folder"
           c:symbol-prefix="folder"
           c:type="GCabFolder"
           parent="GObject.Object"
           glib:type-name="GCabFolder"
           glib:get-type="gcab_folder_get_type"
           glib:type-struct="FolderClass">
      <doc xml:space="preserve"
           filename="../libgcab/gcab-folder.h"
           line="30">An opaque object, referencing a folder in a Cabinet.</doc>
      <source-position filename="../libgcab/gcab-folder.h" line="36"/>
      <constructor name="new" c:identifier="gcab_folder_new">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-folder.c"
             line="319">Creates a new empty Cabinet folder. Use gcab_folder_add_file() to
add files to an archive.

A Cabinet folder is not a file path, it is a container for files.</doc>
        <source-position filename="../libgcab/gcab-folder.h" line="58"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-folder.c"
               line="328">a new #GCabFolder</doc>
          <type name="Folder" c:type="GCabFolder*"/>
        </return-value>
        <parameters>
          <parameter name="comptype" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-folder.c"
                 line="321">compression to used in this folder</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_file" c:identifier="gcab_folder_add_file" throws="1">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-folder.c"
             line="262">Add @file to the #GCabFolder.</doc>
        <source-position filename="../libgcab/gcab-folder.h" line="59"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-folder.c"
               line="273">%TRUE on succes</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cabfolder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-folder.c"
                 line="264">a #GCabFolder</doc>
            <type name="Folder" c:type="GCabFolder*"/>
          </instance-parameter>
          <parameter name="cabfile" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-folder.c"
                 line="265">file to be added</doc>
            <type name="File" c:type="GCabFile*"/>
          </parameter>
          <parameter name="recurse" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-folder.c"
                 line="266">whether to recurse through subdirectories</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-folder.c"
                 line="267">optional #GCancellable object,
    %NULL to ignore</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_comptype"
              c:identifier="gcab_folder_get_comptype"
              version="1.0">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-folder.c"
             line="176">Returns the compression used in this folder.</doc>
        <source-position filename="../libgcab/gcab-folder.h" line="68"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-folder.c"
               line="182">a #GCabCompression, e.g. %GCAB_COMPRESSION_MSZIP</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="cabfolder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-folder.c"
                 line="178">a #GCabFolder</doc>
            <type name="Folder" c:type="GCabFolder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_file_by_name"
              c:identifier="gcab_folder_get_file_by_name">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-folder.c"
             line="367">Gets a specific #GCabFile files contained in the @cabfolder.</doc>
        <source-position filename="../libgcab/gcab-folder.h" line="66"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-folder.c"
               line="374">A #GCabFile, or %NULL if not found</doc>
          <type name="File" c:type="GCabFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cabfolder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-folder.c"
                 line="369">a #GCabFolder</doc>
            <type name="Folder" c:type="GCabFolder*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-folder.c"
                 line="370">a file name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_files" c:identifier="gcab_folder_get_files">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-folder.c"
             line="351">Get the list of #GCabFile files contained in the @cabfolder.</doc>
        <source-position filename="../libgcab/gcab-folder.h" line="65"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-folder.c"
               line="357">list of files</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="File"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="cabfolder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-folder.c"
                 line="353">a #GCabFolder</doc>
            <type name="Folder" c:type="GCabFolder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_nfiles" c:identifier="gcab_folder_get_nfiles">
        <doc xml:space="preserve"
             filename="../libgcab/gcab-folder.c"
             line="303">Get the number of files in this @folder.</doc>
        <source-position filename="../libgcab/gcab-folder.h" line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="../libgcab/gcab-folder.c"
               line="309">a #guint</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="cabfolder" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="../libgcab/gcab-folder.c"
                 line="305">a #GCabFolder</doc>
            <type name="Folder" c:type="GCabFolder*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="compression" transfer-ownership="none">
        <type name="Compression"/>
      </property>
      <property name="comptype"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="reserved" writable="1" transfer-ownership="none">
        <array name="GLib.ByteArray">
          <type name="guint8" c:type="guint8"/>
        </array>
      </property>
    </class>
    <record name="FolderClass"
            c:type="GCabFolderClass"
            glib:is-gtype-struct-for="Folder">
      <source-position filename="../libgcab/gcab-folder.h" line="36"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <function name="error_quark" c:identifier="gcab_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
  </namespace>
</repository>
