<?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="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <package name="gmime-2.6"/>
  <c:include name="gmime/gmime.h"/>
  <namespace name="GMime"
             version="2.6"
             shared-library="libgmime-2.6.so.0.1"
             c:identifier-prefixes="GMime"
             c:symbol-prefixes="gmime_,g_mime_">
    <constant name="BINARY_AGE" value="619" c:type="GMIME_BINARY_AGE">
      <doc xml:space="preserve">GMime's binary age.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="Certificate"
           c:symbol-prefix="certificate"
           c:type="GMimeCertificate"
           parent="GObject.Object"
           glib:type-name="GMimeCertificate"
           glib:get-type="g_mime_certificate_get_type"
           glib:type-struct="CertificateClass">
      <doc xml:space="preserve">An object containing useful information about a certificate.</doc>
      <constructor name="new" c:identifier="g_mime_certificate_new">
        <doc xml:space="preserve">Creates a new #GMimeCertificate object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeCertificate object.</doc>
          <type name="Certificate" c:type="GMimeCertificate*"/>
        </return-value>
      </constructor>
      <method name="get_created" c:identifier="g_mime_certificate_get_created">
        <doc xml:space="preserve">Get the creation date of the certificate's key.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the creation date of the certificate's key or %-1 if unknown.</doc>
          <type name="glong" c:type="time_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_digest_algo"
              c:identifier="g_mime_certificate_get_digest_algo">
        <doc xml:space="preserve">Get the digest algorithm used by the certificate.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the digest algorithm used by the certificate or #GMIME_DIGEST_ALGO_DEFAULT if unspecified.</doc>
          <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_email" c:identifier="g_mime_certificate_get_email">
        <doc xml:space="preserve">Get the certificate's email.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the certificate's email or %NULL if unspecified.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_expires" c:identifier="g_mime_certificate_get_expires">
        <doc xml:space="preserve">Get the expiration date of the certificate's key.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the expiration date of the certificate's key or %-1 if unknown.</doc>
          <type name="glong" c:type="time_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_fingerprint"
              c:identifier="g_mime_certificate_get_fingerprint">
        <doc xml:space="preserve">Get the certificate's key fingerprint.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the certificate's key fingerprint or %NULL if unspecified.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_issuer_name"
              c:identifier="g_mime_certificate_get_issuer_name">
        <doc xml:space="preserve">Get the certificate's issuer name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the certificate's issuer name or %NULL if unspecified.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_issuer_serial"
              c:identifier="g_mime_certificate_get_issuer_serial">
        <doc xml:space="preserve">Get the certificate's issuer serial.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the certificate's issuer serial or %NULL if unspecified.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_key_id" c:identifier="g_mime_certificate_get_key_id">
        <doc xml:space="preserve">Get the certificate's key id.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the certificate's key id or %NULL if unspecified.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="g_mime_certificate_get_name">
        <doc xml:space="preserve">Get the certificate's name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the certificate's name or %NULL if unspecified.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pubkey_algo"
              c:identifier="g_mime_certificate_get_pubkey_algo">
        <doc xml:space="preserve">Get the public-key algorithm used by the certificate.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the public-key algorithm used by the certificate or #GMIME_PUBKEY_ALGO_DEFAULT if unspecified.</doc>
          <type name="PubKeyAlgo" c:type="GMimePubKeyAlgo"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_trust" c:identifier="g_mime_certificate_get_trust">
        <doc xml:space="preserve">Get the certificate trust.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the certificate trust.</doc>
          <type name="CertificateTrust" c:type="GMimeCertificateTrust"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_created" c:identifier="g_mime_certificate_set_created">
        <doc xml:space="preserve">Set the creation date of the certificate's key.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
          <parameter name="created" transfer-ownership="none">
            <doc xml:space="preserve">creation date</doc>
            <type name="glong" c:type="time_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_digest_algo"
              c:identifier="g_mime_certificate_set_digest_algo">
        <doc xml:space="preserve">Set the digest algorithm used by the certificate.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
          <parameter name="algo" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDigestAlgo</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_email" c:identifier="g_mime_certificate_set_email">
        <doc xml:space="preserve">Set the certificate's email.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
          <parameter name="email" transfer-ownership="none">
            <doc xml:space="preserve">certificate's email</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_expires" c:identifier="g_mime_certificate_set_expires">
        <doc xml:space="preserve">Set the expiration date of the certificate's key.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
          <parameter name="expires" transfer-ownership="none">
            <doc xml:space="preserve">expiration date</doc>
            <type name="glong" c:type="time_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_fingerprint"
              c:identifier="g_mime_certificate_set_fingerprint">
        <doc xml:space="preserve">Set the certificate's key fingerprint.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
          <parameter name="fingerprint" transfer-ownership="none">
            <doc xml:space="preserve">fingerprint string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_issuer_name"
              c:identifier="g_mime_certificate_set_issuer_name">
        <doc xml:space="preserve">Set the certificate's issuer name.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
          <parameter name="issuer_name" transfer-ownership="none">
            <doc xml:space="preserve">certificate's issuer name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_issuer_serial"
              c:identifier="g_mime_certificate_set_issuer_serial">
        <doc xml:space="preserve">Set the certificate's issuer serial.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
          <parameter name="issuer_serial" transfer-ownership="none">
            <doc xml:space="preserve">certificate's issuer serial</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_key_id" c:identifier="g_mime_certificate_set_key_id">
        <doc xml:space="preserve">Set the certificate's key id.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
          <parameter name="key_id" transfer-ownership="none">
            <doc xml:space="preserve">key id</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name" c:identifier="g_mime_certificate_set_name">
        <doc xml:space="preserve">Set the certificate's name.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">certificate's name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_pubkey_algo"
              c:identifier="g_mime_certificate_set_pubkey_algo">
        <doc xml:space="preserve">Set the public-key algorithm used by the certificate.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
          <parameter name="algo" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePubKeyAlgo</doc>
            <type name="PubKeyAlgo" c:type="GMimePubKeyAlgo"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_trust" c:identifier="g_mime_certificate_set_trust">
        <doc xml:space="preserve">Set the certificate trust.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </instance-parameter>
          <parameter name="trust" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificateTrust value</doc>
            <type name="CertificateTrust" c:type="GMimeCertificateTrust"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pubkey_algo">
        <type name="PubKeyAlgo" c:type="GMimePubKeyAlgo"/>
      </field>
      <field name="digest_algo">
        <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
      </field>
      <field name="trust">
        <type name="CertificateTrust" c:type="GMimeCertificateTrust"/>
      </field>
      <field name="issuer_serial">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="issuer_name">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="fingerprint">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="created">
        <type name="glong" c:type="time_t"/>
      </field>
      <field name="expires">
        <type name="glong" c:type="time_t"/>
      </field>
      <field name="keyid">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="email">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="name">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="CertificateClass"
            c:type="GMimeCertificateClass"
            glib:is-gtype-struct-for="Certificate">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="CertificateList"
           c:symbol-prefix="certificate_list"
           c:type="GMimeCertificateList"
           parent="GObject.Object"
           glib:type-name="GMimeCertificateList"
           glib:get-type="g_mime_certificate_list_get_type"
           glib:type-struct="CertificateListClass">
      <doc xml:space="preserve">A collection of #GMimeCertificate objects.</doc>
      <constructor name="new" c:identifier="g_mime_certificate_list_new">
        <doc xml:space="preserve">Creates a new #GMimeCertificateList.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeCertificateList.</doc>
          <type name="CertificateList" c:type="GMimeCertificateList*"/>
        </return-value>
      </constructor>
      <method name="add" c:identifier="g_mime_certificate_list_add">
        <doc xml:space="preserve">Adds a #GMimeCertificate to the #GMimeCertificateList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the index of the added #GMimeCertificate.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificateList</doc>
            <type name="CertificateList" c:type="GMimeCertificateList*"/>
          </instance-parameter>
          <parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear" c:identifier="g_mime_certificate_list_clear">
        <doc xml:space="preserve">Clears the list of addresses.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificateList</doc>
            <type name="CertificateList" c:type="GMimeCertificateList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="contains" c:identifier="g_mime_certificate_list_contains">
        <doc xml:space="preserve">Checks whether or not the specified #GMimeCertificate is contained within
the #GMimeCertificateList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the specified #GMimeCertificate is contained within the specified #GMimeCertificateList or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificateList</doc>
            <type name="CertificateList" c:type="GMimeCertificateList*"/>
          </instance-parameter>
          <parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_certificate"
              c:identifier="g_mime_certificate_list_get_certificate">
        <doc xml:space="preserve">Gets the #GMimeCertificate at the specified index.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the #GMimeCertificate at the specified index or %NULL if the index is out of range.</doc>
          <type name="Certificate" c:type="GMimeCertificate*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificateList</doc>
            <type name="CertificateList" c:type="GMimeCertificateList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index of #GMimeCertificate to get</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="index_of" c:identifier="g_mime_certificate_list_index_of">
        <doc xml:space="preserve">Gets the index of the specified #GMimeCertificate inside the
#GMimeCertificateList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the index of the requested #GMimeCertificate within the #GMimeCertificateList or %-1 if it is not contained within the #GMimeCertificateList.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificateList</doc>
            <type name="CertificateList" c:type="GMimeCertificateList*"/>
          </instance-parameter>
          <parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert" c:identifier="g_mime_certificate_list_insert">
        <doc xml:space="preserve">Inserts a #GMimeCertificate into the #GMimeCertificateList at the specified
index.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificateList</doc>
            <type name="CertificateList" c:type="GMimeCertificateList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index to insert at</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="length" c:identifier="g_mime_certificate_list_length">
        <doc xml:space="preserve">Gets the length of the list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of #GMimeCertificate objects in the list.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificateList</doc>
            <type name="CertificateList" c:type="GMimeCertificateList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="g_mime_certificate_list_remove">
        <doc xml:space="preserve">Removes a #GMimeCertificate from the #GMimeCertificateList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the specified #GMimeCertificate was removed or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificateList</doc>
            <type name="CertificateList" c:type="GMimeCertificateList*"/>
          </instance-parameter>
          <parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_at"
              c:identifier="g_mime_certificate_list_remove_at">
        <doc xml:space="preserve">Removes a #GMimeCertificate from the #GMimeCertificateList at the specified
index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if an #GMimeCertificate was removed or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificateList</doc>
            <type name="CertificateList" c:type="GMimeCertificateList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index to remove</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_certificate"
              c:identifier="g_mime_certificate_list_set_certificate">
        <doc xml:space="preserve">Sets the #GMimeCertificate at the specified index to @cert.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificateList</doc>
            <type name="CertificateList" c:type="GMimeCertificateList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index of #GMimeCertificate to set</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="array">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="CertificateListClass"
            c:type="GMimeCertificateListClass"
            glib:is-gtype-struct-for="CertificateList">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="CertificateTrust" c:type="GMimeCertificateTrust">
      <doc xml:space="preserve">The trust value of a certificate.</doc>
      <member name="none"
              value="0"
              c:identifier="GMIME_CERTIFICATE_TRUST_NONE">
        <doc xml:space="preserve">No trust assigned.</doc>
      </member>
      <member name="never"
              value="1"
              c:identifier="GMIME_CERTIFICATE_TRUST_NEVER">
        <doc xml:space="preserve">Never trust this certificate.</doc>
      </member>
      <member name="undefined"
              value="2"
              c:identifier="GMIME_CERTIFICATE_TRUST_UNDEFINED">
        <doc xml:space="preserve">Undefined trust for this certificate.</doc>
      </member>
      <member name="marginal"
              value="3"
              c:identifier="GMIME_CERTIFICATE_TRUST_MARGINAL">
        <doc xml:space="preserve">Trust this certificate maginally.</doc>
      </member>
      <member name="fully"
              value="4"
              c:identifier="GMIME_CERTIFICATE_TRUST_FULLY">
        <doc xml:space="preserve">Trust this certificate fully.</doc>
      </member>
      <member name="ultimate"
              value="5"
              c:identifier="GMIME_CERTIFICATE_TRUST_ULTIMATE">
        <doc xml:space="preserve">Trust this certificate ultimately.</doc>
      </member>
    </enumeration>
    <record name="Charset" c:type="GMimeCharset">
      <doc xml:space="preserve">State used by g_mime_charset_best() and g_mime_charset_best_name().</doc>
      <field name="mask" writable="1">
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="level" writable="1">
        <type name="guint" c:type="unsigned"/>
      </field>
      <method name="best_name" c:identifier="g_mime_charset_best_name">
        <doc xml:space="preserve">Gets the best charset name based on the charset mask @charset.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a pointer to a string containing the best charset name that can represent the charset mask @charset.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">charset mask</doc>
            <type name="Charset" c:type="GMimeCharset*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="can_encode" c:identifier="g_mime_charset_can_encode">
        <doc xml:space="preserve">Check to see if the UTF-8 @text will fit safely within @charset.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if it is safe to encode @text into @charset or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="mask" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCharset mask</doc>
            <type name="Charset" c:type="GMimeCharset*"/>
          </instance-parameter>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve">utf-8 text to check</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve">length of @text</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="init" c:identifier="g_mime_charset_init">
        <doc xml:space="preserve">Initializes a charset mask structure.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">charset mask</doc>
            <type name="Charset" c:type="GMimeCharset*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="step" c:identifier="g_mime_charset_step">
        <doc xml:space="preserve">Steps through the input buffer 1 unicode character (glyph) at a
time (ie, not necessarily 1 byte at a time). Bitwise 'and' our
@charset-&gt;mask with the mask for each glyph. This has the effect of
limiting what charsets our @charset-&gt;mask can match.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">charset structure</doc>
            <type name="Charset" c:type="GMimeCharset*"/>
          </instance-parameter>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input text buffer (must be in UTF-8)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <function name="best" c:identifier="g_mime_charset_best">
        <doc xml:space="preserve">Computes the best charset to use to encode this text buffer.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the charset name best suited for the input text or %NULL if it is US-ASCII safe.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">a UTF-8 text buffer</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </function>
      <function name="canon_name" c:identifier="g_mime_charset_canon_name">
        <doc xml:space="preserve">Attempts to find a canonical charset name for @charset.

Note: Will normally return the same value as
g_mime_charset_iconv_name() unless the system iconv does not use
the canonical ISO charset names (such as using ISO8859-1 rather
than the canonical form ISO-8859-1).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a canonical charset name for @charset.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">charset name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <function name="iconv_name" c:identifier="g_mime_charset_iconv_name">
        <doc xml:space="preserve">Attempts to find an iconv-friendly charset name for @charset.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an iconv-friendly charset name for @charset.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">charset name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <function name="iso_to_windows"
                c:identifier="g_mime_charset_iso_to_windows">
        <doc xml:space="preserve">Maps the ISO-8859-# charset to the equivalent Windows-CP125#
charset.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">equivalent Windows charset.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="isocharset" transfer-ownership="none">
            <doc xml:space="preserve">ISO-8859-# charset</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <function name="language" c:identifier="g_mime_charset_language">
        <doc xml:space="preserve">Attempts to find a specific language code that is specific to
@charset. Currently only handles CJK and Russian/Ukranian
charset-&gt;lang mapping. Everything else will return %NULL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a language code that is specific to @charset, or %NULL on fail.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">charset name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <function name="locale_name" c:identifier="g_mime_charset_locale_name">
        <doc xml:space="preserve">Gets the user's locale charset (or iso-8859-1 by default).

Note: This function is deprecated. Use g_mime_locale_charset()
instead.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the user's locale charset (or iso-8859-1 by default).</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
      </function>
      <function name="map_init" c:identifier="g_mime_charset_map_init">
        <doc xml:space="preserve">Initializes character set maps.

Note: g_mime_init() calls this routine for you.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <function name="map_shutdown" c:identifier="g_mime_charset_map_shutdown">
        <doc xml:space="preserve">Frees internal lookup tables created in g_mime_charset_map_init().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <function name="name" c:identifier="g_mime_charset_name">
        <doc xml:space="preserve">Attempts to find an iconv-friendly charset name for @charset.

Note: This function is deprecated. Use g_mime_charset_iconv_name()
instead.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an iconv-friendly charset name for @charset.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">charset name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="CipherAlgo" c:type="GMimeCipherAlgo">
      <doc xml:space="preserve">A cipher algorithm.</doc>
      <member name="default"
              value="0"
              c:identifier="GMIME_CIPHER_ALGO_DEFAULT">
        <doc xml:space="preserve">The default (or unknown) cipher.</doc>
      </member>
      <member name="idea" value="1" c:identifier="GMIME_CIPHER_ALGO_IDEA">
        <doc xml:space="preserve">The IDEA cipher.</doc>
      </member>
      <member name="3des" value="2" c:identifier="GMIME_CIPHER_ALGO_3DES">
        <doc xml:space="preserve">The 3DES cipher.</doc>
      </member>
      <member name="cast5" value="3" c:identifier="GMIME_CIPHER_ALGO_CAST5">
        <doc xml:space="preserve">The CAST5 cipher.</doc>
      </member>
      <member name="blowfish"
              value="4"
              c:identifier="GMIME_CIPHER_ALGO_BLOWFISH">
        <doc xml:space="preserve">The Blowfish cipher.</doc>
      </member>
      <member name="aes" value="7" c:identifier="GMIME_CIPHER_ALGO_AES">
        <doc xml:space="preserve">The AES (aka RIJANDALE) cipher.</doc>
      </member>
      <member name="aes192" value="8" c:identifier="GMIME_CIPHER_ALGO_AES192">
        <doc xml:space="preserve">The AES-192 cipher.</doc>
      </member>
      <member name="aes256" value="9" c:identifier="GMIME_CIPHER_ALGO_AES256">
        <doc xml:space="preserve">The AES-256 cipher.</doc>
      </member>
      <member name="twofish"
              value="10"
              c:identifier="GMIME_CIPHER_ALGO_TWOFISH">
        <doc xml:space="preserve">The Twofish cipher.</doc>
      </member>
      <member name="camellia128"
              value="11"
              c:identifier="GMIME_CIPHER_ALGO_CAMELLIA128">
        <doc xml:space="preserve">The Camellia-128 cipher.</doc>
      </member>
      <member name="camellia192"
              value="12"
              c:identifier="GMIME_CIPHER_ALGO_CAMELLIA192">
        <doc xml:space="preserve">The Camellia-192 cipher.</doc>
      </member>
      <member name="camellia256"
              value="13"
              c:identifier="GMIME_CIPHER_ALGO_CAMELLIA256">
        <doc xml:space="preserve">The Camellia-256 cipher.</doc>
      </member>
    </enumeration>
    <class name="ContentDisposition"
           c:symbol-prefix="content_disposition"
           c:type="GMimeContentDisposition"
           parent="GObject.Object"
           glib:type-name="GMimeContentDisposition"
           glib:get-type="g_mime_content_disposition_get_type"
           glib:type-struct="ContentDispositionClass">
      <doc xml:space="preserve">A data structure representing a Content-Disposition.</doc>
      <constructor name="new" c:identifier="g_mime_content_disposition_new">
        <doc xml:space="preserve">Creates a new #GMimeContentDisposition object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeContentDisposition object.</doc>
          <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_string"
                   c:identifier="g_mime_content_disposition_new_from_string">
        <doc xml:space="preserve">Creates a new #GMimeContentDisposition object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeContentDisposition object.</doc>
          <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">Content-Disposition field value or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_disposition"
              c:identifier="g_mime_content_disposition_get_disposition">
        <doc xml:space="preserve">Gets the disposition or %NULL on fail.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the disposition string which is probably one of #GMIME_DISPOSITION_ATTACHMENT or #GMIME_DISPOSITION_INLINE.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="disposition" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentDisposition object</doc>
            <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parameter"
              c:identifier="g_mime_content_disposition_get_parameter">
        <doc xml:space="preserve">Gets the parameter value specified by @name if it's available.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the value of the requested parameter or %NULL if the parameter is not set. If the parameter is set, the returned string will be in UTF-8.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="disposition" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentDisposition object</doc>
            <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
          </instance-parameter>
          <parameter name="attribute" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_params"
              c:identifier="g_mime_content_disposition_get_params">
        <doc xml:space="preserve">Gets the Content-Disposition parameter list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the list of #GMimeParam's set on @disposition.</doc>
          <type name="Param" c:type="const GMimeParam*"/>
        </return-value>
        <parameters>
          <instance-parameter name="disposition" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentDisposition object</doc>
            <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_disposition"
              c:identifier="g_mime_content_disposition_set_disposition">
        <doc xml:space="preserve">Sets the disposition to @value which may be one of
#GMIME_DISPOSITION_ATTACHMENT or #GMIME_DISPOSITION_INLINE or, by
your choice, any other string which would indicate how the MIME
part should be displayed by the MUA.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="disposition" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentDisposition object</doc>
            <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">disposition value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_parameter"
              c:identifier="g_mime_content_disposition_set_parameter">
        <doc xml:space="preserve">Sets a parameter on the Content-Disposition.

Note: The @name should be in US-ASCII while the @value should be in
UTF-8.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="disposition" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentDisposition object</doc>
            <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
          </instance-parameter>
          <parameter name="attribute" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">parameter value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_params"
              c:identifier="g_mime_content_disposition_set_params">
        <doc xml:space="preserve">Sets the Content-Disposition's parameter list.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="disposition" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentDisposition object</doc>
            <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
          </instance-parameter>
          <parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">a list of #GMimeParam objects</doc>
            <type name="Param" c:type="GMimeParam*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string"
              c:identifier="g_mime_content_disposition_to_string">
        <doc xml:space="preserve">Allocates a string buffer containing the Content-Disposition header
represented by the disposition object @disposition.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a string containing the disposition header</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="disposition" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentDisposition object</doc>
            <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
          </instance-parameter>
          <parameter name="fold" transfer-ownership="none">
            <doc xml:space="preserve">fold header if needed</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="param_hash">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="params">
        <type name="Param" c:type="GMimeParam*"/>
      </field>
      <field name="priv">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="disposition">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="ContentDispositionClass"
            c:type="GMimeContentDispositionClass"
            glib:is-gtype-struct-for="ContentDisposition">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="ContentEncoding" c:type="GMimeContentEncoding">
      <doc xml:space="preserve">A Content-Transfer-Encoding enumeration.</doc>
      <member name="default"
              value="0"
              c:identifier="GMIME_CONTENT_ENCODING_DEFAULT">
        <doc xml:space="preserve">Default transfer encoding.</doc>
      </member>
      <member name="7bit" value="1" c:identifier="GMIME_CONTENT_ENCODING_7BIT">
        <doc xml:space="preserve">7bit text transfer encoding.</doc>
      </member>
      <member name="8bit" value="2" c:identifier="GMIME_CONTENT_ENCODING_8BIT">
        <doc xml:space="preserve">8bit text transfer encoding.</doc>
      </member>
      <member name="binary"
              value="3"
              c:identifier="GMIME_CONTENT_ENCODING_BINARY">
        <doc xml:space="preserve">Binary transfer encoding.</doc>
      </member>
      <member name="base64"
              value="4"
              c:identifier="GMIME_CONTENT_ENCODING_BASE64">
        <doc xml:space="preserve">Base64 transfer encoding.</doc>
      </member>
      <member name="quotedprintable"
              value="5"
              c:identifier="GMIME_CONTENT_ENCODING_QUOTEDPRINTABLE">
        <doc xml:space="preserve">Quoted-printable transfer encoding.</doc>
      </member>
      <member name="uuencode"
              value="6"
              c:identifier="GMIME_CONTENT_ENCODING_UUENCODE">
        <doc xml:space="preserve">Uuencode transfer encoding.</doc>
      </member>
    </enumeration>
    <class name="ContentType"
           c:symbol-prefix="content_type"
           c:type="GMimeContentType"
           parent="GObject.Object"
           glib:type-name="GMimeContentType"
           glib:get-type="g_mime_content_type_get_type"
           glib:type-struct="ContentTypeClass">
      <doc xml:space="preserve">A data structure representing a Content-Type.</doc>
      <constructor name="new" c:identifier="g_mime_content_type_new">
        <doc xml:space="preserve">Creates a Content-Type object with type @type and subtype @subtype.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeContentType object.</doc>
          <type name="ContentType" c:type="GMimeContentType*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">MIME type (or %NULL for "text")</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="subtype" transfer-ownership="none">
            <doc xml:space="preserve">MIME subtype (or %NULL for "plain")</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_from_string"
                   c:identifier="g_mime_content_type_new_from_string">
        <doc xml:space="preserve">Constructs a new Content-Type object based on the input string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeContentType object based on the input string.</doc>
          <type name="ContentType" c:type="GMimeContentType*"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">input string containing a content-type (and params)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_media_subtype"
              c:identifier="g_mime_content_type_get_media_subtype">
        <doc xml:space="preserve">Gets the Content-Type's media sub-type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the Content-Type's media sub-type.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_media_type"
              c:identifier="g_mime_content_type_get_media_type">
        <doc xml:space="preserve">Gets the Content-Type's media type.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the Content-Type's media type.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parameter"
              c:identifier="g_mime_content_type_get_parameter">
        <doc xml:space="preserve">Gets the parameter value specified by @name if it's available.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the value of the requested parameter or %NULL if the parameter is not set. If the parameter is set, the returned string will be in UTF-8.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
          <parameter name="attribute" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_params" c:identifier="g_mime_content_type_get_params">
        <doc xml:space="preserve">Gets the Content-Type's parameter list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the Content-Type's parameter list.</doc>
          <type name="Param" c:type="const GMimeParam*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_type" c:identifier="g_mime_content_type_is_type">
        <doc xml:space="preserve">Compares the given type and subtype with that of the given mime
type object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the MIME types match or FALSE otherwise. You may use "*" in place of @type and/or @subtype as a wilcard.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">MIME type to compare against</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="subtype" transfer-ownership="none">
            <doc xml:space="preserve">MIME subtype to compare against</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_media_subtype"
              c:identifier="g_mime_content_type_set_media_subtype">
        <doc xml:space="preserve">Sets the Content-Type's media subtype.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
          <parameter name="subtype" transfer-ownership="none">
            <doc xml:space="preserve">media subtype</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_media_type"
              c:identifier="g_mime_content_type_set_media_type">
        <doc xml:space="preserve">Sets the Content-Type's media type.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">media type</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_parameter"
              c:identifier="g_mime_content_type_set_parameter">
        <doc xml:space="preserve">Sets a parameter on the Content-Type.

Note: The @name should be in US-ASCII while the @value should be in
UTF-8.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_type" transfer-ownership="none">
            <doc xml:space="preserve">MIME Content-Type</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
          <parameter name="attribute" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">parameter value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_params" c:identifier="g_mime_content_type_set_params">
        <doc xml:space="preserve">Sets the Content-Type's parameter list.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
          <parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">a list of #GMimeParam objects</doc>
            <type name="Param" c:type="GMimeParam*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string" c:identifier="g_mime_content_type_to_string">
        <doc xml:space="preserve">Allocates a string buffer containing the type and subtype defined
by the @mime_type.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an allocated string containing the type and subtype of the content-type in the format: type/subtype.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="param_hash">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="params">
        <type name="Param" c:type="GMimeParam*"/>
      </field>
      <field name="priv">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="type">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="subtype">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="ContentTypeClass"
            c:type="GMimeContentTypeClass"
            glib:is-gtype-struct-for="ContentType">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="CryptoContext"
           c:symbol-prefix="crypto_context"
           c:type="GMimeCryptoContext"
           parent="GObject.Object"
           glib:type-name="GMimeCryptoContext"
           glib:get-type="g_mime_crypto_context_get_type"
           glib:type-struct="CryptoContextClass">
      <doc xml:space="preserve">A crypto context for use with MIME.</doc>
      <virtual-method name="decrypt" invoker="decrypt" throws="1">
        <doc xml:space="preserve">Decrypts the ciphertext input stream and writes the resulting
cleartext to the output stream.

If the encrypted input stream was also signed, the returned
#GMimeDecryptResult will have a non-%NULL list of signatures, each with a
#GMimeSignatureStatus (among other details about each signature).

On success, the returned #GMimeDecryptResult will contain a list of
certificates, one for each recipient, that the original encrypted stream
was encrypted to.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #GMimeDecryptResult on success or %NULL on error.</doc>
          <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="istream" transfer-ownership="none">
            <doc xml:space="preserve">input/ciphertext stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="ostream" transfer-ownership="none">
            <doc xml:space="preserve">output/cleartext stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="digest_id" invoker="digest_id">
        <doc xml:space="preserve">Gets the digest id based on the digest name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the equivalent digest id or #GMIME_DIGEST_ALGO_DEFAULT on fail.</doc>
          <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">digest name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="digest_name" invoker="digest_name">
        <doc xml:space="preserve">Gets the digest name based on the digest id @digest.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the equivalent digest name or %NULL on fail.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">digest id</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="encrypt" invoker="encrypt" throws="1">
        <doc xml:space="preserve">Encrypts (and optionally signs) the cleartext input stream and
writes the resulting ciphertext to the output stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="sign" transfer-ownership="none">
            <doc xml:space="preserve">sign as well as encrypt</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="userid" transfer-ownership="none">
            <doc xml:space="preserve">key id (or email address) to use when signing (assuming @sign is %TRUE)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">digest algorithm to use when signing</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
          <parameter name="recipients" transfer-ownership="none">
            <doc xml:space="preserve">an array of recipient key ids and/or email addresses</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="istream" transfer-ownership="none">
            <doc xml:space="preserve">cleartext input stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="ostream" transfer-ownership="none">
            <doc xml:space="preserve">ciphertext output stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="export_keys" invoker="export_keys" throws="1">
        <doc xml:space="preserve">Exports the keys/certificates in @keys to the stream @ostream from
the key/certificate database controlled by @ctx.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="keys" transfer-ownership="none">
            <doc xml:space="preserve">an array of key ids</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="ostream" transfer-ownership="none">
            <doc xml:space="preserve">output stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_encryption_protocol"
                      invoker="get_encryption_protocol">
        <doc xml:space="preserve">Gets the encryption protocol for the crypto context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the encryption protocol or %NULL if not supported.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_key_exchange_protocol"
                      invoker="get_key_exchange_protocol">
        <doc xml:space="preserve">Gets the key exchange protocol for the crypto context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the key exchange protocol or %NULL if not supported.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_signature_protocol"
                      invoker="get_signature_protocol">
        <doc xml:space="preserve">Gets the signature protocol for the crypto context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the signature protocol or %NULL if not supported.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="import_keys" invoker="import_keys" throws="1">
        <doc xml:space="preserve">Imports a stream of keys/certificates contained within @istream
into the key/certificate database controlled by @ctx.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="istream" transfer-ownership="none">
            <doc xml:space="preserve">input stream (containing keys)</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="sign" invoker="sign" throws="1">
        <doc xml:space="preserve">Signs the input stream and writes the resulting signature to the output stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GMimeDigestAlgo used on success (useful if @digest is specified as #GMIME_DIGEST_ALGO_DEFAULT) or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="userid" transfer-ownership="none">
            <doc xml:space="preserve">private key to use to sign the stream</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">digest algorithm to use</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
          <parameter name="istream" transfer-ownership="none">
            <doc xml:space="preserve">input stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="ostream" transfer-ownership="none">
            <doc xml:space="preserve">output stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="verify" invoker="verify" throws="1">
        <doc xml:space="preserve">Verifies the signature. If @istream is a clearsigned stream,
you should pass %NULL as the sigstream parameter. Otherwise
@sigstream is assumed to be the signature stream and is used to
verify the integirity of the @istream.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #GMimeSignatureList object containing the status of each signature or %NULL on error.</doc>
          <type name="SignatureList" c:type="GMimeSignatureList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">digest algorithm used, if known</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
          <parameter name="istream" transfer-ownership="none">
            <doc xml:space="preserve">input stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="sigstream" transfer-ownership="none">
            <doc xml:space="preserve">optional detached-signature stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="decrypt"
              c:identifier="g_mime_crypto_context_decrypt"
              throws="1">
        <doc xml:space="preserve">Decrypts the ciphertext input stream and writes the resulting
cleartext to the output stream.

If the encrypted input stream was also signed, the returned
#GMimeDecryptResult will have a non-%NULL list of signatures, each with a
#GMimeSignatureStatus (among other details about each signature).

On success, the returned #GMimeDecryptResult will contain a list of
certificates, one for each recipient, that the original encrypted stream
was encrypted to.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #GMimeDecryptResult on success or %NULL on error.</doc>
          <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="istream" transfer-ownership="none">
            <doc xml:space="preserve">input/ciphertext stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="ostream" transfer-ownership="none">
            <doc xml:space="preserve">output/cleartext stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="digest_id" c:identifier="g_mime_crypto_context_digest_id">
        <doc xml:space="preserve">Gets the digest id based on the digest name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the equivalent digest id or #GMIME_DIGEST_ALGO_DEFAULT on fail.</doc>
          <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">digest name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="digest_name"
              c:identifier="g_mime_crypto_context_digest_name">
        <doc xml:space="preserve">Gets the digest name based on the digest id @digest.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the equivalent digest name or %NULL on fail.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">digest id</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
        </parameters>
      </method>
      <method name="encrypt"
              c:identifier="g_mime_crypto_context_encrypt"
              throws="1">
        <doc xml:space="preserve">Encrypts (and optionally signs) the cleartext input stream and
writes the resulting ciphertext to the output stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="sign" transfer-ownership="none">
            <doc xml:space="preserve">sign as well as encrypt</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="userid" transfer-ownership="none">
            <doc xml:space="preserve">key id (or email address) to use when signing (assuming @sign is %TRUE)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">digest algorithm to use when signing</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
          <parameter name="recipients" transfer-ownership="none">
            <doc xml:space="preserve">an array of recipient key ids and/or email addresses</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="istream" transfer-ownership="none">
            <doc xml:space="preserve">cleartext input stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="ostream" transfer-ownership="none">
            <doc xml:space="preserve">ciphertext output stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="export_keys"
              c:identifier="g_mime_crypto_context_export_keys"
              throws="1">
        <doc xml:space="preserve">Exports the keys/certificates in @keys to the stream @ostream from
the key/certificate database controlled by @ctx.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="keys" transfer-ownership="none">
            <doc xml:space="preserve">an array of key ids</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="ostream" transfer-ownership="none">
            <doc xml:space="preserve">output stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_encryption_protocol"
              c:identifier="g_mime_crypto_context_get_encryption_protocol">
        <doc xml:space="preserve">Gets the encryption protocol for the crypto context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the encryption protocol or %NULL if not supported.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_key_exchange_protocol"
              c:identifier="g_mime_crypto_context_get_key_exchange_protocol">
        <doc xml:space="preserve">Gets the key exchange protocol for the crypto context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the key exchange protocol or %NULL if not supported.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_signature_protocol"
              c:identifier="g_mime_crypto_context_get_signature_protocol">
        <doc xml:space="preserve">Gets the signature protocol for the crypto context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the signature protocol or %NULL if not supported.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="import_keys"
              c:identifier="g_mime_crypto_context_import_keys"
              throws="1">
        <doc xml:space="preserve">Imports a stream of keys/certificates contained within @istream
into the key/certificate database controlled by @ctx.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="istream" transfer-ownership="none">
            <doc xml:space="preserve">input stream (containing keys)</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_request_password"
              c:identifier="g_mime_crypto_context_set_request_password"
              introspectable="0">
        <doc xml:space="preserve">Sets the function used by the @ctx for requesting a password from
the user.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="request_passwd" transfer-ownership="none">
            <doc xml:space="preserve">a callback function for requesting a password</doc>
            <type name="PasswordRequestFunc"
                  c:type="GMimePasswordRequestFunc"/>
          </parameter>
        </parameters>
      </method>
      <method name="sign" c:identifier="g_mime_crypto_context_sign" throws="1">
        <doc xml:space="preserve">Signs the input stream and writes the resulting signature to the output stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GMimeDigestAlgo used on success (useful if @digest is specified as #GMIME_DIGEST_ALGO_DEFAULT) or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="userid" transfer-ownership="none">
            <doc xml:space="preserve">private key to use to sign the stream</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">digest algorithm to use</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
          <parameter name="istream" transfer-ownership="none">
            <doc xml:space="preserve">input stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="ostream" transfer-ownership="none">
            <doc xml:space="preserve">output stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify"
              c:identifier="g_mime_crypto_context_verify"
              throws="1">
        <doc xml:space="preserve">Verifies the signature. If @istream is a clearsigned stream,
you should pass %NULL as the sigstream parameter. Otherwise
@sigstream is assumed to be the signature stream and is used to
verify the integirity of the @istream.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #GMimeSignatureList object containing the status of each signature or %NULL on error.</doc>
          <type name="SignatureList" c:type="GMimeSignatureList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </instance-parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">digest algorithm used, if known</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
          <parameter name="istream" transfer-ownership="none">
            <doc xml:space="preserve">input stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="sigstream" transfer-ownership="none">
            <doc xml:space="preserve">optional detached-signature stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="request_passwd">
        <type name="PasswordRequestFunc" c:type="GMimePasswordRequestFunc"/>
      </field>
    </class>
    <record name="CryptoContextClass"
            c:type="GMimeCryptoContextClass"
            glib:is-gtype-struct-for="CryptoContext">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="digest_id">
        <callback name="digest_id">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the equivalent digest id or #GMIME_DIGEST_ALGO_DEFAULT on fail.</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="name" transfer-ownership="none">
              <doc xml:space="preserve">digest name</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="digest_name">
        <callback name="digest_name">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the equivalent digest name or %NULL on fail.</doc>
            <type name="utf8" c:type="const char*"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="digest" transfer-ownership="none">
              <doc xml:space="preserve">digest id</doc>
              <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_signature_protocol">
        <callback name="get_signature_protocol">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the signature protocol or %NULL if not supported.</doc>
            <type name="utf8" c:type="const char*"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_encryption_protocol">
        <callback name="get_encryption_protocol">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the encryption protocol or %NULL if not supported.</doc>
            <type name="utf8" c:type="const char*"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_key_exchange_protocol">
        <callback name="get_key_exchange_protocol">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the key exchange protocol or %NULL if not supported.</doc>
            <type name="utf8" c:type="const char*"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="sign">
        <callback name="sign" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the #GMimeDigestAlgo used on success (useful if @digest is specified as #GMIME_DIGEST_ALGO_DEFAULT) or %-1 on fail.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="userid" transfer-ownership="none">
              <doc xml:space="preserve">private key to use to sign the stream</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="digest" transfer-ownership="none">
              <doc xml:space="preserve">digest algorithm to use</doc>
              <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
            </parameter>
            <parameter name="istream" transfer-ownership="none">
              <doc xml:space="preserve">input stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
            <parameter name="ostream" transfer-ownership="none">
              <doc xml:space="preserve">output stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="verify">
        <callback name="verify" throws="1">
          <return-value transfer-ownership="full">
            <doc xml:space="preserve">a #GMimeSignatureList object containing the status of each signature or %NULL on error.</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="digest" transfer-ownership="none">
              <doc xml:space="preserve">digest algorithm used, if known</doc>
              <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
            </parameter>
            <parameter name="istream" transfer-ownership="none">
              <doc xml:space="preserve">input stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
            <parameter name="sigstream" transfer-ownership="none">
              <doc xml:space="preserve">optional detached-signature stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="encrypt">
        <callback name="encrypt" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="sign" transfer-ownership="none">
              <doc xml:space="preserve">sign as well as encrypt</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
            <parameter name="userid" transfer-ownership="none">
              <doc xml:space="preserve">key id (or email address) to use when signing (assuming @sign is %TRUE)</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="digest" transfer-ownership="none">
              <doc xml:space="preserve">digest algorithm to use when signing</doc>
              <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
            </parameter>
            <parameter name="recipients" transfer-ownership="none">
              <doc xml:space="preserve">an array of recipient key ids and/or email addresses</doc>
              <array name="GLib.PtrArray" c:type="GPtrArray*">
                <type name="utf8"/>
              </array>
            </parameter>
            <parameter name="istream" transfer-ownership="none">
              <doc xml:space="preserve">cleartext input stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
            <parameter name="ostream" transfer-ownership="none">
              <doc xml:space="preserve">ciphertext output stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="decrypt">
        <callback name="decrypt" throws="1">
          <return-value transfer-ownership="full">
            <doc xml:space="preserve">a #GMimeDecryptResult on success or %NULL on error.</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="istream" transfer-ownership="none">
              <doc xml:space="preserve">input/ciphertext stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
            <parameter name="ostream" transfer-ownership="none">
              <doc xml:space="preserve">output/cleartext stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="import_keys">
        <callback name="import_keys" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="istream" transfer-ownership="none">
              <doc xml:space="preserve">input stream (containing keys)</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="export_keys">
        <callback name="export_keys" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="keys" transfer-ownership="none">
              <doc xml:space="preserve">an array of key ids</doc>
              <array name="GLib.PtrArray" c:type="GPtrArray*">
                <type name="utf8"/>
              </array>
            </parameter>
            <parameter name="ostream" transfer-ownership="none">
              <doc xml:space="preserve">output stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <constant name="DISPOSITION_ATTACHMENT"
              value="attachment"
              c:type="GMIME_DISPOSITION_ATTACHMENT">
      <doc xml:space="preserve">Standard attachment disposition.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DISPOSITION_INLINE"
              value="inline"
              c:type="GMIME_DISPOSITION_INLINE">
      <doc xml:space="preserve">Standard inline disposition.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="DataWrapper"
           c:symbol-prefix="data_wrapper"
           c:type="GMimeDataWrapper"
           parent="GObject.Object"
           glib:type-name="GMimeDataWrapper"
           glib:get-type="g_mime_data_wrapper_get_type"
           glib:type-struct="DataWrapperClass">
      <doc xml:space="preserve">A wrapper for a stream which may be encoded.</doc>
      <constructor name="new" c:identifier="g_mime_data_wrapper_new">
        <doc xml:space="preserve">Creates a new #GMimeDataWrapper object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new data wrapper object.</doc>
          <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
        </return-value>
      </constructor>
      <constructor name="new_with_stream"
                   c:identifier="g_mime_data_wrapper_new_with_stream">
        <doc xml:space="preserve">Creates a new #GMimeDataWrapper object around @stream.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a data wrapper around @stream. Since the wrapper owns its own reference on the stream, caller is responsible for unrefing its own copy.</doc>
          <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
        </return-value>
        <parameters>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="encoding" transfer-ownership="none">
            <doc xml:space="preserve">stream's encoding</doc>
            <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="write_to_stream" invoker="write_to_stream">
        <doc xml:space="preserve">Writes the raw (decoded) data to the output stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written or %-1 on failure.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="wrapper" transfer-ownership="none">
            <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">output stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_encoding"
              c:identifier="g_mime_data_wrapper_get_encoding">
        <doc xml:space="preserve">Gets the encoding type of the stream wrapped by @wrapper.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the encoding type of the internal stream.</doc>
          <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
        </return-value>
        <parameters>
          <instance-parameter name="wrapper" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDataWrapper</doc>
            <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_stream" c:identifier="g_mime_data_wrapper_get_stream">
        <doc xml:space="preserve">Gets a reference to the stream wrapped by @wrapper.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a reference to the internal stream.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="wrapper" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDataWrapper</doc>
            <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_encoding"
              c:identifier="g_mime_data_wrapper_set_encoding">
        <doc xml:space="preserve">Sets the encoding type of the internal stream.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="wrapper" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDataWrapper</doc>
            <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
          </instance-parameter>
          <parameter name="encoding" transfer-ownership="none">
            <doc xml:space="preserve">encoding</doc>
            <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_stream" c:identifier="g_mime_data_wrapper_set_stream">
        <doc xml:space="preserve">Replaces the wrapper's internal stream with @stream. Don't forget,
if @stream is not of the same encoding as the old stream, you'll
want to call g_mime_data_wrapper_set_encoding() as well.

Note: caller is responsible for its own reference on
@stream.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="wrapper" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDataWrapper</doc>
            <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_to_stream"
              c:identifier="g_mime_data_wrapper_write_to_stream">
        <doc xml:space="preserve">Writes the raw (decoded) data to the output stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written or %-1 on failure.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="wrapper" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDataWrapper</doc>
            <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">output stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="encoding">
        <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
      </field>
      <field name="stream">
        <type name="Stream" c:type="GMimeStream*"/>
      </field>
    </class>
    <record name="DataWrapperClass"
            c:type="GMimeDataWrapperClass"
            glib:is-gtype-struct-for="DataWrapper">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="write_to_stream">
        <callback name="write_to_stream">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the number of bytes written or %-1 on failure.</doc>
            <type name="glong" c:type="ssize_t"/>
          </return-value>
          <parameters>
            <parameter name="wrapper" transfer-ownership="none">
              <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
            </parameter>
            <parameter name="stream" transfer-ownership="none">
              <doc xml:space="preserve">output stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="DecryptResult"
           c:symbol-prefix="decrypt_result"
           c:type="GMimeDecryptResult"
           parent="GObject.Object"
           glib:type-name="GMimeDecryptResult"
           glib:get-type="g_mime_decrypt_result_get_type"
           glib:type-struct="DecryptResultClass">
      <doc xml:space="preserve">An object containing the results from decrypting an encrypted stream.</doc>
      <constructor name="new" c:identifier="g_mime_decrypt_result_new">
        <doc xml:space="preserve">Creates a new #GMimeDecryptResult object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeDecryptResult object.</doc>
          <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
        </return-value>
      </constructor>
      <method name="get_cipher"
              c:identifier="g_mime_decrypt_result_get_cipher">
        <doc xml:space="preserve">Get the cipher algorithm used.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the cipher algorithm used.</doc>
          <type name="CipherAlgo" c:type="GMimeCipherAlgo"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDecryptResult</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mdc" c:identifier="g_mime_decrypt_result_get_mdc">
        <doc xml:space="preserve">Get the mdc digest algorithm used.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the mdc digest algorithm used.</doc>
          <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDecryptResult</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_recipients"
              c:identifier="g_mime_decrypt_result_get_recipients">
        <doc xml:space="preserve">Gets the list of certificates that the stream had been encrypted to.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeCertificateList.</doc>
          <type name="CertificateList" c:type="GMimeCertificateList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeDecryptResult</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_signatures"
              c:identifier="g_mime_decrypt_result_get_signatures">
        <doc xml:space="preserve">Gets a list of signatures if the encrypted stream had also been signed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeSignatureList or %NULL if the stream was not signed.</doc>
          <type name="SignatureList" c:type="GMimeSignatureList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeDecryptResult</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_cipher"
              c:identifier="g_mime_decrypt_result_set_cipher">
        <doc xml:space="preserve">Set the cipher algorithm used.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDecryptResult</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
          </instance-parameter>
          <parameter name="cipher" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCipherAlgo</doc>
            <type name="CipherAlgo" c:type="GMimeCipherAlgo"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_mdc" c:identifier="g_mime_decrypt_result_set_mdc">
        <doc xml:space="preserve">Set the mdc digest algorithm used.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDecryptResult</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
          </instance-parameter>
          <parameter name="mdc" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDigestAlgo</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_recipients"
              c:identifier="g_mime_decrypt_result_set_recipients">
        <doc xml:space="preserve">Sets the list of certificates that the stream had been encrypted to.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeDecryptResult</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
          </instance-parameter>
          <parameter name="recipients" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeCertificateList</doc>
            <type name="CertificateList" c:type="GMimeCertificateList*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_signatures"
              c:identifier="g_mime_decrypt_result_set_signatures">
        <doc xml:space="preserve">Sets the list of signatures.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeDecryptResult</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult*"/>
          </instance-parameter>
          <parameter name="signatures" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeSignatureList</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="recipients">
        <type name="CertificateList" c:type="GMimeCertificateList*"/>
      </field>
      <field name="signatures">
        <type name="SignatureList" c:type="GMimeSignatureList*"/>
      </field>
      <field name="cipher">
        <type name="CipherAlgo" c:type="GMimeCipherAlgo"/>
      </field>
      <field name="mdc">
        <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
      </field>
    </class>
    <record name="DecryptResultClass"
            c:type="GMimeDecryptResultClass"
            glib:is-gtype-struct-for="DecryptResult">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="DigestAlgo" c:type="GMimeDigestAlgo">
      <doc xml:space="preserve">A hash algorithm.</doc>
      <member name="default"
              value="0"
              c:identifier="GMIME_DIGEST_ALGO_DEFAULT">
        <doc xml:space="preserve">The default hash algorithm.</doc>
      </member>
      <member name="md5" value="1" c:identifier="GMIME_DIGEST_ALGO_MD5">
        <doc xml:space="preserve">The MD5 hash algorithm.</doc>
      </member>
      <member name="sha1" value="2" c:identifier="GMIME_DIGEST_ALGO_SHA1">
        <doc xml:space="preserve">The SHA-1 hash algorithm.</doc>
      </member>
      <member name="ripemd160"
              value="3"
              c:identifier="GMIME_DIGEST_ALGO_RIPEMD160">
        <doc xml:space="preserve">The RIPEMD-160 hash algorithm.</doc>
      </member>
      <member name="md2" value="5" c:identifier="GMIME_DIGEST_ALGO_MD2">
        <doc xml:space="preserve">The MD2 hash algorithm.</doc>
      </member>
      <member name="tiger192"
              value="6"
              c:identifier="GMIME_DIGEST_ALGO_TIGER192">
        <doc xml:space="preserve">The TIGER-192 hash algorithm.</doc>
      </member>
      <member name="haval5160"
              value="7"
              c:identifier="GMIME_DIGEST_ALGO_HAVAL5160">
        <doc xml:space="preserve">The HAVAL-5-160 hash algorithm.</doc>
      </member>
      <member name="sha256" value="8" c:identifier="GMIME_DIGEST_ALGO_SHA256">
        <doc xml:space="preserve">The SHA-256 hash algorithm.</doc>
      </member>
      <member name="sha384" value="9" c:identifier="GMIME_DIGEST_ALGO_SHA384">
        <doc xml:space="preserve">The SHA-384 hash algorithm.</doc>
      </member>
      <member name="sha512" value="10" c:identifier="GMIME_DIGEST_ALGO_SHA512">
        <doc xml:space="preserve">The SHA-512 hash algorithm.</doc>
      </member>
      <member name="sha224" value="11" c:identifier="GMIME_DIGEST_ALGO_SHA224">
        <doc xml:space="preserve">The SHA-224 hash algorithm.</doc>
      </member>
      <member name="md4" value="301" c:identifier="GMIME_DIGEST_ALGO_MD4">
        <doc xml:space="preserve">The MD4 hash algorithm.</doc>
      </member>
    </enumeration>
    <constant name="ENABLE_RFC2047_WORKAROUNDS"
              value="1"
              c:type="GMIME_ENABLE_RFC2047_WORKAROUNDS">
      <doc xml:space="preserve">Initialization flag to enable workarounds for badly formed rfc2047
encoded-words.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="ENABLE_USE_ONLY_USER_CHARSETS"
              value="2"
              c:type="GMIME_ENABLE_USE_ONLY_USER_CHARSETS"
              version="2.6.16">
      <doc xml:space="preserve">Initialization flag that hints to the rfc2047 encoder to use only
the configured user-charsets (set via g_mime_set_user_charsets())
instead of trying to first use iso-8859-1.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <record name="Encoding" c:type="GMimeEncoding">
      <doc xml:space="preserve">A context used for encoding or decoding data.</doc>
      <field name="encoding" writable="1">
        <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
      </field>
      <field name="uubuf" writable="1">
        <array zero-terminated="0" c:type="unsigned" fixed-size="60">
          <type name="guint" c:type="unsigned"/>
        </array>
      </field>
      <field name="encode" writable="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="save" writable="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="state" writable="1">
        <type name="gint" c:type="int"/>
      </field>
      <method name="flush" c:identifier="g_mime_encoding_flush">
        <doc xml:space="preserve">Completes the incremental encode or decode of the input stream (see
g_mime_encoding_step() for details).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written to @outbuf.</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncoding</doc>
            <type name="Encoding" c:type="GMimeEncoding*"/>
          </instance-parameter>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">an input buffer to encode or decode</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">an output buffer</doc>
            <type name="utf8" c:type="char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_decode" c:identifier="g_mime_encoding_init_decode">
        <doc xml:space="preserve">Initializes a #GMimeEncoding state machine for decoding from
@encoding.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncoding to initialize</doc>
            <type name="Encoding" c:type="GMimeEncoding*"/>
          </instance-parameter>
          <parameter name="encoding" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentEncoding to use</doc>
            <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
          </parameter>
        </parameters>
      </method>
      <method name="init_encode" c:identifier="g_mime_encoding_init_encode">
        <doc xml:space="preserve">Initializes a #GMimeEncoding state machine for encoding to
@encoding.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncoding to initialize</doc>
            <type name="Encoding" c:type="GMimeEncoding*"/>
          </instance-parameter>
          <parameter name="encoding" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentEncoding to use</doc>
            <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
          </parameter>
        </parameters>
      </method>
      <method name="outlen" c:identifier="g_mime_encoding_outlen">
        <doc xml:space="preserve">Given the input length, @inlen, calculate the needed output length
to perform an encoding or decoding step.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the maximum number of bytes needed to encode or decode a buffer of @inlen bytes.</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncoding</doc>
            <type name="Encoding" c:type="GMimeEncoding*"/>
          </instance-parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">an input length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="g_mime_encoding_reset">
        <doc xml:space="preserve">Resets the state of the #GMimeEncoding.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncoding to reset</doc>
            <type name="Encoding" c:type="GMimeEncoding*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="step" c:identifier="g_mime_encoding_step">
        <doc xml:space="preserve">Incrementally encodes or decodes (depending on @state) an input
stream by 'stepping' through a block of input at a time.

You should make sure @outbuf is large enough by calling
g_mime_encoding_outlen() to find out how large @outbuf might need
to be.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written to @outbuf.</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncoding</doc>
            <type name="Encoding" c:type="GMimeEncoding*"/>
          </instance-parameter>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">an input buffer to encode or decode</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">an output buffer</doc>
            <type name="utf8" c:type="char*"/>
          </parameter>
        </parameters>
      </method>
      <function name="base64_decode_step"
                c:identifier="g_mime_encoding_base64_decode_step">
        <doc xml:space="preserve">Decodes a chunk of base64 encoded data.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes decoded (which have been dumped in @outbuf).</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <type name="guint8" c:type="const unsigned char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">output buffer</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="save" transfer-ownership="none">
            <doc xml:space="preserve">leftover bits that have not yet been decoded</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </function>
      <function name="base64_encode_close"
                c:identifier="g_mime_encoding_base64_encode_close">
        <doc xml:space="preserve">Base64 encodes the input stream to the output stream. Call this
when finished encoding data with g_mime_encoding_base64_encode_step()
to flush off the last little bit.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes encoded.</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <type name="guint8" c:type="const unsigned char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">output buffer</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="save" transfer-ownership="none">
            <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </function>
      <function name="base64_encode_step"
                c:identifier="g_mime_encoding_base64_encode_step">
        <doc xml:space="preserve">Base64 encodes a chunk of data. Performs an 'encode step', only
encodes blocks of 3 characters to the output at a time, saves
left-over state in state and save (initialise to 0 on first
invocation).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes encoded.</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <type name="guint8" c:type="const unsigned char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">output buffer</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="save" transfer-ownership="none">
            <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </function>
      <function name="quoted_decode_step"
                c:identifier="g_mime_encoding_quoted_decode_step">
        <doc xml:space="preserve">Decodes a block of quoted-printable encoded data. Performs a
'decode step' on a chunk of QP encoded data.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes decoded.</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <type name="guint8" c:type="const unsigned char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">output buffer</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="save" transfer-ownership="none">
            <doc xml:space="preserve">leftover bits that have not yet been decoded</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </function>
      <function name="quoted_encode_close"
                c:identifier="g_mime_encoding_quoted_encode_close">
        <doc xml:space="preserve">Quoted-printable encodes a block of text. Call this when finished
encoding data with g_mime_encoding_quoted_encode_step() to flush off
the last little bit.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes encoded.</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <type name="guint8" c:type="const unsigned char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">output buffer</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="save" transfer-ownership="none">
            <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </function>
      <function name="quoted_encode_step"
                c:identifier="g_mime_encoding_quoted_encode_step">
        <doc xml:space="preserve">Quoted-printable encodes a block of text. Performs an 'encode
step', saves left-over state in state and save (initialise to -1 on
first invocation).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes encoded.</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <type name="guint8" c:type="const unsigned char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">output buffer</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="save" transfer-ownership="none">
            <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </function>
      <function name="uudecode_step"
                c:identifier="g_mime_encoding_uudecode_step">
        <doc xml:space="preserve">Uudecodes a chunk of data. Performs a 'decode step' on a chunk of
uuencoded data. Assumes the "begin mode filename" line has
been stripped off.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes decoded.</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <type name="guint8" c:type="const unsigned char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">output buffer</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="save" transfer-ownership="none">
            <doc xml:space="preserve">leftover bits that have not yet been decoded</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </function>
      <function name="uuencode_close"
                c:identifier="g_mime_encoding_uuencode_close">
        <doc xml:space="preserve">Uuencodes a chunk of data. Call this when finished encoding data
with g_mime_encoding_uuencode_step() to flush off the last little bit.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes encoded.</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <type name="guint8" c:type="const unsigned char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">output buffer</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="uubuf" transfer-ownership="none">
            <doc xml:space="preserve">temporary buffer of 60 bytes</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="save" transfer-ownership="none">
            <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </function>
      <function name="uuencode_step"
                c:identifier="g_mime_encoding_uuencode_step">
        <doc xml:space="preserve">Uuencodes a chunk of data. Performs an 'encode step', only encodes
blocks of 45 characters to the output at a time, saves left-over
state in @uubuf, @state and @save (initialize to 0 on first
invocation).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes encoded.</doc>
          <type name="gulong" c:type="size_t"/>
        </return-value>
        <parameters>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <type name="guint8" c:type="const unsigned char*"/>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf" transfer-ownership="none">
            <doc xml:space="preserve">output stream</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="uubuf" transfer-ownership="none">
            <doc xml:space="preserve">temporary buffer of 60 bytes</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
          <parameter name="save" transfer-ownership="none">
            <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
            <type name="guint32" c:type="guint32*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="EncodingConstraint" c:type="GMimeEncodingConstraint">
      <doc xml:space="preserve">Used with functions like g_mime_filter_best_encoding() and
g_mime_object_encode() as the 'constraint' argument. These values
provide a means of letting the filter know what the encoding
constraints are for the stream.</doc>
      <member name="7bit"
              value="0"
              c:identifier="GMIME_ENCODING_CONSTRAINT_7BIT">
        <doc xml:space="preserve">The stream data must fit within the 7bit ASCII range.</doc>
      </member>
      <member name="8bit"
              value="1"
              c:identifier="GMIME_ENCODING_CONSTRAINT_8BIT">
        <doc xml:space="preserve">The stream data may have bytes with the high bit set, but no null bytes.</doc>
      </member>
      <member name="binary"
              value="2"
              c:identifier="GMIME_ENCODING_CONSTRAINT_BINARY">
        <doc xml:space="preserve">The stream may contain any binary data.</doc>
      </member>
    </enumeration>
    <constant name="FILTER_ENRICHED_IS_RICHTEXT"
              value="1"
              c:type="GMIME_FILTER_ENRICHED_IS_RICHTEXT">
      <doc xml:space="preserve">A bit flag for g_mime_filter_enriched_new() which signifies that
the filter should expect Rich Text (aka RTF).</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FILTER_HTML_CITE"
              value="128"
              c:type="GMIME_FILTER_HTML_CITE">
      <doc xml:space="preserve">Cites text by prepending "&amp;gt; " to each cited line.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FILTER_HTML_CONVERT_ADDRESSES"
              value="32"
              c:type="GMIME_FILTER_HTML_CONVERT_ADDRESSES">
      <doc xml:space="preserve">Wrap email addresses in "mailto:" href tags.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FILTER_HTML_CONVERT_NL"
              value="2"
              c:type="GMIME_FILTER_HTML_CONVERT_NL">
      <doc xml:space="preserve">Convert new-lines ('\n') into &amp;lt;br&amp;gt; tags.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FILTER_HTML_CONVERT_SPACES"
              value="4"
              c:type="GMIME_FILTER_HTML_CONVERT_SPACES">
      <doc xml:space="preserve">Preserve whitespace by converting spaces into their appropriate
html entities.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FILTER_HTML_CONVERT_URLS"
              value="8"
              c:type="GMIME_FILTER_HTML_CONVERT_URLS">
      <doc xml:space="preserve">Wrap detected URLs in &amp;lt;a href=...&amp;gt; tags.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FILTER_HTML_ESCAPE_8BIT"
              value="64"
              c:type="GMIME_FILTER_HTML_ESCAPE_8BIT">
      <doc xml:space="preserve">Converts 8bit characters to '?'.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FILTER_HTML_MARK_CITATION"
              value="16"
              c:type="GMIME_FILTER_HTML_MARK_CITATION">
      <doc xml:space="preserve">Change the colour of citation text.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="FILTER_HTML_PRE" value="1" c:type="GMIME_FILTER_HTML_PRE">
      <doc xml:space="preserve">Wrap stream in &amp;lt;pre&amp;gt; tags.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="Filter"
           c:symbol-prefix="filter"
           c:type="GMimeFilter"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="GMimeFilter"
           glib:get-type="g_mime_filter_get_type"
           glib:type-struct="FilterClass">
      <doc xml:space="preserve">Base class for filters used by #GMimeStreamFilter.</doc>
      <virtual-method name="complete" invoker="complete">
        <doc xml:space="preserve">Completes the filtering.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="Filter" c:type="GMimeFilter*"/>
          </instance-parameter>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <array length="1" zero-terminated="0" c:type="char*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="prespace" transfer-ownership="none">
            <doc xml:space="preserve">prespace buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">pointer to output buffer</doc>
            <array length="4" zero-terminated="0" c:type="char**">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="outlen"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">pointer to output length</doc>
            <type name="gulong" c:type="size_t*"/>
          </parameter>
          <parameter name="outprespace"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">pointer to output prespace buffer length</doc>
            <type name="gulong" c:type="size_t*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="copy" invoker="copy">
        <doc xml:space="preserve">Copies @filter into a new GMimeFilter object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a duplicate of @filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="Filter" c:type="GMimeFilter*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="filter" invoker="filter">
        <doc xml:space="preserve">Filters the input data and writes it to @out.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="Filter" c:type="GMimeFilter*"/>
          </instance-parameter>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <array length="1" zero-terminated="0" c:type="char*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="prespace" transfer-ownership="none">
            <doc xml:space="preserve">prespace buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">pointer to output buffer</doc>
            <array length="4" zero-terminated="0" c:type="char**">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="outlen"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">pointer to output length</doc>
            <type name="gulong" c:type="size_t*"/>
          </parameter>
          <parameter name="outprespace"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">pointer to output prespace buffer length</doc>
            <type name="gulong" c:type="size_t*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="reset" invoker="reset">
        <doc xml:space="preserve">Resets the filter.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <type name="Filter" c:type="GMimeFilter*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="backup" c:identifier="g_mime_filter_backup">
        <doc xml:space="preserve">Sets number of bytes backed up on the input, new calls replace
previous ones</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">filter</doc>
            <type name="Filter" c:type="GMimeFilter*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">data to backup</doc>
            <array length="1" zero-terminated="0" c:type="char*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve">length of @data</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="complete" c:identifier="g_mime_filter_complete">
        <doc xml:space="preserve">Completes the filtering.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">filter</doc>
            <type name="Filter" c:type="GMimeFilter*"/>
          </instance-parameter>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <array length="1" zero-terminated="0" c:type="char*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="prespace" transfer-ownership="none">
            <doc xml:space="preserve">prespace buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">pointer to output buffer</doc>
            <array length="4" zero-terminated="0" c:type="char**">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="outlen"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">pointer to output length</doc>
            <type name="gulong" c:type="size_t*"/>
          </parameter>
          <parameter name="outprespace"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">pointer to output prespace buffer length</doc>
            <type name="gulong" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="g_mime_filter_copy">
        <doc xml:space="preserve">Copies @filter into a new GMimeFilter object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a duplicate of @filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">filter</doc>
            <type name="Filter" c:type="GMimeFilter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="filter" c:identifier="g_mime_filter_filter">
        <doc xml:space="preserve">Filters the input data and writes it to @out.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">filter</doc>
            <type name="Filter" c:type="GMimeFilter*"/>
          </instance-parameter>
          <parameter name="inbuf" transfer-ownership="none">
            <doc xml:space="preserve">input buffer</doc>
            <array length="1" zero-terminated="0" c:type="char*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="inlen" transfer-ownership="none">
            <doc xml:space="preserve">input buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="prespace" transfer-ownership="none">
            <doc xml:space="preserve">prespace buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="outbuf"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="none">
            <doc xml:space="preserve">pointer to output buffer</doc>
            <array length="4" zero-terminated="0" c:type="char**">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="outlen"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">pointer to output length</doc>
            <type name="gulong" c:type="size_t*"/>
          </parameter>
          <parameter name="outprespace"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">pointer to output prespace buffer length</doc>
            <type name="gulong" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="g_mime_filter_reset">
        <doc xml:space="preserve">Resets the filter.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeFilter object</doc>
            <type name="Filter" c:type="GMimeFilter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_size" c:identifier="g_mime_filter_set_size">
        <doc xml:space="preserve">Ensure this much size is available for filter output (if required)</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">filter</doc>
            <type name="Filter" c:type="GMimeFilter*"/>
          </instance-parameter>
          <parameter name="size" transfer-ownership="none">
            <doc xml:space="preserve">requested size for the output buffer</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="keep" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if existing data in the output buffer should be kept</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="gpointer" c:type="_GMimeFilterPrivate*"/>
      </field>
      <field name="outreal">
        <array zero-terminated="0" c:type="char*">
          <type name="guint8"/>
        </array>
      </field>
      <field name="outbuf">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="outptr">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="outsize">
        <type name="gulong" c:type="size_t"/>
      </field>
      <field name="outpre">
        <type name="gulong" c:type="size_t"/>
      </field>
      <field name="backbuf">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="backsize">
        <type name="gulong" c:type="size_t"/>
      </field>
      <field name="backlen">
        <type name="gulong" c:type="size_t"/>
      </field>
    </class>
    <class name="FilterBasic"
           c:symbol-prefix="filter_basic"
           c:type="GMimeFilterBasic"
           parent="Filter"
           glib:type-name="GMimeFilterBasic"
           glib:get-type="g_mime_filter_basic_get_type"
           glib:type-struct="FilterBasicClass">
      <doc xml:space="preserve">A basic encoder/decoder filter for the MIME encodings.</doc>
      <constructor name="new" c:identifier="g_mime_filter_basic_new">
        <doc xml:space="preserve">Creates a new basic filter for @encoding.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new basic encoder filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="encoding" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentEncoding</doc>
            <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
          </parameter>
          <parameter name="encode" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE to encode or %FALSE to decode</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="encoder">
        <type name="Encoding" c:type="GMimeEncoding"/>
      </field>
    </class>
    <record name="FilterBasicClass"
            c:type="GMimeFilterBasicClass"
            glib:is-gtype-struct-for="FilterBasic">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <class name="FilterBest"
           c:symbol-prefix="filter_best"
           c:type="GMimeFilterBest"
           parent="Filter"
           glib:type-name="GMimeFilterBest"
           glib:get-type="g_mime_filter_best_get_type"
           glib:type-struct="FilterBestClass">
      <doc xml:space="preserve">A filter for calculating the best encoding and/or charset to encode
the data passed through it.</doc>
      <constructor name="new" c:identifier="g_mime_filter_best_new">
        <doc xml:space="preserve">Creates a new GMimeFilterBest filter. @flags are used to determine
which information to keep statistics of. If the
#GMIME_FILTER_BEST_CHARSET bit is set, the filter will be able to
compute the best charset for encoding the stream of data
filtered. If the #GMIME_FILTER_BEST_ENCODING bit is set, the filter
will be able to compute the best Content-Transfer-Encoding for use
with the stream being filtered.

Note: In order for the g_mime_filter_best_charset() function to
work, the stream being filtered MUST already be encoded in UTF-8.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new best filter with flags @flags.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">filter flags</doc>
            <type name="FilterBestFlags" c:type="GMimeFilterBestFlags"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="charset" c:identifier="g_mime_filter_best_charset">
        <doc xml:space="preserve">Calculates the best charset for encoding the stream filtered
through the @best filter.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a pointer to a string containing the name of the charset best suited for the text filtered through @best.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="best" transfer-ownership="none">
            <doc xml:space="preserve">best filter</doc>
            <type name="FilterBest" c:type="GMimeFilterBest*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="encoding" c:identifier="g_mime_filter_best_encoding">
        <doc xml:space="preserve">Calculates the most efficient Content-Transfer-Encoding for the
stream filtered through @best that fits within the encoding
@constraint.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the best encoding for the stream filtered by @best.</doc>
          <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
        </return-value>
        <parameters>
          <instance-parameter name="best" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeFilterBest</doc>
            <type name="FilterBest" c:type="GMimeFilterBest*"/>
          </instance-parameter>
          <parameter name="constraint" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncodingConstraint</doc>
            <type name="EncodingConstraint" c:type="GMimeEncodingConstraint"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="flags">
        <type name="FilterBestFlags" c:type="GMimeFilterBestFlags"/>
      </field>
      <field name="charset">
        <type name="Charset" c:type="GMimeCharset"/>
      </field>
      <field name="count0">
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="count8">
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="total">
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="maxline">
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="linelen">
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="frombuf">
        <array zero-terminated="0" c:type="unsigned" fixed-size="6">
          <type name="guint" c:type="unsigned"/>
        </array>
      </field>
      <field name="fromlen" bits="4">
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="hadfrom" bits="1">
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="startline" bits="1">
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="midline" bits="1">
        <type name="guint" c:type="unsigned"/>
      </field>
    </class>
    <record name="FilterBestClass"
            c:type="GMimeFilterBestClass"
            glib:is-gtype-struct-for="FilterBest">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <bitfield name="FilterBestFlags" c:type="GMimeFilterBestFlags">
      <doc xml:space="preserve">Bit flags to enable charset and/or encoding scanning to make
educated guesses as to what the best charset and/or encodings to
use for the content passed through the filter.</doc>
      <member name="charset"
              value="1"
              c:identifier="GMIME_FILTER_BEST_CHARSET">
        <doc xml:space="preserve">Enable best-charset detection.</doc>
      </member>
      <member name="encoding"
              value="2"
              c:identifier="GMIME_FILTER_BEST_ENCODING">
        <doc xml:space="preserve">Enable best-encoding detection.</doc>
      </member>
    </bitfield>
    <class name="FilterCRLF"
           c:symbol-prefix="filter_crlf"
           c:type="GMimeFilterCRLF"
           parent="Filter"
           glib:type-name="GMimeFilterCRLF"
           glib:get-type="g_mime_filter_crlf_get_type"
           glib:type-struct="FilterCRLFClass">
      <doc xml:space="preserve">A filter to convert between line-ending formats and encode/decode
lines beginning with a '.'.</doc>
      <constructor name="new" c:identifier="g_mime_filter_crlf_new">
        <doc xml:space="preserve">Creates a new #GMimeFilterCRLF filter.

If @encode is %TRUE, then lone line-feeds ('\n') will be 'encoded'
into the canonical CRLF end-of-line sequence ("\r\n") otherwise
CRLF sequences will be 'decoded' into the UNIX line-ending form
('\n').

The @dots parameter tells the filter whether or not it should
encode or decode lines beginning with a dot ('.'). If both @encode
and @dots are %TRUE, then a '.' at the beginning of a line will be
'encoded' into "..". If @encode is %FALSE, then ".." at the
beginning of a line will be decoded into a single '.'.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeFilterCRLF filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="encode" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the filter should encode or %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="dots" transfer-ownership="none">
            <doc xml:space="preserve">encode/decode dots (as for SMTP)</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="encode">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="dots">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="saw_cr">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="saw_lf">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="saw_dot">
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </class>
    <record name="FilterCRLFClass"
            c:type="GMimeFilterCRLFClass"
            glib:is-gtype-struct-for="FilterCRLF">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <class name="FilterCharset"
           c:symbol-prefix="filter_charset"
           c:type="GMimeFilterCharset"
           parent="Filter"
           glib:type-name="GMimeFilterCharset"
           glib:get-type="g_mime_filter_charset_get_type"
           glib:type-struct="FilterCharsetClass">
      <doc xml:space="preserve">A filter to convert between charsets.</doc>
      <constructor name="new" c:identifier="g_mime_filter_charset_new">
        <doc xml:space="preserve">Creates a new #GMimeFilterCharset filter.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new charset filter or %NULL if the charset conversion is not possible.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="from_charset" transfer-ownership="none">
            <doc xml:space="preserve">charset to convert from</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="to_charset" transfer-ownership="none">
            <doc xml:space="preserve">charset to convert to</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="from_charset">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="to_charset">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="cd" introspectable="0">
        <type c:type="libiconv_t"/>
      </field>
    </class>
    <record name="FilterCharsetClass"
            c:type="GMimeFilterCharsetClass"
            glib:is-gtype-struct-for="FilterCharset">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <record name="FilterClass"
            c:type="GMimeFilterClass"
            glib:is-gtype-struct-for="Filter">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="copy">
        <callback name="copy">
          <return-value transfer-ownership="full">
            <doc xml:space="preserve">a duplicate of @filter.</doc>
            <type name="Filter" c:type="GMimeFilter*"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="Filter" c:type="GMimeFilter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="filter">
        <callback name="filter">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="Filter" c:type="GMimeFilter*"/>
            </parameter>
            <parameter name="inbuf" transfer-ownership="none">
              <doc xml:space="preserve">input buffer</doc>
              <array length="2" zero-terminated="0" c:type="char*">
                <type name="guint8"/>
              </array>
            </parameter>
            <parameter name="inlen" transfer-ownership="none">
              <doc xml:space="preserve">input buffer length</doc>
              <type name="gulong" c:type="size_t"/>
            </parameter>
            <parameter name="prespace" transfer-ownership="none">
              <doc xml:space="preserve">prespace buffer length</doc>
              <type name="gulong" c:type="size_t"/>
            </parameter>
            <parameter name="outbuf"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="none">
              <doc xml:space="preserve">pointer to output buffer</doc>
              <array length="5" zero-terminated="0" c:type="char**">
                <type name="guint8"/>
              </array>
            </parameter>
            <parameter name="outlen"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">pointer to output length</doc>
              <type name="gulong" c:type="size_t*"/>
            </parameter>
            <parameter name="outprespace"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">pointer to output prespace buffer length</doc>
              <type name="gulong" c:type="size_t*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="complete">
        <callback name="complete">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="Filter" c:type="GMimeFilter*"/>
            </parameter>
            <parameter name="inbuf" transfer-ownership="none">
              <doc xml:space="preserve">input buffer</doc>
              <array length="2" zero-terminated="0" c:type="char*">
                <type name="guint8"/>
              </array>
            </parameter>
            <parameter name="inlen" transfer-ownership="none">
              <doc xml:space="preserve">input buffer length</doc>
              <type name="gulong" c:type="size_t"/>
            </parameter>
            <parameter name="prespace" transfer-ownership="none">
              <doc xml:space="preserve">prespace buffer length</doc>
              <type name="gulong" c:type="size_t"/>
            </parameter>
            <parameter name="outbuf"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="none">
              <doc xml:space="preserve">pointer to output buffer</doc>
              <array length="5" zero-terminated="0" c:type="char**">
                <type name="guint8"/>
              </array>
            </parameter>
            <parameter name="outlen"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">pointer to output length</doc>
              <type name="gulong" c:type="size_t*"/>
            </parameter>
            <parameter name="outprespace"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">pointer to output prespace buffer length</doc>
              <type name="gulong" c:type="size_t*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reset">
        <callback name="reset">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="filter" transfer-ownership="none">
              <type name="Filter" c:type="GMimeFilter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="FilterEnriched"
           c:symbol-prefix="filter_enriched"
           c:type="GMimeFilterEnriched"
           parent="Filter"
           glib:type-name="GMimeFilterEnriched"
           glib:get-type="g_mime_filter_enriched_get_type"
           glib:type-struct="FilterEnrichedClass">
      <doc xml:space="preserve">A filter for converting text/enriched or text/richtext textual
streams into text/html.</doc>
      <constructor name="new" c:identifier="g_mime_filter_enriched_new">
        <doc xml:space="preserve">Creates a new GMimeFilterEnriched object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new GMimeFilter object.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">flags</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="flags">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="nofill">
        <type name="gint" c:type="int"/>
      </field>
    </class>
    <record name="FilterEnrichedClass"
            c:type="GMimeFilterEnrichedClass"
            glib:is-gtype-struct-for="FilterEnriched">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <class name="FilterFrom"
           c:symbol-prefix="filter_from"
           c:type="GMimeFilterFrom"
           parent="Filter"
           glib:type-name="GMimeFilterFrom"
           glib:get-type="g_mime_filter_from_get_type"
           glib:type-struct="FilterFromClass">
      <doc xml:space="preserve">A filter for armoring or escaping lines beginning with "From ".</doc>
      <constructor name="new" c:identifier="g_mime_filter_from_new">
        <doc xml:space="preserve">Creates a new GMimeFilterFrom filter. If @mode is
#GMIME_FILTER_FROM_MODE_ARMOR, the from-filter will encode from
lines using the quoted-printable encoding resulting in "=46rom ".
Using the #GMIME_FILTER_FROM_MODE_DEFAULT or
#GMIME_FILTER_FROM_MODE_ESCAPE mode (they are the same), from lines
will be escaped to "&gt;From ".

Note: If you plan on using a from-filter in mode ARMOR, you should
remember to also use a #GMimeFilterBasic filter with an encoding of
#GMIME_CONTENT_ENCODING_QUOTEDPRINTABLE.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new from filter with mode @mode.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">filter mode</doc>
            <type name="FilterFromMode" c:type="GMimeFilterFromMode"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="mode">
        <type name="FilterFromMode" c:type="GMimeFilterFromMode"/>
      </field>
      <field name="midline">
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </class>
    <record name="FilterFromClass"
            c:type="GMimeFilterFromClass"
            glib:is-gtype-struct-for="FilterFrom">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <enumeration name="FilterFromMode" c:type="GMimeFilterFromMode">
      <doc xml:space="preserve">The mode for a #GMimeFilterFrom filter.</doc>
      <member name="default"
              value="0"
              c:identifier="GMIME_FILTER_FROM_MODE_DEFAULT">
        <doc xml:space="preserve">Default mode.</doc>
      </member>
      <member name="escape"
              value="0"
              c:identifier="GMIME_FILTER_FROM_MODE_ESCAPE">
        <doc xml:space="preserve">Escape 'From ' lines with a '&gt;'</doc>
      </member>
      <member name="armor"
              value="1"
              c:identifier="GMIME_FILTER_FROM_MODE_ARMOR">
        <doc xml:space="preserve">QP-Encode 'From ' lines</doc>
      </member>
    </enumeration>
    <class name="FilterGZip"
           c:symbol-prefix="filter_gzip"
           c:type="GMimeFilterGZip"
           parent="Filter"
           glib:type-name="GMimeFilterGZip"
           glib:get-type="g_mime_filter_gzip_get_type"
           glib:type-struct="FilterGZipClass">
      <doc xml:space="preserve">A filter for compresing or decompressing a gzip stream.</doc>
      <constructor name="new" c:identifier="g_mime_filter_gzip_new">
        <doc xml:space="preserve">Creates a new gzip (or gunzip) filter.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new gzip (or gunzip) filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">zip or unzip</doc>
            <type name="FilterGZipMode" c:type="GMimeFilterGZipMode"/>
          </parameter>
          <parameter name="level" transfer-ownership="none">
            <doc xml:space="preserve">compression level</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="priv">
        <type name="gpointer" c:type="_GMimeFilterGZipPrivate*"/>
      </field>
      <field name="mode">
        <type name="FilterGZipMode" c:type="GMimeFilterGZipMode"/>
      </field>
      <field name="level">
        <type name="gint" c:type="int"/>
      </field>
    </class>
    <record name="FilterGZipClass"
            c:type="GMimeFilterGZipClass"
            glib:is-gtype-struct-for="FilterGZip">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <enumeration name="FilterGZipMode" c:type="GMimeFilterGZipMode">
      <doc xml:space="preserve">The mode for the #GMimeFilterGZip filter.</doc>
      <member name="zip" value="0" c:identifier="GMIME_FILTER_GZIP_MODE_ZIP">
        <doc xml:space="preserve">Compress (zip) mode.</doc>
      </member>
      <member name="unzip"
              value="1"
              c:identifier="GMIME_FILTER_GZIP_MODE_UNZIP">
        <doc xml:space="preserve">Uncompress (unzip) mode.</doc>
      </member>
    </enumeration>
    <class name="FilterHTML"
           c:symbol-prefix="filter_html"
           c:type="GMimeFilterHTML"
           parent="Filter"
           glib:type-name="GMimeFilterHTML"
           glib:get-type="g_mime_filter_html_get_type"
           glib:type-struct="FilterHTMLClass">
      <doc xml:space="preserve">A filter for converting text/plain into text/html.</doc>
      <constructor name="new" c:identifier="g_mime_filter_html_new">
        <doc xml:space="preserve">Creates a new GMimeFilterHTML filter which can be used to convert a
plain UTF-8 text stream into an html stream.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new html filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">html flags</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="colour" transfer-ownership="none">
            <doc xml:space="preserve">citation colour</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="scanner">
        <type name="gpointer" c:type="_UrlScanner*"/>
      </field>
      <field name="flags">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="colour">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="column" bits="31">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="pre_open" bits="1">
        <type name="guint32" c:type="guint32"/>
      </field>
    </class>
    <record name="FilterHTMLClass"
            c:type="GMimeFilterHTMLClass"
            glib:is-gtype-struct-for="FilterHTML">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <class name="FilterMd5"
           c:symbol-prefix="filter_md5"
           c:type="GMimeFilterMd5"
           parent="Filter"
           glib:type-name="GMimeFilterMd5"
           glib:get-type="g_mime_filter_md5_get_type"
           glib:type-struct="FilterMd5Class">
      <doc xml:space="preserve">A filter for calculating the MD5 checksum of a stream.</doc>
      <constructor name="new" c:identifier="g_mime_filter_md5_new">
        <doc xml:space="preserve">Creates a new Md5 filter.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new Md5 filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
      </constructor>
      <method name="get_digest" c:identifier="g_mime_filter_md5_get_digest">
        <doc xml:space="preserve">Outputs the md5 digest into @digest.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="md5" transfer-ownership="none">
            <doc xml:space="preserve">md5 filter object</doc>
            <type name="FilterMd5" c:type="GMimeFilterMd5*"/>
          </instance-parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">output buffer of at least 16 bytes</doc>
            <type name="guint8" c:type="unsigned char"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="priv">
        <type name="gpointer" c:type="_GMimeFilterMd5Private*"/>
      </field>
    </class>
    <record name="FilterMd5Class"
            c:type="GMimeFilterMd5Class"
            glib:is-gtype-struct-for="FilterMd5">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <class name="FilterStrip"
           c:symbol-prefix="filter_strip"
           c:type="GMimeFilterStrip"
           parent="Filter"
           glib:type-name="GMimeFilterStrip"
           glib:get-type="g_mime_filter_strip_get_type"
           glib:type-struct="FilterStripClass">
      <doc xml:space="preserve">A filter for stripping whitespace from the end of lines.</doc>
      <constructor name="new" c:identifier="g_mime_filter_strip_new">
        <doc xml:space="preserve">Creates a new #GMimeFilterStrip filter which will strip trailing
whitespace from every line of input passed through the filter.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new strip filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
      </constructor>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
    </class>
    <record name="FilterStripClass"
            c:type="GMimeFilterStripClass"
            glib:is-gtype-struct-for="FilterStrip">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <class name="FilterWindows"
           c:symbol-prefix="filter_windows"
           c:type="GMimeFilterWindows"
           parent="Filter"
           glib:type-name="GMimeFilterWindows"
           glib:get-type="g_mime_filter_windows_get_type"
           glib:type-struct="FilterWindowsClass">
      <doc xml:space="preserve">A filter for detecting whether or not a text stream claimed to be
iso-8859-X is really that charset or if it is really a
Windows-CP125x charset.</doc>
      <constructor name="new" c:identifier="g_mime_filter_windows_new">
        <doc xml:space="preserve">Creates a new GMimeFilterWindows filter. When a stream of text has
been filtered, it can be determined whether or not said text stream
was in @claimed_charset or the equivalent Windows-CP125# charset.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new windows filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="claimed_charset" transfer-ownership="none">
            <doc xml:space="preserve">charset that a text stream claims to be</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="is_windows_charset"
              c:identifier="g_mime_filter_windows_is_windows_charset">
        <doc xml:space="preserve">Determines whether or not a Windows-CP125# charset has been
detected so far.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the filtered stream has been detected to contain Windows-CP125# characters or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">windows filter object</doc>
            <type name="FilterWindows" c:type="GMimeFilterWindows*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="real_charset"
              c:identifier="g_mime_filter_windows_real_charset">
        <doc xml:space="preserve">Figures out the real charset that the text is encoded in based on whether or not Windows-CP125# characters were found.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a const string pointer to the claimed charset if filtered text stream was found not to contain any Windows-CP125# characters or the proper Windows-CP125# charset.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">windows filter object</doc>
            <type name="FilterWindows" c:type="GMimeFilterWindows*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="is_windows">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="claimed_charset">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="FilterWindowsClass"
            c:type="GMimeFilterWindowsClass"
            glib:is-gtype-struct-for="FilterWindows">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <class name="FilterYenc"
           c:symbol-prefix="filter_yenc"
           c:type="GMimeFilterYenc"
           parent="Filter"
           glib:type-name="GMimeFilterYenc"
           glib:get-type="g_mime_filter_yenc_get_type"
           glib:type-struct="FilterYencClass">
      <doc xml:space="preserve">A filter for yEncoding or yDecoding a stream.</doc>
      <constructor name="new" c:identifier="g_mime_filter_yenc_new">
        <doc xml:space="preserve">Creates a new yEnc filter.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new yEnc filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="encode" transfer-ownership="none">
            <doc xml:space="preserve">encode vs decode</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_crc" c:identifier="g_mime_filter_yenc_get_crc">
        <doc xml:space="preserve">Get the computed crc or (guint32) -1 on fail.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the computed crc or (guint32) -1 on fail.</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="yenc" transfer-ownership="none">
            <doc xml:space="preserve">yEnc filter</doc>
            <type name="FilterYenc" c:type="GMimeFilterYenc*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_pcrc" c:identifier="g_mime_filter_yenc_get_pcrc">
        <doc xml:space="preserve">Get the computed part crc or (guint32) -1 on fail.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the computed part crc or (guint32) -1 on fail.</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="yenc" transfer-ownership="none">
            <doc xml:space="preserve">yEnc filter</doc>
            <type name="FilterYenc" c:type="GMimeFilterYenc*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_crc" c:identifier="g_mime_filter_yenc_set_crc">
        <doc xml:space="preserve">Sets the current crc32 value on the yEnc filter @yenc to @crc.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="yenc" transfer-ownership="none">
            <doc xml:space="preserve">yEnc filter</doc>
            <type name="FilterYenc" c:type="GMimeFilterYenc*"/>
          </instance-parameter>
          <parameter name="crc" transfer-ownership="none">
            <doc xml:space="preserve">crc32</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_state" c:identifier="g_mime_filter_yenc_set_state">
        <doc xml:space="preserve">Sets the current state of the yencoder/ydecoder</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="yenc" transfer-ownership="none">
            <doc xml:space="preserve">yEnc filter</doc>
            <type name="FilterYenc" c:type="GMimeFilterYenc*"/>
          </instance-parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve">encode/decode state</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="encode">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="part">
        <type name="gint" c:type="int"/>
      </field>
      <field name="state">
        <type name="gint" c:type="int"/>
      </field>
      <field name="pcrc">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="crc">
        <type name="guint32" c:type="guint32"/>
      </field>
    </class>
    <record name="FilterYencClass"
            c:type="GMimeFilterYencClass"
            glib:is-gtype-struct-for="FilterYenc">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <class name="GpgContext"
           c:symbol-prefix="gpg_context"
           c:type="GMimeGpgContext"
           parent="CryptoContext"
           glib:type-name="GMimeGpgContext"
           glib:get-type="g_mime_gpg_context_get_type"
           glib:type-struct="GpgContextClass">
      <doc xml:space="preserve">A GnuPG crypto context.</doc>
      <constructor name="new"
                   c:identifier="g_mime_gpg_context_new"
                   introspectable="0">
        <doc xml:space="preserve">Creates a new gpg crypto context object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new gpg crypto context object.</doc>
          <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
        </return-value>
        <parameters>
          <parameter name="request_passwd" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePasswordRequestFunc</doc>
            <type name="PasswordRequestFunc"
                  c:type="GMimePasswordRequestFunc"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">path to gpg binary</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_always_trust"
              c:identifier="g_mime_gpg_context_get_always_trust">
        <doc xml:space="preserve">Gets the always_trust flag on the gpg context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the always_trust flag on the gpg context.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeGpgContext</doc>
            <type name="GpgContext" c:type="GMimeGpgContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_auto_key_retrieve"
              c:identifier="g_mime_gpg_context_get_auto_key_retrieve">
        <doc xml:space="preserve">Gets the @auto_key_retrieve flag on the gpg context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the @auto_key_retrieve flag on the gpg context.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeGpgContext</doc>
            <type name="GpgContext" c:type="GMimeGpgContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_use_agent"
              c:identifier="g_mime_gpg_context_get_use_agent">
        <doc xml:space="preserve">Gets the use_agent flag on the gpg context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the use_agent flag on the gpg context, which indicates that GnuPG should attempt to use gpg-agent for credentials.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeGpgContext</doc>
            <type name="GpgContext" c:type="GMimeGpgContext*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_always_trust"
              c:identifier="g_mime_gpg_context_set_always_trust">
        <doc xml:space="preserve">Sets the @always_trust flag on the gpg context which is used for
encryption.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeGpgContext</doc>
            <type name="GpgContext" c:type="GMimeGpgContext*"/>
          </instance-parameter>
          <parameter name="always_trust" transfer-ownership="none">
            <doc xml:space="preserve">always trust flag</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_auto_key_retrieve"
              c:identifier="g_mime_gpg_context_set_auto_key_retrieve">
        <doc xml:space="preserve">Sets the @auto_key_retrieve flag on the gpg context which is used
for signature verification.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeGpgContext</doc>
            <type name="GpgContext" c:type="GMimeGpgContext*"/>
          </instance-parameter>
          <parameter name="auto_key_retrieve" transfer-ownership="none">
            <doc xml:space="preserve">auto-retrieve keys from a keys server</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_use_agent"
              c:identifier="g_mime_gpg_context_set_use_agent">
        <doc xml:space="preserve">Sets the @use_agent flag on the gpg context, which indicates that
GnuPG should attempt to use gpg-agent for credentials.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeGpgContext</doc>
            <type name="GpgContext" c:type="GMimeGpgContext*"/>
          </instance-parameter>
          <parameter name="use_agent" transfer-ownership="none">
            <doc xml:space="preserve">always trust flag</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="CryptoContext" c:type="GMimeCryptoContext"/>
      </field>
      <field name="auto_key_retrieve">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="always_trust">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="use_agent">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="path">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="GpgContextClass"
            c:type="GMimeGpgContextClass"
            glib:is-gtype-struct-for="GpgContext">
      <field name="parent_class">
        <type name="CryptoContextClass" c:type="GMimeCryptoContextClass"/>
      </field>
    </record>
    <record name="Header" c:type="GMimeHeader" disguised="1">
      <doc xml:space="preserve">A message/rfc822 header.</doc>
    </record>
    <callback name="HeaderForeachFunc" c:type="GMimeHeaderForeachFunc">
      <doc xml:space="preserve">Function signature for the callback to g_mime_header_list_foreach().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve">The field name.</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">The field value.</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="2">
          <doc xml:space="preserve">The user-supplied callback data.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="HeaderIter" c:type="GMimeHeaderIter">
      <doc xml:space="preserve">A message or mime-part header iterator. All members should be
considered private.</doc>
      <field name="hdrlist" writable="1">
        <type name="HeaderList" c:type="GMimeHeaderList*"/>
      </field>
      <field name="cursor" writable="1">
        <type name="Header" c:type="GMimeHeader*"/>
      </field>
      <field name="version" writable="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <method name="copy"
              c:identifier="g_mime_header_iter_copy"
              introspectable="0">
        <doc xml:space="preserve">Creates a dynamically allocated header iterator as a copy of
@iter. You must free this iter with g_mime_header_iter_free().</doc>
        <return-value>
          <doc xml:space="preserve">a newly-allocated copy of @iter.</doc>
          <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="copy_to" c:identifier="g_mime_header_iter_copy_to">
        <doc xml:space="preserve">Copies @src to @dest.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="src" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
          <parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="g_mime_header_iter_equal">
        <doc xml:space="preserve">Check that @iter1 and @iter2 reference the same header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @iter1 and @iter2 refer to the same header or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter1" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
          <parameter name="iter2" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="first" c:identifier="g_mime_header_iter_first">
        <doc xml:space="preserve">Updates @iter to point to the first header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="g_mime_header_iter_free">
        <doc xml:space="preserve">Frees a dynamically-allocated #GMimeHeaderIter as created by
g_mime_header_iter_new() or g_mime_header_iter_copy().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="g_mime_header_iter_get_name">
        <doc xml:space="preserve">Gets the current header's name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the header name or %NULL if invalid.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value" c:identifier="g_mime_header_iter_get_value">
        <doc xml:space="preserve">Gets the current header's value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the header's raw, unprocessed value or %NULL if invalid.  Note: The returned value should be decoded with a function such as g_mime_utils_header_decode_text() before displaying to the user.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_valid" c:identifier="g_mime_header_iter_is_valid">
        <doc xml:space="preserve">Checks if a #GMimeHeaderIter is valid. An iterator may become
invalid if the #GMimeHeaderList that the iterator refers to
changes.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @iter is still valid or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="last" c:identifier="g_mime_header_iter_last">
        <doc xml:space="preserve">Updates @iter to point to the last header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="next" c:identifier="g_mime_header_iter_next">
        <doc xml:space="preserve">Advances to the next header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="prev" c:identifier="g_mime_header_iter_prev">
        <doc xml:space="preserve">Advances to the previous header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="g_mime_header_iter_remove">
        <doc xml:space="preserve">Removes the current header and advances to the next header.

Note: If you remove the last header in the list, then @iter will
become invalid regardless of whether or not other headers remain.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_value" c:identifier="g_mime_header_iter_set_value">
        <doc xml:space="preserve">Sets the current header's value to the new value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the value was set or %FALSE otherwise (indicates invalid iter).  Note: @value should be encoded with a function such as g_mime_utils_header_encode_text().</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">new header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <function name="new"
                c:identifier="g_mime_header_iter_new"
                introspectable="0">
        <doc xml:space="preserve">Dynamically allocates a #GMimeHeaderIter on the heap. This is
intended for use in language bindings but may also be useful in
applications as well. You must free this iter with
g_mime_header_iter_free().</doc>
        <return-value>
          <doc xml:space="preserve">a newly-allocated #GMimeHeaderIter.</doc>
          <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
        </return-value>
      </function>
    </record>
    <record name="HeaderList" c:type="GMimeHeaderList" disguised="1">
      <doc xml:space="preserve">A message or mime-part header.</doc>
      <method name="append" c:identifier="g_mime_header_list_append">
        <doc xml:space="preserve">Appends a header. If @value is %NULL, a space will be set aside for it
(useful for setting the order of headers before values can be
obtained for them) otherwise the header will be unset.

Note: @value should be encoded with a function such as
g_mime_utils_header_encode_text().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear" c:identifier="g_mime_header_list_clear">
        <doc xml:space="preserve">Removes all of the headers from the #GMimeHeaderList.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="GMimeHeaderList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="contains" c:identifier="g_mime_header_list_contains">
        <doc xml:space="preserve">Checks whether or not a header exists.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the specified header exists or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="const GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="destroy" c:identifier="g_mime_header_list_destroy">
        <doc xml:space="preserve">Destroy the header list.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="GMimeHeaderList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="foreach" c:identifier="g_mime_header_list_foreach">
        <doc xml:space="preserve">Calls @func for each header name/value pair.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="const GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve">function to be called for each header.</doc>
            <type name="HeaderForeachFunc" c:type="GMimeHeaderForeachFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">User data to be passed to the func.</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get" c:identifier="g_mime_header_list_get">
        <doc xml:space="preserve">Gets the value of the first header with the name requested.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the value of the header requested.  Note: The returned value should be decoded with a function such as g_mime_utils_header_decode_text() before displaying to the user.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="const GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_iter" c:identifier="g_mime_header_list_get_iter">
        <doc xml:space="preserve">Initializes an iterator for traversing @headers.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a %TRUE if successful or %FALSE if there are no headers to traverse.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="iter"
                     direction="out"
                     caller-allocates="1"
                     transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderIter</doc>
            <type name="HeaderIter" c:type="GMimeHeaderIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_stream" c:identifier="g_mime_header_list_get_stream">
        <doc xml:space="preserve">Gets the raw stream representing @headers.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeStream if set or %NULL otherwise.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="GMimeHeaderList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="prepend" c:identifier="g_mime_header_list_prepend">
        <doc xml:space="preserve">Prepends a header. If @value is %NULL, a space will be set aside
for it (useful for setting the order of headers before values can
be obtained for them) otherwise the header will be unset.

Note: @value should be encoded with a function such as
g_mime_utils_header_encode_text().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="register_writer"
              c:identifier="g_mime_header_list_register_writer"
              introspectable="0">
        <doc xml:space="preserve">Changes the function used to write @name headers to @writer (or the
default if @writer is %NULL). This is useful if you want to change
the default header folding style for a particular header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="writer" transfer-ownership="none">
            <doc xml:space="preserve">writer function</doc>
            <type name="HeaderWriter" c:type="GMimeHeaderWriter"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="g_mime_header_list_remove">
        <doc xml:space="preserve">Remove the specified header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the header was successfully removed or %FALSE if the specified header could not be found.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="g_mime_header_list_set">
        <doc xml:space="preserve">Set the value of the specified header. If @value is %NULL and the
header, @name, had not been previously set, a space will be set
aside for it (useful for setting the order of headers before values
can be obtained for them) otherwise the header will be unset.

Note: If there are multiple headers with the specified field name,
the first instance of the header will be replaced and further
instances will be removed.

Additionally, @value should be encoded with a function such as
g_mime_utils_header_encode_text().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_stream" c:identifier="g_mime_header_list_set_stream">
        <doc xml:space="preserve">Set the raw header stream.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string" c:identifier="g_mime_header_list_to_string">
        <doc xml:space="preserve">Allocates a string buffer containing the raw rfc822 headers
contained in @headers.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a string containing the header block.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="const GMimeHeaderList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write_to_stream"
              c:identifier="g_mime_header_list_write_to_stream">
        <doc xml:space="preserve">Write the headers to a stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="headers" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeaderList</doc>
            <type name="HeaderList" c:type="const GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">output stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <function name="new"
                c:identifier="g_mime_header_list_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new #GMimeHeaderList object.</doc>
        <return-value>
          <doc xml:space="preserve">a new header list object.</doc>
          <type name="HeaderList" c:type="GMimeHeaderList*"/>
        </return-value>
      </function>
    </record>
    <callback name="HeaderWriter" c:type="GMimeHeaderWriter">
      <doc xml:space="preserve">Function signature for the callback to
g_mime_header_list_register_writer().</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes written or %-1 on error.</doc>
        <type name="glong" c:type="ssize_t"/>
      </return-value>
      <parameters>
        <parameter name="stream" transfer-ownership="none">
          <doc xml:space="preserve">The output stream.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </parameter>
        <parameter name="name" transfer-ownership="none">
          <doc xml:space="preserve">The field name.</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">The field value.</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </callback>
    <constant name="INTERFACE_AGE" value="0" c:type="GMIME_INTERFACE_AGE">
      <doc xml:space="preserve">GMime's interface age.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="InternetAddress"
           c:symbol-prefix="internet_address"
           c:type="InternetAddress"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="InternetAddress"
           glib:get-type="internet_address_get_type"
           glib:type-struct="InternetAddressClass">
      <doc xml:space="preserve">An RFC 2822 Address object.</doc>
      <virtual-method name="to_string">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ia" transfer-ownership="none">
            <type name="InternetAddress" c:type="InternetAddress*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="linelen" transfer-ownership="none">
            <type name="gulong" c:type="size_t*"/>
          </parameter>
          <parameter name="out" transfer-ownership="none">
            <type name="GLib.String" c:type="GString*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_name" c:identifier="internet_address_get_name">
        <doc xml:space="preserve">Gets the display name of the #InternetAddress.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the name of the mailbox or group in a form suitable for display if available or %NULL otherwise. If the name is available, the returned string will be in UTF-8.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ia" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddress</doc>
            <type name="InternetAddress" c:type="InternetAddress*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_name" c:identifier="internet_address_set_name">
        <doc xml:space="preserve">Set the display name of the #InternetAddress.

Note: The @name string should be in UTF-8.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ia" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddress</doc>
            <type name="InternetAddress" c:type="InternetAddress*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">the display name for the address group or mailbox</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string" c:identifier="internet_address_to_string">
        <doc xml:space="preserve">Allocates a string containing the contents of the #InternetAddress
object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the #InternetAddress object as an allocated string in rfc822 format.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ia" transfer-ownership="none">
            <doc xml:space="preserve">Internet Address object</doc>
            <type name="InternetAddress" c:type="InternetAddress*"/>
          </instance-parameter>
          <parameter name="encode" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the address should be rfc2047 encoded</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="name">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="InternetAddressClass"
            c:type="InternetAddressClass"
            glib:is-gtype-struct-for="InternetAddress">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="to_string">
        <callback name="to_string">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="ia" transfer-ownership="none">
              <type name="InternetAddress" c:type="InternetAddress*"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <type name="guint32" c:type="guint32"/>
            </parameter>
            <parameter name="linelen" transfer-ownership="none">
              <type name="gulong" c:type="size_t*"/>
            </parameter>
            <parameter name="out" transfer-ownership="none">
              <type name="GLib.String" c:type="GString*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="InternetAddressGroup"
           c:symbol-prefix="internet_address_group"
           c:type="InternetAddressGroup"
           parent="InternetAddress"
           glib:type-name="InternetAddressGroup"
           glib:get-type="internet_address_group_get_type"
           glib:type-struct="InternetAddressGroupClass">
      <doc xml:space="preserve">An RFC 2822 Group address.</doc>
      <constructor name="new" c:identifier="internet_address_group_new">
        <doc xml:space="preserve">Creates a new #InternetAddressGroup object with the specified
@name.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #InternetAddressGroup object.  Note: The @name string should be in UTF-8.</doc>
          <type name="InternetAddress" c:type="InternetAddress*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">group name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_member"
              c:identifier="internet_address_group_add_member">
        <doc xml:space="preserve">Add a contact to the internet address group.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the index of the newly added member.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressGroup</doc>
            <type name="InternetAddressGroup" c:type="InternetAddressGroup*"/>
          </instance-parameter>
          <parameter name="member" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddress</doc>
            <type name="InternetAddress" c:type="InternetAddress*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_members"
              c:identifier="internet_address_group_get_members">
        <doc xml:space="preserve">Gets the #InternetAddressList containing the group members of an
rfc822 group address.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #InternetAddressList containing the members of @group.</doc>
          <type name="InternetAddressList" c:type="InternetAddressList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressGroup</doc>
            <type name="InternetAddressGroup" c:type="InternetAddressGroup*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_members"
              c:identifier="internet_address_group_set_members">
        <doc xml:space="preserve">Set the members of the internet address group.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="group" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressGroup</doc>
            <type name="InternetAddressGroup" c:type="InternetAddressGroup*"/>
          </instance-parameter>
          <parameter name="members" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="InternetAddress" c:type="InternetAddress"/>
      </field>
      <field name="members">
        <type name="InternetAddressList" c:type="InternetAddressList*"/>
      </field>
    </class>
    <record name="InternetAddressGroupClass"
            c:type="InternetAddressGroupClass"
            glib:is-gtype-struct-for="InternetAddressGroup">
      <field name="parent_class">
        <type name="InternetAddressClass" c:type="InternetAddressClass"/>
      </field>
    </record>
    <class name="InternetAddressList"
           c:symbol-prefix="internet_address_list"
           c:type="InternetAddressList"
           parent="GObject.Object"
           glib:type-name="InternetAddressList"
           glib:get-type="internet_address_list_get_type"
           glib:type-struct="InternetAddressListClass">
      <doc xml:space="preserve">A collection of #InternetAddress objects.</doc>
      <constructor name="new" c:identifier="internet_address_list_new">
        <doc xml:space="preserve">Creates a new #InternetAddressList.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #InternetAddressList.</doc>
          <type name="InternetAddressList" c:type="InternetAddressList*"/>
        </return-value>
      </constructor>
      <function name="parse_string"
                c:identifier="internet_address_list_parse_string">
        <doc xml:space="preserve">Construct a list of internet addresses from the given string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #InternetAddressList or %NULL if the input string does not contain any addresses.</doc>
          <type name="InternetAddressList" c:type="InternetAddressList*"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">a string containing internet addresses</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <method name="add" c:identifier="internet_address_list_add">
        <doc xml:space="preserve">Adds an #InternetAddress to the #InternetAddressList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the index of the added #InternetAddress.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="ia" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddress</doc>
            <type name="InternetAddress" c:type="InternetAddress*"/>
          </parameter>
        </parameters>
      </method>
      <method name="append" c:identifier="internet_address_list_append">
        <doc xml:space="preserve">Adds all of the addresses in @append to @list.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="append" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear" c:identifier="internet_address_list_clear">
        <doc xml:space="preserve">Clears the list of addresses.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="contains" c:identifier="internet_address_list_contains">
        <doc xml:space="preserve">Checks whether or not the specified #InternetAddress is contained
within the #InternetAddressList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the specified #InternetAddress is contained within the specified #InternetAddressList or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="ia" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddress</doc>
            <type name="InternetAddress" c:type="InternetAddress*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_address"
              c:identifier="internet_address_list_get_address">
        <doc xml:space="preserve">Gets the #InternetAddress at the specified index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #InternetAddress at the specified index or %NULL if the index is out of range.</doc>
          <type name="InternetAddress" c:type="InternetAddress*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index of #InternetAddress to get</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="index_of" c:identifier="internet_address_list_index_of">
        <doc xml:space="preserve">Gets the index of the specified #InternetAddress inside the
#InternetAddressList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the index of the requested #InternetAddress within the #InternetAddressList or %-1 if it is not contained within the #InternetAddressList.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="ia" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddress</doc>
            <type name="InternetAddress" c:type="InternetAddress*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert" c:identifier="internet_address_list_insert">
        <doc xml:space="preserve">Inserts an #InternetAddress into the #InternetAddressList at the
specified index.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index to insert at</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="ia" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddress</doc>
            <type name="InternetAddress" c:type="InternetAddress*"/>
          </parameter>
        </parameters>
      </method>
      <method name="length" c:identifier="internet_address_list_length">
        <doc xml:space="preserve">Gets the length of the list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of #InternetAddress objects in the list.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="prepend" c:identifier="internet_address_list_prepend">
        <doc xml:space="preserve">Inserts all of the addresses in @prepend to the beginning of @list.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="prepend" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="internet_address_list_remove">
        <doc xml:space="preserve">Removes an #InternetAddress from the #InternetAddressList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the specified #InternetAddress was removed or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="ia" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddress</doc>
            <type name="InternetAddress" c:type="InternetAddress*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_at" c:identifier="internet_address_list_remove_at">
        <doc xml:space="preserve">Removes an #InternetAddress from the #InternetAddressList at the
specified index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if an #InternetAddress was removed or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index to remove</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_address"
              c:identifier="internet_address_list_set_address">
        <doc xml:space="preserve">Sets the #InternetAddress at the specified index to @ia.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressList</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index of #InternetAddress to set</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="ia" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddress</doc>
            <type name="InternetAddress" c:type="InternetAddress*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string" c:identifier="internet_address_list_to_string">
        <doc xml:space="preserve">Allocates a string buffer containing the rfc822 formatted addresses
in @list.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a string containing the list of addresses in rfc822 format or %NULL if no addresses are contained in the list.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">list of internet addresses</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="encode" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the address should be rfc2047 encoded</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="writer" c:identifier="internet_address_list_writer">
        <doc xml:space="preserve">Writes the rfc2047-encoded rfc822 formatted addresses in @list to
@str, folding appropriately.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">list of internet addresses</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">string to write to</doc>
            <type name="GLib.String" c:type="GString*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="array">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="InternetAddressListClass"
            c:type="InternetAddressListClass"
            glib:is-gtype-struct-for="InternetAddressList">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="InternetAddressMailbox"
           c:symbol-prefix="internet_address_mailbox"
           c:type="InternetAddressMailbox"
           parent="InternetAddress"
           glib:type-name="InternetAddressMailbox"
           glib:get-type="internet_address_mailbox_get_type"
           glib:type-struct="InternetAddressMailboxClass">
      <doc xml:space="preserve">An RFC 2822 Mailbox address.</doc>
      <constructor name="new" c:identifier="internet_address_mailbox_new">
        <doc xml:space="preserve">Creates a new #InternetAddress object with the specified @name and
@addr.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #InternetAddressMailbox object.  Note: The @name string should be in UTF-8.</doc>
          <type name="InternetAddress" c:type="InternetAddress*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">person's name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="addr" transfer-ownership="none">
            <doc xml:space="preserve">person's address</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_addr" c:identifier="internet_address_mailbox_get_addr">
        <doc xml:space="preserve">Gets the addr-spec of the internet address mailbox.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the address of the mailbox.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mailbox" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressMailbox</doc>
            <type name="InternetAddressMailbox"
                  c:type="InternetAddressMailbox*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_addr" c:identifier="internet_address_mailbox_set_addr">
        <doc xml:space="preserve">Set the mailbox address.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mailbox" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressMailbox</doc>
            <type name="InternetAddressMailbox"
                  c:type="InternetAddressMailbox*"/>
          </instance-parameter>
          <parameter name="addr" transfer-ownership="none">
            <doc xml:space="preserve">contact's email address</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="InternetAddress" c:type="InternetAddress"/>
      </field>
      <field name="addr">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="InternetAddressMailboxClass"
            c:type="InternetAddressMailboxClass"
            glib:is-gtype-struct-for="InternetAddressMailbox">
      <field name="parent_class">
        <type name="InternetAddressClass" c:type="InternetAddressClass"/>
      </field>
    </record>
    <constant name="MAJOR_VERSION" value="2" c:type="GMIME_MAJOR_VERSION">
      <doc xml:space="preserve">GMime's major version.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MICRO_VERSION" value="19" c:type="GMIME_MICRO_VERSION">
      <doc xml:space="preserve">GMime's micro version.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="MINOR_VERSION" value="6" c:type="GMIME_MINOR_VERSION">
      <doc xml:space="preserve">GMime's minor version.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="Message"
           c:symbol-prefix="message"
           c:type="GMimeMessage"
           parent="Object"
           glib:type-name="GMimeMessage"
           glib:get-type="g_mime_message_get_type"
           glib:type-struct="MessageClass">
      <doc xml:space="preserve">A MIME Message object.</doc>
      <constructor name="new" c:identifier="g_mime_message_new">
        <doc xml:space="preserve">If @pretty_headers is %TRUE, then the standard rfc822 headers are
initialized so as to put headers in a nice friendly order. This is
strictly a cosmetic thing, so if you are unsure, it is safe to say
no (%FALSE).</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty #GMimeMessage object.</doc>
          <type name="Message" c:type="GMimeMessage*"/>
        </return-value>
        <parameters>
          <parameter name="pretty_headers" transfer-ownership="none">
            <doc xml:space="preserve">make pretty headers</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_recipient" c:identifier="g_mime_message_add_recipient">
        <doc xml:space="preserve">Add a recipient of a chosen type to the MIME message.

Note: The @name (and @addr) strings should be in UTF-8.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeRecipientType</doc>
            <type name="RecipientType" c:type="GMimeRecipientType"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">The recipient's name (or %NULL)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="addr" transfer-ownership="none">
            <doc xml:space="preserve">The recipient's address</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="foreach" c:identifier="g_mime_message_foreach">
        <doc xml:space="preserve">Recursively calls @callback on each of the mime parts in the mime message.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve">function to call on each of the mime parts contained by the mime message</doc>
            <type name="ObjectForeachFunc" c:type="GMimeObjectForeachFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user-supplied callback data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_all_recipients"
              c:identifier="g_mime_message_get_all_recipients">
        <doc xml:space="preserve">Gets the complete list of recipients for @message.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated #InternetAddressList containing all recipients of the message or %NULL if no recipients are set.</doc>
          <type name="InternetAddressList" c:type="InternetAddressList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_body" c:identifier="g_mime_message_get_body">
        <doc xml:space="preserve">Attempts to identify the MIME part containing the body of the
message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeObject containing the textual content that appears to be the main body of the message.  Note: This function is NOT guarenteed to always work as it makes some assumptions that are not necessarily true. It is recommended that you traverse the MIME structure yourself.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_date" c:identifier="g_mime_message_get_date">
        <doc xml:space="preserve">Stores the date in time_t format in @date. If @tz_offset is
non-%NULL, then the timezone offset in will be stored in
@tz_offset.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="date"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">pointer to a date in time_t</doc>
            <type name="glong" c:type="time_t*"/>
          </parameter>
          <parameter name="tz_offset"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">pointer to timezone offset (in +/- hours)</doc>
            <type name="gint" c:type="int*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_date_as_string"
              c:identifier="g_mime_message_get_date_as_string">
        <doc xml:space="preserve">Gets the message's sent-date in string format.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string containing the Date header value.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_message_id"
              c:identifier="g_mime_message_get_message_id">
        <doc xml:space="preserve">Gets the Message-Id header of @message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the Message-Id of a message.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mime_part" c:identifier="g_mime_message_get_mime_part">
        <doc xml:space="preserve">Gets the toplevel MIME part contained within @message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the toplevel MIME part of @message.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_recipients"
              c:identifier="g_mime_message_get_recipients">
        <doc xml:space="preserve">Gets a list of recipients of the specified @type from the @message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a list of recipients of the specified @type from the @message.</doc>
          <type name="InternetAddressList" c:type="InternetAddressList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeRecipientType</doc>
            <type name="RecipientType" c:type="GMimeRecipientType"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_reply_to" c:identifier="g_mime_message_get_reply_to">
        <doc xml:space="preserve">Gets the Reply-To address from @message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the sender's Reply-To address in a form suitable for display or %NULL if no Reply-To address is set. If not %NULL, the returned string will be in UTF-8.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_sender" c:identifier="g_mime_message_get_sender">
        <doc xml:space="preserve">Gets the email address of the sender from @message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the sender's name and address of the @message in a form suitable for display or %NULL if no sender is set. If not %NULL, the returned string will be in UTF-8.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subject" c:identifier="g_mime_message_get_subject">
        <doc xml:space="preserve">Gets the subject of the @message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the subject of the @message in a form suitable for display or %NULL if no subject is set. If not %NULL, the returned string will be in UTF-8.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="partial_split_message"
              c:identifier="g_mime_message_partial_split_message">
        <doc xml:space="preserve">Splits @message into an array of #GMimeMessage objects each
containing a single #GMimeMessagePartial object containing
@max_size bytes or fewer. @nparts is set to the number of
#GMimeMessagePartial objects created.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an array of #GMimeMessage objects and sets @nparts to the number of messages returned or %NULL on fail.</doc>
          <type name="Message" c:type="GMimeMessage**"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">message object</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="max_size" transfer-ownership="none">
            <doc xml:space="preserve">max size</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
          <parameter name="nparts" transfer-ownership="none">
            <doc xml:space="preserve">number of parts</doc>
            <type name="gulong" c:type="size_t*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_date" c:identifier="g_mime_message_set_date">
        <doc xml:space="preserve">Sets the Date header on a MIME Message.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="date" transfer-ownership="none">
            <doc xml:space="preserve">a date to be used in the Date header</doc>
            <type name="glong" c:type="time_t"/>
          </parameter>
          <parameter name="tz_offset" transfer-ownership="none">
            <doc xml:space="preserve">timezone offset (in +/- hours)</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_date_as_string"
              c:identifier="g_mime_message_set_date_as_string">
        <doc xml:space="preserve">Sets the sent-date of the message.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">a date string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_message_id"
              c:identifier="g_mime_message_set_message_id">
        <doc xml:space="preserve">Set the Message-Id on a message.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="message_id" transfer-ownership="none">
            <doc xml:space="preserve">message-id (addr-spec portion)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_mime_part" c:identifier="g_mime_message_set_mime_part">
        <doc xml:space="preserve">Set the root-level MIME part of the message.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">The root-level MIME Part</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_reply_to" c:identifier="g_mime_message_set_reply_to">
        <doc xml:space="preserve">Set the sender's Reply-To address on the @message.

Note: The @reply_to string should be the raw encoded email
address. It is probably best to use an #InternetAddress to
construct and encode this value.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="reply_to" transfer-ownership="none">
            <doc xml:space="preserve">The Reply-To address</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sender" c:identifier="g_mime_message_set_sender">
        <doc xml:space="preserve">Set the sender's name and address on the MIME Message.
(ex: "\"Joe Sixpack\" &amp;lt;joe@sixpack.org&amp;gt;")

Note: The @sender string should be the raw encoded email
address. It is probably best to use an #InternetAddress to
construct and encode this value.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="sender" transfer-ownership="none">
            <doc xml:space="preserve">The name and address of the sender</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_subject" c:identifier="g_mime_message_set_subject">
        <doc xml:space="preserve">Set the subject of a @message.

Note: The @subject string should be in UTF-8.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeMessage</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="subject" transfer-ownership="none">
            <doc xml:space="preserve">Subject string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Object" c:type="GMimeObject"/>
      </field>
      <field name="recipients">
        <type name="InternetAddressList" c:type="InternetAddressList**"/>
      </field>
      <field name="mime_part">
        <type name="Object" c:type="GMimeObject*"/>
      </field>
      <field name="message_id">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="reply_to">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="subject">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="from">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="date">
        <type name="glong" c:type="time_t"/>
      </field>
      <field name="tz_offset">
        <type name="gint" c:type="int"/>
      </field>
    </class>
    <record name="MessageClass"
            c:type="GMimeMessageClass"
            glib:is-gtype-struct-for="Message">
      <field name="parent_class">
        <type name="ObjectClass" c:type="GMimeObjectClass"/>
      </field>
    </record>
    <class name="MessagePart"
           c:symbol-prefix="message_part"
           c:type="GMimeMessagePart"
           parent="Object"
           glib:type-name="GMimeMessagePart"
           glib:get-type="g_mime_message_part_get_type"
           glib:type-struct="MessagePartClass">
      <doc xml:space="preserve">A message/rfc822 or message/news MIME part.</doc>
      <constructor name="new" c:identifier="g_mime_message_part_new">
        <doc xml:space="preserve">Creates a new MIME message part object with a default content-type
of message/@subtype.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty MIME message part object with a default content-type of message/@subtype.</doc>
          <type name="MessagePart" c:type="GMimeMessagePart*"/>
        </return-value>
        <parameters>
          <parameter name="subtype" transfer-ownership="none">
            <doc xml:space="preserve">message subtype or %NULL for "rfc822"</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_message"
                   c:identifier="g_mime_message_part_new_with_message">
        <doc xml:space="preserve">Creates a new MIME message part object with a default content-type
of message/@subtype containing @message.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a MIME message part object with a default content-type of message/@subtype containing @message.</doc>
          <type name="MessagePart" c:type="GMimeMessagePart*"/>
        </return-value>
        <parameters>
          <parameter name="subtype" transfer-ownership="none">
            <doc xml:space="preserve">message subtype or %NULL for "rfc822"</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">message</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_message"
              c:identifier="g_mime_message_part_get_message">
        <doc xml:space="preserve">Gets the message object on the message part object @part.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the message part contained within @part.</doc>
          <type name="Message" c:type="GMimeMessage*"/>
        </return-value>
        <parameters>
          <instance-parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">message part</doc>
            <type name="MessagePart" c:type="GMimeMessagePart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_message"
              c:identifier="g_mime_message_part_set_message">
        <doc xml:space="preserve">Sets the @message object on the message part object @part.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">message part</doc>
            <type name="MessagePart" c:type="GMimeMessagePart*"/>
          </instance-parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">message</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Object" c:type="GMimeObject"/>
      </field>
      <field name="message">
        <type name="Message" c:type="GMimeMessage*"/>
      </field>
    </class>
    <record name="MessagePartClass"
            c:type="GMimeMessagePartClass"
            glib:is-gtype-struct-for="MessagePart">
      <field name="parent_class">
        <type name="ObjectClass" c:type="GMimeObjectClass"/>
      </field>
    </record>
    <class name="MessagePartial"
           c:symbol-prefix="message_partial"
           c:type="GMimeMessagePartial"
           parent="Part"
           glib:type-name="GMimeMessagePartial"
           glib:get-type="g_mime_message_partial_get_type"
           glib:type-struct="MessagePartialClass">
      <doc xml:space="preserve">A message/partial MIME part.</doc>
      <constructor name="new" c:identifier="g_mime_message_partial_new">
        <doc xml:space="preserve">Creates a new MIME message/partial object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty MIME message/partial object.</doc>
          <type name="MessagePartial" c:type="GMimeMessagePartial*"/>
        </return-value>
        <parameters>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve">message/partial part id</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="number" transfer-ownership="none">
            <doc xml:space="preserve">message/partial part number</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="total" transfer-ownership="none">
            <doc xml:space="preserve">total number of message/partial parts</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="reconstruct_message"
                c:identifier="g_mime_message_partial_reconstruct_message">
        <doc xml:space="preserve">Reconstructs the GMimeMessage from the given message/partial parts
in @partials.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a GMimeMessage object on success or %NULL on fail.</doc>
          <type name="Message" c:type="GMimeMessage*"/>
        </return-value>
        <parameters>
          <parameter name="partials" transfer-ownership="none">
            <doc xml:space="preserve">an array of message/partial mime parts</doc>
            <type name="MessagePartial" c:type="GMimeMessagePartial**"/>
          </parameter>
          <parameter name="num" transfer-ownership="none">
            <doc xml:space="preserve">the number of elements in @partials</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_id" c:identifier="g_mime_message_partial_get_id">
        <doc xml:space="preserve">Gets the message/partial id parameter value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the message/partial id or %NULL on fail.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="partial" transfer-ownership="none">
            <doc xml:space="preserve">message/partial object</doc>
            <type name="MessagePartial" c:type="GMimeMessagePartial*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_number"
              c:identifier="g_mime_message_partial_get_number">
        <doc xml:space="preserve">Gets the message/partial part number.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the message/partial part number or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="partial" transfer-ownership="none">
            <doc xml:space="preserve">message/partial object</doc>
            <type name="MessagePartial" c:type="GMimeMessagePartial*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_total" c:identifier="g_mime_message_partial_get_total">
        <doc xml:space="preserve">Gets the total number of message/partial parts needed to
reconstruct the original message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the total number of message/partial parts needed to reconstruct the original message or -1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="partial" transfer-ownership="none">
            <doc xml:space="preserve">message/partial object</doc>
            <type name="MessagePartial" c:type="GMimeMessagePartial*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Part" c:type="GMimePart"/>
      </field>
      <field name="number">
        <type name="gint" c:type="int"/>
      </field>
      <field name="total">
        <type name="gint" c:type="int"/>
      </field>
      <field name="id">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="MessagePartialClass"
            c:type="GMimeMessagePartialClass"
            glib:is-gtype-struct-for="MessagePartial">
      <field name="parent_class">
        <type name="PartClass" c:type="GMimePartClass"/>
      </field>
    </record>
    <class name="Multipart"
           c:symbol-prefix="multipart"
           c:type="GMimeMultipart"
           parent="Object"
           glib:type-name="GMimeMultipart"
           glib:get-type="g_mime_multipart_get_type"
           glib:type-struct="MultipartClass">
      <doc xml:space="preserve">A base MIME multipart object.</doc>
      <constructor name="new" c:identifier="g_mime_multipart_new">
        <doc xml:space="preserve">Creates a new MIME multipart object with a default content-type of
multipart/mixed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty MIME multipart object with a default content-type of multipart/mixed.</doc>
          <type name="Multipart" c:type="GMimeMultipart*"/>
        </return-value>
      </constructor>
      <constructor name="new_with_subtype"
                   c:identifier="g_mime_multipart_new_with_subtype">
        <doc xml:space="preserve">Creates a new MIME multipart object with a content-type of
multipart/@subtype.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty MIME multipart object with a content-type of multipart/@subtype.</doc>
          <type name="Multipart" c:type="GMimeMultipart*"/>
        </return-value>
        <parameters>
          <parameter name="subtype" transfer-ownership="none">
            <doc xml:space="preserve">content-type subtype</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="add" invoker="add">
        <doc xml:space="preserve">Adds a mime part to the multipart.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="clear" invoker="clear">
        <doc xml:space="preserve">Removes all subparts from @multipart.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="contains" invoker="contains">
        <doc xml:space="preserve">Checks if @part is contained within @multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @part is a subpart of @multipart or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">mime part</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_boundary" invoker="get_boundary">
        <doc xml:space="preserve">Gets the boundary on the multipart. If the internal boundary is
%NULL, then an auto-generated boundary will be set on the multipart
and returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the boundary on the multipart.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_count" invoker="get_count">
        <doc xml:space="preserve">Gets the number of mime parts contained within the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of mime parts contained within the multipart.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_part" invoker="get_part">
        <doc xml:space="preserve">Gets the mime part at position @index within the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the mime part at position @index.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">position of the mime part</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="index_of" invoker="index_of">
        <doc xml:space="preserve">Gets the index of @part within @multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the index of @part within @multipart or %-1 if not found.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">mime part</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="insert" invoker="insert">
        <doc xml:space="preserve">Inserts the specified mime part into the multipart at the position
@index.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">position to insert the mime part</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">mime part</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove" invoker="remove">
        <doc xml:space="preserve">Removes the specified mime part from the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the part was removed or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">mime part</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_at" invoker="remove_at">
        <doc xml:space="preserve">Removes the mime part at position @index from the multipart.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the mime part that was removed or %NULL if the part was not contained within the multipart.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">position of the mime part to remove</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_boundary" invoker="set_boundary">
        <doc xml:space="preserve">Sets @boundary as the boundary on the multipart. If @boundary is
%NULL, then a boundary will be auto-generated for you.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="boundary" transfer-ownership="none">
            <doc xml:space="preserve">boundary or %NULL to autogenerate one</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add" c:identifier="g_mime_multipart_add">
        <doc xml:space="preserve">Adds a mime part to the multipart.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear" c:identifier="g_mime_multipart_clear">
        <doc xml:space="preserve">Removes all subparts from @multipart.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="contains" c:identifier="g_mime_multipart_contains">
        <doc xml:space="preserve">Checks if @part is contained within @multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @part is a subpart of @multipart or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">mime part</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="foreach" c:identifier="g_mime_multipart_foreach">
        <doc xml:space="preserve">Recursively calls @callback on each of @multipart's subparts.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="call"
                     closure="1">
            <doc xml:space="preserve">function to call for each of @multipart's subparts.</doc>
            <type name="ObjectForeachFunc" c:type="GMimeObjectForeachFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user-supplied callback data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_boundary" c:identifier="g_mime_multipart_get_boundary">
        <doc xml:space="preserve">Gets the boundary on the multipart. If the internal boundary is
%NULL, then an auto-generated boundary will be set on the multipart
and returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the boundary on the multipart.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_count" c:identifier="g_mime_multipart_get_count">
        <doc xml:space="preserve">Gets the number of mime parts contained within the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of mime parts contained within the multipart.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_part" c:identifier="g_mime_multipart_get_part">
        <doc xml:space="preserve">Gets the mime part at position @index within the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the mime part at position @index.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">position of the mime part</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_postface" c:identifier="g_mime_multipart_get_postface">
        <doc xml:space="preserve">Gets the postface on the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a pointer to the postface string on the multipart.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_preface" c:identifier="g_mime_multipart_get_preface">
        <doc xml:space="preserve">Gets the preface on the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a pointer to the preface string on the multipart.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_subpart_from_content_id"
              c:identifier="g_mime_multipart_get_subpart_from_content_id">
        <doc xml:space="preserve">Gets the mime part with the content-id @content_id from the
multipart @multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GMimeObject whose content-id matches the search string, or %NULL if a match cannot be found.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a multipart</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="content_id" transfer-ownership="none">
            <doc xml:space="preserve">the content id of the part to look for</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="index_of" c:identifier="g_mime_multipart_index_of">
        <doc xml:space="preserve">Gets the index of @part within @multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the index of @part within @multipart or %-1 if not found.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">mime part</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert" c:identifier="g_mime_multipart_insert">
        <doc xml:space="preserve">Inserts the specified mime part into the multipart at the position
@index.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">position to insert the mime part</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">mime part</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="g_mime_multipart_remove">
        <doc xml:space="preserve">Removes the specified mime part from the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the part was removed or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="part" transfer-ownership="none">
            <doc xml:space="preserve">mime part</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_at" c:identifier="g_mime_multipart_remove_at">
        <doc xml:space="preserve">Removes the mime part at position @index from the multipart.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the mime part that was removed or %NULL if the part was not contained within the multipart.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">position of the mime part to remove</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="replace" c:identifier="g_mime_multipart_replace">
        <doc xml:space="preserve">Replaces the mime part at position @index within @multipart with
@replacement.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the mime part that was replaced or %NULL if the part was not contained within the multipart.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">position of the mime part to replace</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="replacement" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject to use as the replacement</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_boundary" c:identifier="g_mime_multipart_set_boundary">
        <doc xml:space="preserve">Sets @boundary as the boundary on the multipart. If @boundary is
%NULL, then a boundary will be auto-generated for you.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="boundary" transfer-ownership="none">
            <doc xml:space="preserve">boundary or %NULL to autogenerate one</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_postface" c:identifier="g_mime_multipart_set_postface">
        <doc xml:space="preserve">Sets the postface on the multipart.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="postface" transfer-ownership="none">
            <doc xml:space="preserve">postface</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_preface" c:identifier="g_mime_multipart_set_preface">
        <doc xml:space="preserve">Sets the preface on the multipart.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="multipart" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <type name="Multipart" c:type="GMimeMultipart*"/>
          </instance-parameter>
          <parameter name="preface" transfer-ownership="none">
            <doc xml:space="preserve">preface</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Object" c:type="GMimeObject"/>
      </field>
      <field name="children">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="boundary">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="preface">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="postface">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="MultipartClass"
            c:type="GMimeMultipartClass"
            glib:is-gtype-struct-for="Multipart">
      <field name="parent_class">
        <type name="ObjectClass" c:type="GMimeObjectClass"/>
      </field>
      <field name="clear">
        <callback name="clear">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="add">
        <callback name="add">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
            <parameter name="part" transfer-ownership="none">
              <doc xml:space="preserve">a #GMimeObject</doc>
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="insert">
        <callback name="insert">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <doc xml:space="preserve">position to insert the mime part</doc>
              <type name="gint" c:type="int"/>
            </parameter>
            <parameter name="part" transfer-ownership="none">
              <doc xml:space="preserve">mime part</doc>
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove">
        <callback name="remove">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the part was removed or %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
            <parameter name="part" transfer-ownership="none">
              <doc xml:space="preserve">mime part</doc>
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_at">
        <callback name="remove_at">
          <return-value transfer-ownership="full">
            <doc xml:space="preserve">the mime part that was removed or %NULL if the part was not contained within the multipart.</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <doc xml:space="preserve">position of the mime part to remove</doc>
              <type name="gint" c:type="int"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_part">
        <callback name="get_part">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the mime part at position @index.</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <doc xml:space="preserve">position of the mime part</doc>
              <type name="gint" c:type="int"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="contains">
        <callback name="contains">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if @part is a subpart of @multipart or %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
            <parameter name="part" transfer-ownership="none">
              <doc xml:space="preserve">mime part</doc>
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="index_of">
        <callback name="index_of">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the index of @part within @multipart or %-1 if not found.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
            <parameter name="part" transfer-ownership="none">
              <doc xml:space="preserve">mime part</doc>
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_count">
        <callback name="get_count">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the number of mime parts contained within the multipart.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_boundary">
        <callback name="set_boundary">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
            <parameter name="boundary" transfer-ownership="none">
              <doc xml:space="preserve">boundary or %NULL to autogenerate one</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_boundary">
        <callback name="get_boundary">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the boundary on the multipart.</doc>
            <type name="utf8" c:type="const char*"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="MultipartEncrypted"
           c:symbol-prefix="multipart_encrypted"
           c:type="GMimeMultipartEncrypted"
           parent="Multipart"
           glib:type-name="GMimeMultipartEncrypted"
           glib:get-type="g_mime_multipart_encrypted_get_type"
           glib:type-struct="MultipartEncryptedClass">
      <doc xml:space="preserve">A multipart/encrypted MIME part.</doc>
      <constructor name="new" c:identifier="g_mime_multipart_encrypted_new">
        <doc xml:space="preserve">Creates a new MIME multipart/encrypted object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty MIME multipart/encrypted object.</doc>
          <type name="MultipartEncrypted" c:type="GMimeMultipartEncrypted*"/>
        </return-value>
      </constructor>
      <method name="decrypt"
              c:identifier="g_mime_multipart_encrypted_decrypt"
              throws="1">
        <doc xml:space="preserve">Attempts to decrypt the encrypted MIME part contained within the
multipart/encrypted object @mpe using the @ctx decryption context.

If @result is non-%NULL, then on a successful decrypt operation, it will be
updated to point to a newly-allocated #GMimeDecryptResult with signature
status information as well as a list of recipients that the part was
encrypted to.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the decrypted MIME part on success or %NULL on fail. If the decryption fails, an exception will be set on @err to provide information as to why the failure occured.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mpe" transfer-ownership="none">
            <doc xml:space="preserve">multipart/encrypted object</doc>
            <type name="MultipartEncrypted" c:type="GMimeMultipartEncrypted*"/>
          </instance-parameter>
          <parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">decryption context</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDecryptionResult</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult**"/>
          </parameter>
        </parameters>
      </method>
      <method name="encrypt"
              c:identifier="g_mime_multipart_encrypted_encrypt"
              throws="1">
        <doc xml:space="preserve">Attempts to encrypt (and conditionally sign) the @content MIME part
to the public keys of @recipients using the @ctx encryption
context. If successful, the encrypted #GMimeObject is set as the
encrypted part of the multipart/encrypted object @mpe.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail. If the encryption fails, an exception will be set on @err to provide information as to why the failure occured.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="mpe" transfer-ownership="none">
            <doc xml:space="preserve">multipart/encrypted object</doc>
            <type name="MultipartEncrypted" c:type="GMimeMultipartEncrypted*"/>
          </instance-parameter>
          <parameter name="content" transfer-ownership="none">
            <doc xml:space="preserve">MIME part to encrypt</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
          <parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">encryption context</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </parameter>
          <parameter name="sign" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the content should also be signed or %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="userid" transfer-ownership="none">
            <doc xml:space="preserve">user id to use for signing (only used if @sign is %TRUE)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">digest algorithm to use when signing</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
          <parameter name="recipients" transfer-ownership="none">
            <doc xml:space="preserve">an array of recipients to encrypt to</doc>
            <array name="GLib.PtrArray" c:type="GPtrArray*">
              <type name="utf8"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Multipart" c:type="GMimeMultipart"/>
      </field>
    </class>
    <record name="MultipartEncryptedClass"
            c:type="GMimeMultipartEncryptedClass"
            glib:is-gtype-struct-for="MultipartEncrypted">
      <field name="parent_class">
        <type name="MultipartClass" c:type="GMimeMultipartClass"/>
      </field>
    </record>
    <class name="MultipartSigned"
           c:symbol-prefix="multipart_signed"
           c:type="GMimeMultipartSigned"
           parent="Multipart"
           glib:type-name="GMimeMultipartSigned"
           glib:get-type="g_mime_multipart_signed_get_type"
           glib:type-struct="MultipartSignedClass">
      <doc xml:space="preserve">A multipart/signed MIME part.</doc>
      <constructor name="new" c:identifier="g_mime_multipart_signed_new">
        <doc xml:space="preserve">Creates a new MIME multipart/signed object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty MIME multipart/signed object.</doc>
          <type name="MultipartSigned" c:type="GMimeMultipartSigned*"/>
        </return-value>
      </constructor>
      <method name="sign"
              c:identifier="g_mime_multipart_signed_sign"
              throws="1">
        <doc xml:space="preserve">Attempts to sign the @content MIME part with @userid's private key
using the @ctx signing context with the @digest algorithm. If
successful, the signed #GMimeObject is set as the signed part of
the multipart/signed object @mps.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail. If the signing fails, an exception will be set on @err to provide information as to why the failure occured.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="mps" transfer-ownership="none">
            <doc xml:space="preserve">multipart/signed object</doc>
            <type name="MultipartSigned" c:type="GMimeMultipartSigned*"/>
          </instance-parameter>
          <parameter name="content" transfer-ownership="none">
            <doc xml:space="preserve">MIME part to sign</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
          <parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">encryption crypto context</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </parameter>
          <parameter name="userid" transfer-ownership="none">
            <doc xml:space="preserve">user id to sign with</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">preferred digest algorithm</doc>
            <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify"
              c:identifier="g_mime_multipart_signed_verify"
              throws="1">
        <doc xml:space="preserve">Attempts to verify the signed MIME part contained within the
multipart/signed object @mps using the @ctx crypto context.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeSignatureList object on success or %NULL on fail. If the verification fails, an exception will be set on @err to provide information as to why the failure occured.</doc>
          <type name="SignatureList" c:type="GMimeSignatureList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mps" transfer-ownership="none">
            <doc xml:space="preserve">multipart/signed object</doc>
            <type name="MultipartSigned" c:type="GMimeMultipartSigned*"/>
          </instance-parameter>
          <parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">encryption crypto context</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Multipart" c:type="GMimeMultipart"/>
      </field>
    </class>
    <record name="MultipartSignedClass"
            c:type="GMimeMultipartSignedClass"
            glib:is-gtype-struct-for="MultipartSigned">
      <field name="parent_class">
        <type name="MultipartClass" c:type="GMimeMultipartClass"/>
      </field>
    </record>
    <class name="Object"
           c:symbol-prefix="object"
           c:type="GMimeObject"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="GMimeObject"
           glib:get-type="g_mime_object_get_type"
           glib:type-struct="ObjectClass">
      <doc xml:space="preserve">Base class for all MIME parts.</doc>
      <constructor name="new" c:identifier="g_mime_object_new">
        <doc xml:space="preserve">Performs a lookup of registered #GMimeObject subclasses, registered
using g_mime_object_register_type(), to find an appropriate class
capable of handling MIME parts of the specified Content-Type. If no
class has been registered to handle that type, it looks for a
registered class that can handle @content_type's media type. If
that also fails, then it will use the generic part class,
#GMimePart.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an appropriate #GMimeObject registered to handle MIME parts appropriate for @content_type.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <parameter name="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_type" c:identifier="g_mime_object_new_type">
        <doc xml:space="preserve">Performs a lookup of registered #GMimeObject subclasses, registered
using g_mime_object_register_type(), to find an appropriate class
capable of handling MIME parts of type @type/@subtype. If no class
has been registered to handle that type, it looks for a registered
class that can handle @type. If that also fails, then it will use
the generic part class, #GMimePart.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an appropriate #GMimeObject registered to handle mime-types of @type/@subtype.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">mime type</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="subtype" transfer-ownership="none">
            <doc xml:space="preserve">mime subtype</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="register_type"
                c:identifier="g_mime_object_register_type">
        <doc xml:space="preserve">Registers the object type @object_type for use with the
g_mime_object_new_type() convenience function.

Note: You may use the wildcard "*" to match any type and/or
subtype.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">mime type</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="subtype" transfer-ownership="none">
            <doc xml:space="preserve">mime subtype</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="object_type" transfer-ownership="none">
            <doc xml:space="preserve">object type</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </function>
      <function name="type_registry_init"
                c:identifier="g_mime_object_type_registry_init">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <function name="type_registry_shutdown"
                c:identifier="g_mime_object_type_registry_shutdown">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <virtual-method name="append_header" invoker="append_header">
        <doc xml:space="preserve">Appends a raw, unprocessed header to the MIME object.

Note: @value should be encoded with a function such as
g_mime_utils_header_encode_text().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="encode" invoker="encode">
        <doc xml:space="preserve">Calculates and sets the most efficient Content-Transfer-Encoding
for this #GMimeObject and all child parts based on the @constraint
provided.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="constraint" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncodingConstraint</doc>
            <type name="EncodingConstraint" c:type="GMimeEncodingConstraint"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_header" invoker="get_header">
        <doc xml:space="preserve">Gets the raw, unprocessed value of the requested header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the raw, unprocessed value of the requested header if it exists or %NULL otherwise.  Note: The returned value should be decoded with a function such as g_mime_utils_header_decode_text() before displaying to the user.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_headers" invoker="get_headers">
        <doc xml:space="preserve">Allocates a string buffer containing all of the MIME object's raw
headers.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an allocated string containing all of the raw MIME headers.  Note: The returned string will not be suitable for display.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="prepend_header" invoker="prepend_header">
        <doc xml:space="preserve">Prepends a raw, unprocessed header to the MIME object.

Note: @value should be encoded with a function such as
g_mime_utils_header_encode_text().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_header" invoker="remove_header">
        <doc xml:space="preserve">Removed the specified header if it exists.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the header was removed or %FALSE if it could not be found.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_content_type" invoker="set_content_type">
        <doc xml:space="preserve">Sets the content-type for the specified MIME object and then
serializes it to the Content-Type header field.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_header" invoker="set_header">
        <doc xml:space="preserve">Sets an arbitrary raw, unprocessed header on the MIME object.

Note: @value should be encoded with a function such as
g_mime_utils_header_encode_text().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write_to_stream" invoker="write_to_stream">
        <doc xml:space="preserve">Write the contents of the MIME object to @stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="append_header" c:identifier="g_mime_object_append_header">
        <doc xml:space="preserve">Appends a raw, unprocessed header to the MIME object.

Note: @value should be encoded with a function such as
g_mime_utils_header_encode_text().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="encode" c:identifier="g_mime_object_encode">
        <doc xml:space="preserve">Calculates and sets the most efficient Content-Transfer-Encoding
for this #GMimeObject and all child parts based on the @constraint
provided.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="constraint" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncodingConstraint</doc>
            <type name="EncodingConstraint" c:type="GMimeEncodingConstraint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_content_disposition"
              c:identifier="g_mime_object_get_content_disposition">
        <doc xml:space="preserve">Gets the #GMimeContentDisposition for the specified MIME object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GMimeContentDisposition set on the MIME object.</doc>
          <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_content_disposition_parameter"
              c:identifier="g_mime_object_get_content_disposition_parameter">
        <doc xml:space="preserve">Gets the value of the Content-Disposition parameter specified by
@name, or %NULL if the parameter does not exist.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the value of the requested content-disposition param or %NULL if the param doesn't exist. If the param is set, the returned string will be in UTF-8.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="attribute" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_content_id"
              c:identifier="g_mime_object_get_content_id">
        <doc xml:space="preserve">Gets the Content-Id of the MIME object or NULL if one is not set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a const pointer to the Content-Id header.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_content_type"
              c:identifier="g_mime_object_get_content_type">
        <doc xml:space="preserve">Gets the #GMimeContentType object for the given MIME object or
%NULL on fail.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the content-type object for the specified MIME object.</doc>
          <type name="ContentType" c:type="GMimeContentType*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_content_type_parameter"
              c:identifier="g_mime_object_get_content_type_parameter">
        <doc xml:space="preserve">Gets the value of the content-type param @name set on the MIME part
@object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the value of the requested content-type param or %NULL if the param doesn't exist. If the param is set, the returned string will be in UTF-8.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">param name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_disposition"
              c:identifier="g_mime_object_get_disposition">
        <doc xml:space="preserve">Gets the MIME object's disposition if set or %NULL otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the disposition string which is probably one of #GMIME_DISPOSITION_ATTACHMENT or #GMIME_DISPOSITION_INLINE.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_header" c:identifier="g_mime_object_get_header">
        <doc xml:space="preserve">Gets the raw, unprocessed value of the requested header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the raw, unprocessed value of the requested header if it exists or %NULL otherwise.  Note: The returned value should be decoded with a function such as g_mime_utils_header_decode_text() before displaying to the user.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_header_list"
              c:identifier="g_mime_object_get_header_list">
        <doc xml:space="preserve">Get the header list for @object.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GMimeHeaderList for @object. Do not free this pointer when you are done with it.</doc>
          <type name="HeaderList" c:type="GMimeHeaderList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_headers" c:identifier="g_mime_object_get_headers">
        <doc xml:space="preserve">Allocates a string buffer containing all of the MIME object's raw
headers.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an allocated string containing all of the raw MIME headers.  Note: The returned string will not be suitable for display.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="prepend_header"
              c:identifier="g_mime_object_prepend_header">
        <doc xml:space="preserve">Prepends a raw, unprocessed header to the MIME object.

Note: @value should be encoded with a function such as
g_mime_utils_header_encode_text().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_header" c:identifier="g_mime_object_remove_header">
        <doc xml:space="preserve">Removed the specified header if it exists.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the header was removed or %FALSE if it could not be found.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_content_disposition"
              c:identifier="g_mime_object_set_content_disposition">
        <doc xml:space="preserve">Set the content disposition for the specified mime part and then
serializes it to the Content-Disposition header field.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="disposition" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentDisposition object</doc>
            <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_content_disposition_parameter"
              c:identifier="g_mime_object_set_content_disposition_parameter">
        <doc xml:space="preserve">Add a content-disposition parameter to the specified mime part.

Note: The @name string should be in US-ASCII while the @value
string should be in UTF-8.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="attribute" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">parameter value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_content_id"
              c:identifier="g_mime_object_set_content_id">
        <doc xml:space="preserve">Sets the Content-Id of the MIME object.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="content_id" transfer-ownership="none">
            <doc xml:space="preserve">content-id (addr-spec portion)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_content_type"
              c:identifier="g_mime_object_set_content_type">
        <doc xml:space="preserve">Sets the content-type for the specified MIME object and then
serializes it to the Content-Type header field.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType object</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_content_type_parameter"
              c:identifier="g_mime_object_set_content_type_parameter">
        <doc xml:space="preserve">Sets the content-type param @name to the value @value.

Note: The @name string should be in US-ASCII while the @value
string should be in UTF-8.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">param name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">param value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_disposition"
              c:identifier="g_mime_object_set_disposition">
        <doc xml:space="preserve">Sets the disposition to @disposition which may be one of
#GMIME_DISPOSITION_ATTACHMENT or #GMIME_DISPOSITION_INLINE or, by
your choice, any other string which would indicate how the MIME
part should be displayed by the MUA.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="disposition" transfer-ownership="none">
            <doc xml:space="preserve">disposition ("attachment" or "inline")</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_header" c:identifier="g_mime_object_set_header">
        <doc xml:space="preserve">Sets an arbitrary raw, unprocessed header on the MIME object.

Note: @value should be encoded with a function such as
g_mime_utils_header_encode_text().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string" c:identifier="g_mime_object_to_string">
        <doc xml:space="preserve">Allocates a string buffer containing the contents of @object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an allocated string containing the contents of the mime object.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write_to_stream"
              c:identifier="g_mime_object_write_to_stream">
        <doc xml:space="preserve">Write the contents of the MIME object to @stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="disposition">
        <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
      </field>
      <field name="content_type">
        <type name="ContentType" c:type="GMimeContentType*"/>
      </field>
      <field name="headers">
        <type name="HeaderList" c:type="GMimeHeaderList*"/>
      </field>
      <field name="content_id">
        <type name="utf8" c:type="char*"/>
      </field>
    </class>
    <record name="ObjectClass"
            c:type="GMimeObjectClass"
            glib:is-gtype-struct-for="Object">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="prepend_header">
        <callback name="prepend_header">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
            <parameter name="header" transfer-ownership="none">
              <doc xml:space="preserve">header name</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <doc xml:space="preserve">header value</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="append_header">
        <callback name="append_header">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
            <parameter name="header" transfer-ownership="none">
              <doc xml:space="preserve">header name</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <doc xml:space="preserve">header value</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_header">
        <callback name="set_header">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
            <parameter name="header" transfer-ownership="none">
              <doc xml:space="preserve">header name</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="value" transfer-ownership="none">
              <doc xml:space="preserve">header value</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_header">
        <callback name="get_header">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the raw, unprocessed value of the requested header if it exists or %NULL otherwise.  Note: The returned value should be decoded with a function such as g_mime_utils_header_decode_text() before displaying to the user.</doc>
            <type name="utf8" c:type="const char*"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
            <parameter name="header" transfer-ownership="none">
              <doc xml:space="preserve">header name</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_header">
        <callback name="remove_header">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the header was removed or %FALSE if it could not be found.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
            <parameter name="header" transfer-ownership="none">
              <doc xml:space="preserve">header name</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_content_type">
        <callback name="set_content_type">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
            <parameter name="content_type" transfer-ownership="none">
              <doc xml:space="preserve">a #GMimeContentType object</doc>
              <type name="ContentType" c:type="GMimeContentType*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_headers">
        <callback name="get_headers">
          <return-value transfer-ownership="full">
            <doc xml:space="preserve">an allocated string containing all of the raw MIME headers.  Note: The returned string will not be suitable for display.</doc>
            <type name="utf8" c:type="char*"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write_to_stream">
        <callback name="write_to_stream">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the number of bytes written or %-1 on fail.</doc>
            <type name="glong" c:type="ssize_t"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
            <parameter name="stream" transfer-ownership="none">
              <doc xml:space="preserve">stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="encode">
        <callback name="encode">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
            <parameter name="constraint" transfer-ownership="none">
              <doc xml:space="preserve">a #GMimeEncodingConstraint</doc>
              <type name="EncodingConstraint"
                    c:type="GMimeEncodingConstraint"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <callback name="ObjectForeachFunc" c:type="GMimeObjectForeachFunc">
      <doc xml:space="preserve">The function signature for a callback to g_mime_message_foreach()
and g_mime_multipart_foreach().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="parent" transfer-ownership="none">
          <doc xml:space="preserve">parent #GMimeObject</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </parameter>
        <parameter name="part" transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeObject</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="2">
          <doc xml:space="preserve">User-supplied callback data.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="Param" c:type="GMimeParam">
      <doc xml:space="preserve">A parameter name/value pair as used for some Content header fields.</doc>
      <field name="next" writable="1">
        <type name="Param" c:type="GMimeParam*"/>
      </field>
      <field name="name" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="value" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <method name="append"
              c:identifier="g_mime_param_append"
              introspectable="0">
        <doc xml:space="preserve">Appends a new parameter with name @name and value @value to the
parameter list @params.</doc>
        <return-value>
          <doc xml:space="preserve">a param list with the new param of name @name and value @value appended to the list of params @params.</doc>
          <type name="Param" c:type="GMimeParam*"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">param list</doc>
            <type name="Param" c:type="GMimeParam*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">new param name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">new param value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="append_param"
              c:identifier="g_mime_param_append_param"
              introspectable="0">
        <doc xml:space="preserve">Appends @param to the param list @params.</doc>
        <return-value>
          <doc xml:space="preserve">a param list with the new param @param appended to the list of params @params.</doc>
          <type name="Param" c:type="GMimeParam*"/>
        </return-value>
        <parameters>
          <instance-parameter name="params" transfer-ownership="none">
            <doc xml:space="preserve">param list</doc>
            <type name="Param" c:type="GMimeParam*"/>
          </instance-parameter>
          <parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">param to append</doc>
            <type name="Param" c:type="GMimeParam*"/>
          </parameter>
        </parameters>
      </method>
      <method name="destroy" c:identifier="g_mime_param_destroy">
        <doc xml:space="preserve">Releases all memory used by this mime param back to the Operating
System.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">Mime param list to destroy</doc>
            <type name="Param" c:type="GMimeParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="g_mime_param_get_name">
        <doc xml:space="preserve">Gets the name of the parameter.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the name of the parameter.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParam</doc>
            <type name="Param" c:type="const GMimeParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value" c:identifier="g_mime_param_get_value">
        <doc xml:space="preserve">Gets the value of the parameter.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the value of the parameter.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParam</doc>
            <type name="Param" c:type="const GMimeParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="next" c:identifier="g_mime_param_next">
        <doc xml:space="preserve">Gets the next #GMimeParam node in the list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the next #GMimeParam node in the list.</doc>
          <type name="Param" c:type="const GMimeParam*"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParam node</doc>
            <type name="Param" c:type="const GMimeParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write_to_string"
              c:identifier="g_mime_param_write_to_string">
        <doc xml:space="preserve">Assumes the output string contains only the Content-* header and
it's immediate value.

Writes the params out to the string @string.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">MIME Param list</doc>
            <type name="Param" c:type="const GMimeParam*"/>
          </instance-parameter>
          <parameter name="fold" transfer-ownership="none">
            <doc xml:space="preserve">specifies whether or not to fold headers</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">output string</doc>
            <type name="GLib.String" c:type="GString*"/>
          </parameter>
        </parameters>
      </method>
      <function name="new" c:identifier="g_mime_param_new" introspectable="0">
        <doc xml:space="preserve">Creates a new #GMimeParam node with name @name and value @value.</doc>
        <return-value>
          <doc xml:space="preserve">a new paramter structure.</doc>
          <type name="Param" c:type="GMimeParam*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">parameter name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">parameter value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new_from_string"
                c:identifier="g_mime_param_new_from_string"
                introspectable="0">
        <doc xml:space="preserve">Creates a parameter list based on the input string.</doc>
        <return-value>
          <doc xml:space="preserve">a #GMimeParam structure based on @string.</doc>
          <type name="Param" c:type="GMimeParam*"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">input string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <class name="Parser"
           c:symbol-prefix="parser"
           c:type="GMimeParser"
           parent="GObject.Object"
           glib:type-name="GMimeParser"
           glib:get-type="g_mime_parser_get_type"
           glib:type-struct="ParserClass">
      <doc xml:space="preserve">A MIME parser context.</doc>
      <constructor name="new" c:identifier="g_mime_parser_new">
        <doc xml:space="preserve">Creates a new parser object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new parser object.</doc>
          <type name="Parser" c:type="GMimeParser*"/>
        </return-value>
      </constructor>
      <constructor name="new_with_stream"
                   c:identifier="g_mime_parser_new_with_stream">
        <doc xml:space="preserve">Creates a new parser object preset to parse @stream.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new parser object.</doc>
          <type name="Parser" c:type="GMimeParser*"/>
        </return-value>
        <parameters>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">raw message or part stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="construct_message"
              c:identifier="g_mime_parser_construct_message">
        <doc xml:space="preserve">Constructs a MIME message from @parser.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a MIME message or %NULL on fail.</doc>
          <type name="Message" c:type="GMimeMessage*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="construct_part"
              c:identifier="g_mime_parser_construct_part">
        <doc xml:space="preserve">Constructs a MIME part from @parser.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a MIME part based on @parser or %NULL on fail.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="eos" c:identifier="g_mime_parser_eos">
        <doc xml:space="preserve">Tests the end-of-stream indicator for @parser's internal stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on EOS or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_from" c:identifier="g_mime_parser_get_from">
        <doc xml:space="preserve">Gets the mbox-style From-line of the most recently parsed message
(gotten from g_mime_parser_construct_message()).</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the mbox-style From-line of the most recently parsed message or %NULL on error.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_from_offset"
              c:identifier="g_mime_parser_get_from_offset">
        <doc xml:space="preserve">Gets the offset of the most recently parsed mbox-style From-line
(gotten from g_mime_parser_construct_message()).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the offset of the most recently parsed mbox-style From-line or %-1 on error.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_headers_begin"
              c:identifier="g_mime_parser_get_headers_begin">
        <doc xml:space="preserve">Gets the stream offset of the beginning of the headers of the most
recently parsed message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the offset of the beginning of the headers of the most recently parsed message or %-1 on error.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_headers_end"
              c:identifier="g_mime_parser_get_headers_end">
        <doc xml:space="preserve">Gets the stream offset of the end of the headers of the most
recently parsed message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the offset of the end of the headers of the most recently parsed message or %-1 on error.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_persist_stream"
              c:identifier="g_mime_parser_get_persist_stream">
        <doc xml:space="preserve">Gets whether or not the underlying stream is persistent.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the @parser will leave the content on disk or %FALSE if it will load the content into memory.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_respect_content_length"
              c:identifier="g_mime_parser_get_respect_content_length">
        <doc xml:space="preserve">Gets whether or not @parser is set to use Content-Length for
determining the offset of the end of the message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether or not @parser is set to use Content-Length for determining the offset of the end of the message.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_scan_from" c:identifier="g_mime_parser_get_scan_from">
        <doc xml:space="preserve">Gets whether or not @parser is set to scan mbox-style From-lines.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether or not @parser is set to scan mbox-style From-lines.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init_with_stream"
              c:identifier="g_mime_parser_init_with_stream">
        <doc xml:space="preserve">Initializes @parser to use @stream.

WARNING: Initializing a parser with a stream is comparable to
selling your soul (@stream) to the devil (@parser). You are
basically giving the parser complete control of the stream, this
means that you had better not touch the stream so long as the
parser is still using it. This means no reading, writing, seeking,
or resetting of the stream. Anything that will/could change the
current stream's offset is PROHIBITED.

It is also recommended that you not use g_mime_stream_tell()
because it will not necessarily give you the current @parser offset
since @parser handles its own internal read-ahead buffer. Instead,
it is recommended that you use g_mime_parser_tell() if you have a
reason to need the current offset of the @parser.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">raw message or part stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_header_regex"
              c:identifier="g_mime_parser_set_header_regex"
              introspectable="0">
        <doc xml:space="preserve">Sets the regular expression pattern @regex on @parser. Whenever a
header matching the pattern @regex is parsed, @header_cb is called
with @user_data as the user_data argument.

If @regex is %NULL, then the previously registered regex callback
is unregistered and no new callback is set.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
          <parameter name="regex" transfer-ownership="none">
            <doc xml:space="preserve">regular expression</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="header_cb" transfer-ownership="none" closure="2">
            <doc xml:space="preserve">callback function</doc>
            <type name="ParserHeaderRegexFunc"
                  c:type="GMimeParserHeaderRegexFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_persist_stream"
              c:identifier="g_mime_parser_set_persist_stream">
        <doc xml:space="preserve">Sets whether or not the @parser's underlying stream is persistent.

If @persist is %TRUE, the @parser will attempt to construct
messages/parts whose content will remain on disk rather than being
loaded into memory so as to reduce memory usage. This is the default.

If @persist is %FALSE, the @parser will always load message content
into memory.

Note: This attribute only serves as a hint to the @parser. If the
underlying stream does not support seeking, then this attribute
will be ignored.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
          <parameter name="persist" transfer-ownership="none">
            <doc xml:space="preserve">persist attribute</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_respect_content_length"
              c:identifier="g_mime_parser_set_respect_content_length">
        <doc xml:space="preserve">Sets whether or not @parser should respect Content-Length headers
when deciding where to look for the start of the next message. Only
used when the parser is also set to scan for From-lines.

Most notably useful when parsing broken Solaris mbox files (See
http://www.jwz.org/doc/content-length.html for details).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
          <parameter name="respect_content_length" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the parser should use Content-Length headers or %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_scan_from" c:identifier="g_mime_parser_set_scan_from">
        <doc xml:space="preserve">Sets whether or not @parser should scan mbox-style From-lines.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
          <parameter name="scan_from" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE to scan From-lines or %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="tell" c:identifier="g_mime_parser_tell">
        <doc xml:space="preserve">Gets the current stream offset from the parser's internal stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the current stream offset from the parser's internal stream or %-1 on error.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="parser" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParser context</doc>
            <type name="Parser" c:type="GMimeParser*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="gpointer" c:type="_GMimeParserPrivate*"/>
      </field>
    </class>
    <record name="ParserClass"
            c:type="GMimeParserClass"
            glib:is-gtype-struct-for="Parser">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <callback name="ParserHeaderRegexFunc" c:type="GMimeParserHeaderRegexFunc">
      <doc xml:space="preserve">Function signature for the callback to
g_mime_parser_set_header_regex().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="parser" transfer-ownership="none">
          <doc xml:space="preserve">The #GMimeParser object.</doc>
          <type name="Parser" c:type="GMimeParser*"/>
        </parameter>
        <parameter name="header" transfer-ownership="none">
          <doc xml:space="preserve">The header field matched.</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">The header field value.</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve">The header field offset.</doc>
          <type name="gint64" c:type="gint64"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="4">
          <doc xml:space="preserve">The user-supplied callback data.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="Part"
           c:symbol-prefix="part"
           c:type="GMimePart"
           parent="Object"
           glib:type-name="GMimePart"
           glib:get-type="g_mime_part_get_type"
           glib:type-struct="PartClass">
      <doc xml:space="preserve">A leaf-node MIME part object.</doc>
      <constructor name="new" c:identifier="g_mime_part_new">
        <doc xml:space="preserve">Creates a new MIME Part object with a default content-type of
text/plain.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty MIME Part object with a default content-type of text/plain.</doc>
          <type name="Part" c:type="GMimePart*"/>
        </return-value>
      </constructor>
      <constructor name="new_with_type"
                   c:identifier="g_mime_part_new_with_type">
        <doc xml:space="preserve">Creates a new MIME Part with a sepcified type.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty MIME Part object with the specified content-type.</doc>
          <type name="Part" c:type="GMimePart*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">content-type string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="subtype" transfer-ownership="none">
            <doc xml:space="preserve">content-subtype string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="set_content_object" invoker="set_content_object">
        <doc xml:space="preserve">Sets the content object on the mime part.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="content" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDataWrapper content object</doc>
            <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_best_content_encoding"
              c:identifier="g_mime_part_get_best_content_encoding">
        <doc xml:space="preserve">Calculates the most efficient content encoding for the @mime_part
given the @constraint.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the best content encoding for the specified mime part.</doc>
          <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="constraint" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncodingConstraint</doc>
            <type name="EncodingConstraint" c:type="GMimeEncodingConstraint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_content_description"
              c:identifier="g_mime_part_get_content_description">
        <doc xml:space="preserve">Gets the value of the Content-Description for the specified mime
part if it exists or %NULL otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the content description for the specified mime part.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_content_encoding"
              c:identifier="g_mime_part_get_content_encoding">
        <doc xml:space="preserve">Gets the content encoding of the mime part.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the content encoding for the specified mime part.</doc>
          <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_content_id" c:identifier="g_mime_part_get_content_id">
        <doc xml:space="preserve">Gets the content-id of the specified mime part if it exists, or
%NULL otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the content id for the specified mime part.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_content_location"
              c:identifier="g_mime_part_get_content_location">
        <doc xml:space="preserve">Gets the value of the Content-Location header if it exists, or
%NULL otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the content location for the specified mime part.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_content_md5"
              c:identifier="g_mime_part_get_content_md5">
        <doc xml:space="preserve">Gets the md5sum contained in the Content-Md5 header of the
specified mime part if it exists, or %NULL otherwise.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the content md5 for the specified mime part.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_content_object"
              c:identifier="g_mime_part_get_content_object">
        <doc xml:space="preserve">Gets the internal data-wrapper of the specified mime part, or %NULL
on error.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the data-wrapper for the mime part's contents.</doc>
          <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_filename" c:identifier="g_mime_part_get_filename">
        <doc xml:space="preserve">Gets the filename of the specificed mime part, or %NULL if the
@mime_part does not have the filename or name parameter set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the filename of the specified @mime_part or %NULL if neither of the parameters is set. If a file name is set, the returned string will be in UTF-8.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_content_description"
              c:identifier="g_mime_part_set_content_description">
        <doc xml:space="preserve">Set the content description for the specified mime part.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:space="preserve">content description</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_content_encoding"
              c:identifier="g_mime_part_set_content_encoding">
        <doc xml:space="preserve">Set the content encoding for the specified mime part.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="encoding" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentEncoding</doc>
            <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_content_id" c:identifier="g_mime_part_set_content_id">
        <doc xml:space="preserve">Set the content id for the specified mime part.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="content_id" transfer-ownership="none">
            <doc xml:space="preserve">content id</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_content_location"
              c:identifier="g_mime_part_set_content_location">
        <doc xml:space="preserve">Set the content location for the specified mime part.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="content_location" transfer-ownership="none">
            <doc xml:space="preserve">content location</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_content_md5"
              c:identifier="g_mime_part_set_content_md5">
        <doc xml:space="preserve">Set the content md5 for the specified mime part.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="content_md5" transfer-ownership="none">
            <doc xml:space="preserve">content md5 or %NULL to generate the md5 digest.</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_content_object"
              c:identifier="g_mime_part_set_content_object">
        <doc xml:space="preserve">Sets the content object on the mime part.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="content" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDataWrapper content object</doc>
            <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_filename" c:identifier="g_mime_part_set_filename">
        <doc xml:space="preserve">Sets the "filename" parameter on the Content-Disposition and also sets the
"name" parameter on the Content-Type.

Note: The @filename string should be in UTF-8.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve">the file name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify_content_md5"
              c:identifier="g_mime_part_verify_content_md5">
        <doc xml:space="preserve">Verify the content md5 for the specified mime part.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the md5 is valid or %FALSE otherwise. Note: will return %FALSE if the mime part does not contain a Content-MD5.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart object</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Object" c:type="GMimeObject"/>
      </field>
      <field name="encoding">
        <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
      </field>
      <field name="content_description">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="content_location">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="content_md5">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="content">
        <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
      </field>
    </class>
    <record name="PartClass"
            c:type="GMimePartClass"
            glib:is-gtype-struct-for="Part">
      <field name="parent_class">
        <type name="ObjectClass" c:type="GMimeObjectClass"/>
      </field>
      <field name="set_content_object">
        <callback name="set_content_object">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mime_part" transfer-ownership="none">
              <type name="Part" c:type="GMimePart*"/>
            </parameter>
            <parameter name="content" transfer-ownership="none">
              <doc xml:space="preserve">a #GMimeDataWrapper content object</doc>
              <type name="DataWrapper" c:type="GMimeDataWrapper*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="PartIter" c:type="GMimePartIter" disguised="1">
      <doc xml:space="preserve">A MIME part iterator.</doc>
      <method name="free" c:identifier="g_mime_part_iter_free">
        <doc xml:space="preserve">Frees the memory allocated by g_mime_part_iter_new().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_current" c:identifier="g_mime_part_iter_get_current">
        <doc xml:space="preserve">Gets the #GMimeObject at the current #GMimePartIter position.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the current #GMimeObject or %NULL if the state of @iter is invalid.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parent" c:identifier="g_mime_part_iter_get_parent">
        <doc xml:space="preserve">Gets the parent of the #GMimeObject at the current #GMimePartIter
position.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parent #GMimeObject or %NULL if the state of @iter is invalid.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_path" c:identifier="g_mime_part_iter_get_path">
        <doc xml:space="preserve">Gets the path of the current #GMimeObject in the MIME structure
used to initialize @iter.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string representation of the path to the #GMimeObject at the current #GMimePartIter position.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_toplevel" c:identifier="g_mime_part_iter_get_toplevel">
        <doc xml:space="preserve">Gets the toplevel #GMimeObject used to initialize @iter.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the toplevel #GMimeObject.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_valid" c:identifier="g_mime_part_iter_is_valid">
        <doc xml:space="preserve">Checks that the current state of @iter is valid.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @iter is valid or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="jump_to" c:identifier="g_mime_part_iter_jump_to">
        <doc xml:space="preserve">Updates the state of @iter to point to the #GMimeObject specified
by @path.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the #GMimeObject specified by @path exists or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">a string representing the path to jump to</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="next" c:identifier="g_mime_part_iter_next">
        <doc xml:space="preserve">Advances to the next part in the MIME structure used to initialize
@iter.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="prev" c:identifier="g_mime_part_iter_prev">
        <doc xml:space="preserve">Rewinds to the previous part in the MIME structure used to
initialize @iter.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="g_mime_part_iter_remove">
        <doc xml:space="preserve">Removes the #GMimeObject at the current position from its
parent. If successful, @iter is advanced to the next position
(since the current position will become invalid).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the part at the current position was removed or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="replace" c:identifier="g_mime_part_iter_replace">
        <doc xml:space="preserve">Replaces the #GMimeObject at the current position with @replacement.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the part at the current position was replaced or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
          <parameter name="replacement" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="g_mime_part_iter_reset">
        <doc xml:space="preserve">Resets the state of @iter to its initial state.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePartIter</doc>
            <type name="PartIter" c:type="GMimePartIter*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="new"
                c:identifier="g_mime_part_iter_new"
                introspectable="0">
        <doc xml:space="preserve">Creates a new #GMimePartIter for iterating over @toplevel's subparts.</doc>
        <return-value>
          <doc xml:space="preserve">a newly allocated #GMimePartIter which should be freed using g_mime_part_iter_free() when finished with it.</doc>
          <type name="PartIter" c:type="GMimePartIter*"/>
        </return-value>
        <parameters>
          <parameter name="toplevel" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject to use as the toplevel</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <callback name="PasswordRequestFunc"
              c:type="GMimePasswordRequestFunc"
              throws="1">
      <doc xml:space="preserve">A password request callback allowing a #GMimeCryptoContext to
prompt the user for a password for a given key.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE on success or %FALSE on error.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="ctx" transfer-ownership="none">
          <doc xml:space="preserve">the #GMimeCryptoContext making the request</doc>
          <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
        </parameter>
        <parameter name="user_id" transfer-ownership="none">
          <doc xml:space="preserve">the user_id of the password being requested</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="prompt_ctx" transfer-ownership="none">
          <doc xml:space="preserve">a string containing some helpful context for the prompt</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="reprompt" transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if this password request is a reprompt due to a previously bad password response</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="response" transfer-ownership="none">
          <doc xml:space="preserve">a stream for the application to write the password to (followed by a newline '\n' character)</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </parameter>
      </parameters>
    </callback>
    <class name="Pkcs7Context"
           c:symbol-prefix="pkcs7_context"
           c:type="GMimePkcs7Context"
           parent="CryptoContext"
           glib:type-name="GMimePkcs7Context"
           glib:get-type="g_mime_pkcs7_context_get_type"
           glib:type-struct="Pkcs7ContextClass">
      <doc xml:space="preserve">A PKCS7 crypto context.</doc>
      <constructor name="new"
                   c:identifier="g_mime_pkcs7_context_new"
                   introspectable="0">
        <doc xml:space="preserve">Creates a new pkcs7 crypto context object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new pkcs7 crypto context object.</doc>
          <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
        </return-value>
        <parameters>
          <parameter name="request_passwd" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePasswordRequestFunc</doc>
            <type name="PasswordRequestFunc"
                  c:type="GMimePasswordRequestFunc"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_always_trust"
              c:identifier="g_mime_pkcs7_context_get_always_trust">
        <doc xml:space="preserve">Gets the @always_trust flag on the pkcs7 context.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the @always_trust flag on the pkcs7 context.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePkcs7Context</doc>
            <type name="Pkcs7Context" c:type="GMimePkcs7Context*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_always_trust"
              c:identifier="g_mime_pkcs7_context_set_always_trust">
        <doc xml:space="preserve">Sets the @always_trust flag on the pkcs7 context which is used for
encryption.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePkcs7Context</doc>
            <type name="Pkcs7Context" c:type="GMimePkcs7Context*"/>
          </instance-parameter>
          <parameter name="always_trust" transfer-ownership="none">
            <doc xml:space="preserve">always trust flag</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="CryptoContext" c:type="GMimeCryptoContext"/>
      </field>
      <field name="priv">
        <type name="gpointer" c:type="_GMimePkcs7ContextPrivate*"/>
      </field>
    </class>
    <record name="Pkcs7ContextClass"
            c:type="GMimePkcs7ContextClass"
            glib:is-gtype-struct-for="Pkcs7Context">
      <field name="parent_class">
        <type name="CryptoContextClass" c:type="GMimeCryptoContextClass"/>
      </field>
    </record>
    <enumeration name="PubKeyAlgo" c:type="GMimePubKeyAlgo">
      <doc xml:space="preserve">A public-key algorithm.</doc>
      <member name="default"
              value="0"
              c:identifier="GMIME_PUBKEY_ALGO_DEFAULT">
        <doc xml:space="preserve">The default public-key algorithm.</doc>
      </member>
      <member name="rsa" value="1" c:identifier="GMIME_PUBKEY_ALGO_RSA">
        <doc xml:space="preserve">The RSA algorithm.</doc>
      </member>
      <member name="rsa_e" value="2" c:identifier="GMIME_PUBKEY_ALGO_RSA_E">
        <doc xml:space="preserve">An encryption-only RSA algorithm.</doc>
      </member>
      <member name="rsa_s" value="3" c:identifier="GMIME_PUBKEY_ALGO_RSA_S">
        <doc xml:space="preserve">A signature-only RSA algorithm.</doc>
      </member>
      <member name="elg_e" value="16" c:identifier="GMIME_PUBKEY_ALGO_ELG_E">
        <doc xml:space="preserve">An encryption-only ElGamal algorithm.</doc>
      </member>
      <member name="dsa" value="17" c:identifier="GMIME_PUBKEY_ALGO_DSA">
        <doc xml:space="preserve">The DSA algorithm.</doc>
      </member>
      <member name="elg" value="20" c:identifier="GMIME_PUBKEY_ALGO_ELG">
        <doc xml:space="preserve">The ElGamal algorithm.</doc>
      </member>
    </enumeration>
    <enumeration name="RecipientType" c:type="GMimeRecipientType">
      <doc xml:space="preserve">A message recipient type.</doc>
      <member name="to" value="0" c:identifier="GMIME_RECIPIENT_TYPE_TO">
        <doc xml:space="preserve">Represents the recipients in the To: header.</doc>
      </member>
      <member name="cc" value="1" c:identifier="GMIME_RECIPIENT_TYPE_CC">
        <doc xml:space="preserve">Represents the recipients in the Cc: header.</doc>
      </member>
      <member name="bcc" value="2" c:identifier="GMIME_RECIPIENT_TYPE_BCC">
        <doc xml:space="preserve">Represents the recipients in the Bcc: header.</doc>
      </member>
    </enumeration>
    <record name="References" c:type="GMimeReferences">
      <doc xml:space="preserve">A List of references, as per the References or In-Reply-To header
fields.</doc>
      <field name="next" writable="1">
        <type name="References" c:type="GMimeReferences*"/>
      </field>
      <field name="msgid" writable="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <method name="free" c:identifier="g_mime_references_free">
        <doc xml:space="preserve">Frees the #GMimeReferences list.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeReferences list</doc>
            <type name="References" c:type="GMimeReferences*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_message_id"
              c:identifier="g_mime_references_get_message_id">
        <doc xml:space="preserve">Gets the Message-Id reference from the #GMimeReferences node.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the Message-Id reference from the #GMimeReferences node.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeReferences list</doc>
            <type name="References" c:type="const GMimeReferences*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_next" c:identifier="g_mime_references_get_next">
        <doc xml:space="preserve">Advances to the next reference node in the #GMimeReferences list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the next reference node in the #GMimeReferences list.</doc>
          <type name="References" c:type="const GMimeReferences*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ref" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeReferences list</doc>
            <type name="References" c:type="const GMimeReferences*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="append" c:identifier="g_mime_references_append">
        <doc xml:space="preserve">Appends a reference to msgid to the list of references.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve">the address of a #GMimeReferences list</doc>
            <type name="References" c:type="GMimeReferences**"/>
          </parameter>
          <parameter name="msgid" transfer-ownership="none">
            <doc xml:space="preserve">a message-id string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <function name="clear" c:identifier="g_mime_references_clear">
        <doc xml:space="preserve">Clears the #GMimeReferences list and resets it to %NULL.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve">address of a #GMimeReferences list</doc>
            <type name="References" c:type="GMimeReferences**"/>
          </parameter>
        </parameters>
      </function>
      <function name="decode"
                c:identifier="g_mime_references_decode"
                introspectable="0">
        <doc xml:space="preserve">Decodes a list of msg-ids as in the References and/or In-Reply-To
headers defined in rfc822.</doc>
        <return-value>
          <doc xml:space="preserve">a list of referenced msg-ids.</doc>
          <type name="References" c:type="GMimeReferences*"/>
        </return-value>
        <parameters>
          <parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve">string containing a list of msg-ids</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="SeekWhence" c:type="GMimeSeekWhence">
      <doc xml:space="preserve">Relative seek position.</doc>
      <member name="set" value="0" c:identifier="GMIME_STREAM_SEEK_SET">
        <doc xml:space="preserve">Seek relative to the beginning of the stream.</doc>
      </member>
      <member name="cur" value="1" c:identifier="GMIME_STREAM_SEEK_CUR">
        <doc xml:space="preserve">Seek relative to the current position in the stream.</doc>
      </member>
      <member name="end" value="2" c:identifier="GMIME_STREAM_SEEK_END">
        <doc xml:space="preserve">Seek relative to the end of the stream.</doc>
      </member>
    </enumeration>
    <class name="Signature"
           c:symbol-prefix="signature"
           c:type="GMimeSignature"
           parent="GObject.Object"
           glib:type-name="GMimeSignature"
           glib:get-type="g_mime_signature_get_type"
           glib:type-struct="SignatureClass">
      <doc xml:space="preserve">An object containing useful information about a signature.</doc>
      <constructor name="new" c:identifier="g_mime_signature_new">
        <doc xml:space="preserve">Creates a new #GMimeSignature object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeSignature object.</doc>
          <type name="Signature" c:type="GMimeSignature*"/>
        </return-value>
      </constructor>
      <method name="get_certificate"
              c:identifier="g_mime_signature_get_certificate">
        <doc xml:space="preserve">Get the signature's certificate.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the signature's certificate.</doc>
          <type name="Certificate" c:type="GMimeCertificate*"/>
        </return-value>
        <parameters>
          <instance-parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_created" c:identifier="g_mime_signature_get_created">
        <doc xml:space="preserve">Get the creation date of the signature.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the creation date of the signature or %-1 if unknown.</doc>
          <type name="glong" c:type="time_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_errors" c:identifier="g_mime_signature_get_errors">
        <doc xml:space="preserve">Get the signature errors. If the #GMimeSignatureStatus returned from
g_mime_signature_get_status() is not #GMIME_SIGNATURE_STATUS_GOOD, then the
errors may provide a clue as to why.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a bitfield of errors.</doc>
          <type name="SignatureError" c:type="GMimeSignatureError"/>
        </return-value>
        <parameters>
          <instance-parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_expires" c:identifier="g_mime_signature_get_expires">
        <doc xml:space="preserve">Get the expiration date of the signature.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the expiration date of the signature or %-1 if unknown.</doc>
          <type name="glong" c:type="time_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_status" c:identifier="g_mime_signature_get_status">
        <doc xml:space="preserve">Get the signature status.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the signature status.</doc>
          <type name="SignatureStatus" c:type="GMimeSignatureStatus"/>
        </return-value>
        <parameters>
          <instance-parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_certificate"
              c:identifier="g_mime_signature_set_certificate">
        <doc xml:space="preserve">Set the signature's certificate.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </instance-parameter>
          <parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCertificate</doc>
            <type name="Certificate" c:type="GMimeCertificate*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_created" c:identifier="g_mime_signature_set_created">
        <doc xml:space="preserve">Set the creation date of the signature.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </instance-parameter>
          <parameter name="created" transfer-ownership="none">
            <doc xml:space="preserve">creation date</doc>
            <type name="glong" c:type="time_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_errors" c:identifier="g_mime_signature_set_errors">
        <doc xml:space="preserve">Set the errors on the signature.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </instance-parameter>
          <parameter name="errors" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureError</doc>
            <type name="SignatureError" c:type="GMimeSignatureError"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_expires" c:identifier="g_mime_signature_set_expires">
        <doc xml:space="preserve">Set the expiration date of the signature.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </instance-parameter>
          <parameter name="expires" transfer-ownership="none">
            <doc xml:space="preserve">expiration date</doc>
            <type name="glong" c:type="time_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_status" c:identifier="g_mime_signature_set_status">
        <doc xml:space="preserve">Set the status on the signature.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </instance-parameter>
          <parameter name="status" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureStatus</doc>
            <type name="SignatureStatus" c:type="GMimeSignatureStatus"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="status">
        <type name="SignatureStatus" c:type="GMimeSignatureStatus"/>
      </field>
      <field name="errors">
        <type name="SignatureError" c:type="GMimeSignatureError"/>
      </field>
      <field name="cert">
        <type name="Certificate" c:type="GMimeCertificate*"/>
      </field>
      <field name="created">
        <type name="glong" c:type="time_t"/>
      </field>
      <field name="expires">
        <type name="glong" c:type="time_t"/>
      </field>
    </class>
    <record name="SignatureClass"
            c:type="GMimeSignatureClass"
            glib:is-gtype-struct-for="Signature">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <bitfield name="SignatureError" c:type="GMimeSignatureError">
      <doc xml:space="preserve">Possible errors that a #GMimeSignature could have.</doc>
      <member name="none" value="0" c:identifier="GMIME_SIGNATURE_ERROR_NONE">
        <doc xml:space="preserve">No error.</doc>
      </member>
      <member name="expsig"
              value="1"
              c:identifier="GMIME_SIGNATURE_ERROR_EXPSIG">
        <doc xml:space="preserve">Expired signature.</doc>
      </member>
      <member name="no_pubkey"
              value="2"
              c:identifier="GMIME_SIGNATURE_ERROR_NO_PUBKEY">
        <doc xml:space="preserve">No public key found.</doc>
      </member>
      <member name="expkeysig"
              value="4"
              c:identifier="GMIME_SIGNATURE_ERROR_EXPKEYSIG">
        <doc xml:space="preserve">Expired signature key.</doc>
      </member>
      <member name="revkeysig"
              value="8"
              c:identifier="GMIME_SIGNATURE_ERROR_REVKEYSIG">
        <doc xml:space="preserve">Revoked signature key.</doc>
      </member>
      <member name="unsupp_algo"
              value="16"
              c:identifier="GMIME_SIGNATURE_ERROR_UNSUPP_ALGO">
        <doc xml:space="preserve">Unsupported algorithm.</doc>
      </member>
    </bitfield>
    <class name="SignatureList"
           c:symbol-prefix="signature_list"
           c:type="GMimeSignatureList"
           parent="GObject.Object"
           glib:type-name="GMimeSignatureList"
           glib:get-type="g_mime_signature_list_get_type"
           glib:type-struct="SignatureListClass">
      <doc xml:space="preserve">A collection of #GMimeSignature objects.</doc>
      <constructor name="new" c:identifier="g_mime_signature_list_new">
        <doc xml:space="preserve">Creates a new #GMimeSignatureList.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeSignatureList.</doc>
          <type name="SignatureList" c:type="GMimeSignatureList*"/>
        </return-value>
      </constructor>
      <method name="add" c:identifier="g_mime_signature_list_add">
        <doc xml:space="preserve">Adds a #GMimeSignature to the #GMimeSignatureList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the index of the added #GMimeSignature.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureList</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </instance-parameter>
          <parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear" c:identifier="g_mime_signature_list_clear">
        <doc xml:space="preserve">Clears the list of addresses.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureList</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="contains" c:identifier="g_mime_signature_list_contains">
        <doc xml:space="preserve">Checks whether or not the specified #GMimeSignature is contained within
the #GMimeSignatureList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the specified #GMimeSignature is contained within the specified #GMimeSignatureList or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureList</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </instance-parameter>
          <parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_signature"
              c:identifier="g_mime_signature_list_get_signature">
        <doc xml:space="preserve">Gets the #GMimeSignature at the specified index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GMimeSignature at the specified index or %NULL if the index is out of range.</doc>
          <type name="Signature" c:type="GMimeSignature*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureList</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index of #GMimeSignature to get</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="index_of" c:identifier="g_mime_signature_list_index_of">
        <doc xml:space="preserve">Gets the index of the specified #GMimeSignature inside the
#GMimeSignatureList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the index of the requested #GMimeSignature within the #GMimeSignatureList or %-1 if it is not contained within the #GMimeSignatureList.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureList</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </instance-parameter>
          <parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert" c:identifier="g_mime_signature_list_insert">
        <doc xml:space="preserve">Inserts a #GMimeSignature into the #GMimeSignatureList at the specified
index.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureList</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index to insert at</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </parameter>
        </parameters>
      </method>
      <method name="length" c:identifier="g_mime_signature_list_length">
        <doc xml:space="preserve">Gets the length of the list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of #GMimeSignature objects in the list.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureList</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="g_mime_signature_list_remove">
        <doc xml:space="preserve">Removes a #GMimeSignature from the #GMimeSignatureList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the specified #GMimeSignature was removed or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureList</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </instance-parameter>
          <parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_at" c:identifier="g_mime_signature_list_remove_at">
        <doc xml:space="preserve">Removes a #GMimeSignature from the #GMimeSignatureList at the specified
index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if an #GMimeSignature was removed or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureList</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index to remove</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_signature"
              c:identifier="g_mime_signature_list_set_signature">
        <doc xml:space="preserve">Sets the #GMimeSignature at the specified index to @sig.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignatureList</doc>
            <type name="SignatureList" c:type="GMimeSignatureList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index of #GMimeSignature to set</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="sig" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeSignature</doc>
            <type name="Signature" c:type="GMimeSignature*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="array">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="SignatureListClass"
            c:type="GMimeSignatureListClass"
            glib:is-gtype-struct-for="SignatureList">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="SignatureStatus" c:type="GMimeSignatureStatus">
      <doc xml:space="preserve">A value representing the signature status for a particular
#GMimeSignature.</doc>
      <member name="good" value="0" c:identifier="GMIME_SIGNATURE_STATUS_GOOD">
        <doc xml:space="preserve">Good signature.</doc>
      </member>
      <member name="error"
              value="1"
              c:identifier="GMIME_SIGNATURE_STATUS_ERROR">
        <doc xml:space="preserve">An error occurred.</doc>
      </member>
      <member name="bad" value="2" c:identifier="GMIME_SIGNATURE_STATUS_BAD">
        <doc xml:space="preserve">Bad signature.</doc>
      </member>
    </enumeration>
    <class name="Stream"
           c:symbol-prefix="stream"
           c:type="GMimeStream"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="GMimeStream"
           glib:get-type="g_mime_stream_get_type"
           glib:type-struct="StreamClass">
      <doc xml:space="preserve">Abstract I/O stream class.</doc>
      <virtual-method name="close" invoker="close">
        <doc xml:space="preserve">Closes the stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="eos" invoker="eos">
        <doc xml:space="preserve">Tests the end-of-stream indicator for @stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on EOS or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="flush" invoker="flush">
        <doc xml:space="preserve">Sync's the stream to disk.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="length" invoker="length">
        <doc xml:space="preserve">Gets the length of the stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the length of the stream or %-1 if unknown.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="read" invoker="read">
        <doc xml:space="preserve">Attempts to read up to @len bytes from @stream into @buf.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes read or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve">buffer</doc>
            <array length="1" zero-terminated="0" c:type="char*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve">buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="reset" invoker="reset">
        <doc xml:space="preserve">Resets the stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="seek" invoker="seek">
        <doc xml:space="preserve">Repositions the offset of the stream @stream to
the argument @offset according to the
directive @whence as follows:

    #GMIME_STREAM_SEEK_SET: Seek @offset bytes relative to
    the beginning (bound_start) of the stream.

    #GMIME_STREAM_SEEK_CUR: Seek @offset bytes relative to the
    current offset of the stream.

    #GMIME_STREAM_SEEK_END: Seek @offset bytes relative to the
    end of the stream (bound_end if non-negative).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the resultant position on success or %-1 on fail.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve">positional offset</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="whence" transfer-ownership="none">
            <doc xml:space="preserve">seek directive</doc>
            <type name="SeekWhence" c:type="GMimeSeekWhence"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="substream" invoker="substream">
        <doc xml:space="preserve">Creates a new substream of @stream with bounds @start and @end.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a substream of @stream with bounds @start and @end.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve">start boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="end" transfer-ownership="none">
            <doc xml:space="preserve">end boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="tell" invoker="tell">
        <doc xml:space="preserve">Gets the current offset within the stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the current position within the stream or %-1 on fail.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write" invoker="write">
        <doc xml:space="preserve">Attempts to write up to @len bytes of @buf to @stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve">buffer</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve">buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="buffer_gets" c:identifier="g_mime_stream_buffer_gets">
        <doc xml:space="preserve">Reads in at most one less than @max characters from @stream and
stores them into the buffer pointed to by @buf. Reading stops after
an EOS or newline ('\n'). If a newline is read, it is stored into
the buffer. A '\0' is stored after the last character in the
buffer.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of characters read into @buf on success or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve">line buffer</doc>
            <type name="utf8" c:type="char*"/>
          </parameter>
          <parameter name="max" transfer-ownership="none">
            <doc xml:space="preserve">max length of a line</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="buffer_readln" c:identifier="g_mime_stream_buffer_readln">
        <doc xml:space="preserve">Reads a single line into @buffer.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve">output buffer</doc>
            <array name="GLib.ByteArray" c:type="GByteArray*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="close" c:identifier="g_mime_stream_close">
        <doc xml:space="preserve">Closes the stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="construct" c:identifier="g_mime_stream_construct">
        <doc xml:space="preserve">Initializes a new stream with bounds @start and @end.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve">start boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="end" transfer-ownership="none">
            <doc xml:space="preserve">end boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="eos" c:identifier="g_mime_stream_eos">
        <doc xml:space="preserve">Tests the end-of-stream indicator for @stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on EOS or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="flush" c:identifier="g_mime_stream_flush">
        <doc xml:space="preserve">Sync's the stream to disk.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="length" c:identifier="g_mime_stream_length">
        <doc xml:space="preserve">Gets the length of the stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the length of the stream or %-1 if unknown.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="printf"
              c:identifier="g_mime_stream_printf"
              introspectable="0">
        <doc xml:space="preserve">Write formatted output to a stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="fmt" transfer-ownership="none">
            <doc xml:space="preserve">format</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="arg2" transfer-ownership="none">
            <varargs>
            </varargs>
          </parameter>
        </parameters>
      </method>
      <method name="read" c:identifier="g_mime_stream_read">
        <doc xml:space="preserve">Attempts to read up to @len bytes from @stream into @buf.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes read or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve">buffer</doc>
            <array length="1" zero-terminated="0" c:type="char*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve">buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="reset" c:identifier="g_mime_stream_reset">
        <doc xml:space="preserve">Resets the stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="seek" c:identifier="g_mime_stream_seek">
        <doc xml:space="preserve">Repositions the offset of the stream @stream to
the argument @offset according to the
directive @whence as follows:

    #GMIME_STREAM_SEEK_SET: Seek @offset bytes relative to
    the beginning (bound_start) of the stream.

    #GMIME_STREAM_SEEK_CUR: Seek @offset bytes relative to the
    current offset of the stream.

    #GMIME_STREAM_SEEK_END: Seek @offset bytes relative to the
    end of the stream (bound_end if non-negative).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the resultant position on success or %-1 on fail.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="offset" transfer-ownership="none">
            <doc xml:space="preserve">positional offset</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="whence" transfer-ownership="none">
            <doc xml:space="preserve">seek directive</doc>
            <type name="SeekWhence" c:type="GMimeSeekWhence"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_bounds" c:identifier="g_mime_stream_set_bounds">
        <doc xml:space="preserve">Set the bounds on a stream.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve">start boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="end" transfer-ownership="none">
            <doc xml:space="preserve">end boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="substream" c:identifier="g_mime_stream_substream">
        <doc xml:space="preserve">Creates a new substream of @stream with bounds @start and @end.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a substream of @stream with bounds @start and @end.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve">start boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="end" transfer-ownership="none">
            <doc xml:space="preserve">end boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <method name="tell" c:identifier="g_mime_stream_tell">
        <doc xml:space="preserve">Gets the current offset within the stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the current position within the stream or %-1 on fail.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="write" c:identifier="g_mime_stream_write">
        <doc xml:space="preserve">Attempts to write up to @len bytes of @buf to @stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="buf" transfer-ownership="none">
            <doc xml:space="preserve">buffer</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve">buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_string" c:identifier="g_mime_stream_write_string">
        <doc xml:space="preserve">Writes @string to @stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">string to write</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_to_stream"
              c:identifier="g_mime_stream_write_to_stream">
        <doc xml:space="preserve">Attempts to write the source stream to the destination stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="src" transfer-ownership="none">
            <doc xml:space="preserve">source stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">destination stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <method name="writev" c:identifier="g_mime_stream_writev">
        <doc xml:space="preserve">Writes at most @count blocks described by @vector to @stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written or %-1 on fail.</doc>
          <type name="glong" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </instance-parameter>
          <parameter name="vector" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamIOVector</doc>
            <type name="StreamIOVector" c:type="GMimeStreamIOVector*"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve">number of vector elements</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="super_stream" readable="0" private="1">
        <type name="Stream" c:type="GMimeStream*"/>
      </field>
      <field name="position" readable="0" private="1">
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="bound_start" readable="0" private="1">
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="bound_end" readable="0" private="1">
        <type name="gint64" c:type="gint64"/>
      </field>
    </class>
    <class name="StreamBuffer"
           c:symbol-prefix="stream_buffer"
           c:type="GMimeStreamBuffer"
           parent="Stream"
           glib:type-name="GMimeStreamBuffer"
           glib:get-type="g_mime_stream_buffer_get_type"
           glib:type-struct="StreamBufferClass">
      <doc xml:space="preserve">A buffered stream wrapper around any #GMimeStream object.</doc>
      <constructor name="new" c:identifier="g_mime_stream_buffer_new">
        <doc xml:space="preserve">Creates a new GMimeStreamBuffer object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new buffer stream with source @source and mode @mode.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">source stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">buffering mode</doc>
            <type name="StreamBufferMode" c:type="GMimeStreamBufferMode"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_object">
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="mode">
        <type name="StreamBufferMode" c:type="GMimeStreamBufferMode"/>
      </field>
      <field name="source">
        <type name="Stream" c:type="GMimeStream*"/>
      </field>
      <field name="buffer">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="bufptr">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="bufend">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="buflen">
        <type name="gulong" c:type="size_t"/>
      </field>
    </class>
    <record name="StreamBufferClass"
            c:type="GMimeStreamBufferClass"
            glib:is-gtype-struct-for="StreamBuffer">
      <field name="parent_class">
        <type name="StreamClass" c:type="GMimeStreamClass"/>
      </field>
    </record>
    <enumeration name="StreamBufferMode" c:type="GMimeStreamBufferMode">
      <doc xml:space="preserve">The buffering mode for a #GMimeStreamBuffer stream.</doc>
      <member name="cache_read"
              value="0"
              c:identifier="GMIME_STREAM_BUFFER_CACHE_READ">
        <doc xml:space="preserve">Cache all reads.</doc>
      </member>
      <member name="block_read"
              value="1"
              c:identifier="GMIME_STREAM_BUFFER_BLOCK_READ">
        <doc xml:space="preserve">Read in 4k blocks.</doc>
      </member>
      <member name="block_write"
              value="2"
              c:identifier="GMIME_STREAM_BUFFER_BLOCK_WRITE">
        <doc xml:space="preserve">Write in 4k blocks.</doc>
      </member>
    </enumeration>
    <class name="StreamCat"
           c:symbol-prefix="stream_cat"
           c:type="GMimeStreamCat"
           parent="Stream"
           glib:type-name="GMimeStreamCat"
           glib:get-type="g_mime_stream_cat_get_type"
           glib:type-struct="StreamCatClass">
      <doc xml:space="preserve">A concatenation of other #GMimeStream objects.</doc>
      <constructor name="new" c:identifier="g_mime_stream_cat_new">
        <doc xml:space="preserve">Creates a new #GMimeStreamCat object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeStreamCat stream.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
      </constructor>
      <method name="add_source" c:identifier="g_mime_stream_cat_add_source">
        <doc xml:space="preserve">Adds the @source stream to the @cat.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="cat" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamCat</doc>
            <type name="StreamCat" c:type="GMimeStreamCat*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">a source stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="sources">
        <type name="gpointer" c:type="_cat_node*"/>
      </field>
      <field name="current">
        <type name="gpointer" c:type="_cat_node*"/>
      </field>
    </class>
    <record name="StreamCatClass"
            c:type="GMimeStreamCatClass"
            glib:is-gtype-struct-for="StreamCat">
      <field name="parent_class">
        <type name="StreamClass" c:type="GMimeStreamClass"/>
      </field>
    </record>
    <record name="StreamClass"
            c:type="GMimeStreamClass"
            glib:is-gtype-struct-for="Stream">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="read">
        <callback name="read">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the number of bytes read or %-1 on fail.</doc>
            <type name="glong" c:type="ssize_t"/>
          </return-value>
          <parameters>
            <parameter name="stream" transfer-ownership="none">
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
            <parameter name="buf" transfer-ownership="none">
              <doc xml:space="preserve">buffer</doc>
              <array length="2" zero-terminated="0" c:type="char*">
                <type name="guint8"/>
              </array>
            </parameter>
            <parameter name="len" transfer-ownership="none">
              <doc xml:space="preserve">buffer length</doc>
              <type name="gulong" c:type="size_t"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write">
        <callback name="write">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the number of bytes written or %-1 on fail.</doc>
            <type name="glong" c:type="ssize_t"/>
          </return-value>
          <parameters>
            <parameter name="stream" transfer-ownership="none">
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
            <parameter name="buf" transfer-ownership="none">
              <doc xml:space="preserve">buffer</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="len" transfer-ownership="none">
              <doc xml:space="preserve">buffer length</doc>
              <type name="gulong" c:type="size_t"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="flush">
        <callback name="flush">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="stream" transfer-ownership="none">
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="close">
        <callback name="close">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="stream" transfer-ownership="none">
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="eos">
        <callback name="eos">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on EOS or %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="stream" transfer-ownership="none">
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reset">
        <callback name="reset">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%0 on success or %-1 on fail.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="stream" transfer-ownership="none">
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="seek">
        <callback name="seek">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the resultant position on success or %-1 on fail.</doc>
            <type name="gint64" c:type="gint64"/>
          </return-value>
          <parameters>
            <parameter name="stream" transfer-ownership="none">
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
            <parameter name="offset" transfer-ownership="none">
              <doc xml:space="preserve">positional offset</doc>
              <type name="gint64" c:type="gint64"/>
            </parameter>
            <parameter name="whence" transfer-ownership="none">
              <doc xml:space="preserve">seek directive</doc>
              <type name="SeekWhence" c:type="GMimeSeekWhence"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tell">
        <callback name="tell">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the current position within the stream or %-1 on fail.</doc>
            <type name="gint64" c:type="gint64"/>
          </return-value>
          <parameters>
            <parameter name="stream" transfer-ownership="none">
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="length">
        <callback name="length">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the length of the stream or %-1 if unknown.</doc>
            <type name="gint64" c:type="gint64"/>
          </return-value>
          <parameters>
            <parameter name="stream" transfer-ownership="none">
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="substream">
        <callback name="substream">
          <return-value transfer-ownership="full">
            <doc xml:space="preserve">a substream of @stream with bounds @start and @end.</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </return-value>
          <parameters>
            <parameter name="stream" transfer-ownership="none">
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
            <parameter name="start" transfer-ownership="none">
              <doc xml:space="preserve">start boundary</doc>
              <type name="gint64" c:type="gint64"/>
            </parameter>
            <parameter name="end" transfer-ownership="none">
              <doc xml:space="preserve">end boundary</doc>
              <type name="gint64" c:type="gint64"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="StreamFile"
           c:symbol-prefix="stream_file"
           c:type="GMimeStreamFile"
           parent="Stream"
           glib:type-name="GMimeStreamFile"
           glib:get-type="g_mime_stream_file_get_type"
           glib:type-struct="StreamFileClass">
      <doc xml:space="preserve">A #GMimeStream wrapper around standard-c FILE pointers.</doc>
      <constructor name="new" c:identifier="g_mime_stream_file_new">
        <doc xml:space="preserve">Creates a new #GMimeStreamFile object around @fp.

Note: The created #GMimeStreamFile object will own the FILE pointer
passed in.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a stream using @fp.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="fp" transfer-ownership="none">
            <doc xml:space="preserve">a FILE pointer</doc>
            <type name="gpointer" c:type="FILE*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_for_path"
                   c:identifier="g_mime_stream_file_new_for_path"
                   version="2.6.18">
        <doc xml:space="preserve">Creates a new #GMimeStreamFile object for the specified @path.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a stream using for reading and/or writing to the specified file path or %NULL on error.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">the path to a file</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">as in fopen(3)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_bounds"
                   c:identifier="g_mime_stream_file_new_with_bounds">
        <doc xml:space="preserve">Creates a new #GMimeStreamFile object around @fp with bounds @start
and @end.

Note: The created #GMimeStreamFile object will own the FILE pointer
passed in.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a stream using @fp with bounds @start and @end.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="fp" transfer-ownership="none">
            <doc xml:space="preserve">a FILE pointer</doc>
            <type name="gpointer" c:type="FILE*"/>
          </parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve">start boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="end" transfer-ownership="none">
            <doc xml:space="preserve">end boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_owner" c:identifier="g_mime_stream_file_get_owner">
        <doc xml:space="preserve">Gets whether or not @stream owns the backend FILE pointer.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @stream owns the backend FILE pointer or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamFile</doc>
            <type name="StreamFile" c:type="GMimeStreamFile*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_owner" c:identifier="g_mime_stream_file_set_owner">
        <doc xml:space="preserve">Sets whether or not @stream owns the backend FILE pointer.

Note: @owner should be %TRUE if the stream should fclose() the
backend FILE pointer when destroyed or %FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamFile</doc>
            <type name="StreamFile" c:type="GMimeStreamFile*"/>
          </instance-parameter>
          <parameter name="owner" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if this stream should own the FILE pointer or %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="owner">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="fp">
        <type name="gpointer" c:type="FILE*"/>
      </field>
    </class>
    <record name="StreamFileClass"
            c:type="GMimeStreamFileClass"
            glib:is-gtype-struct-for="StreamFile">
      <field name="parent_class">
        <type name="StreamClass" c:type="GMimeStreamClass"/>
      </field>
    </record>
    <class name="StreamFilter"
           c:symbol-prefix="stream_filter"
           c:type="GMimeStreamFilter"
           parent="Stream"
           glib:type-name="GMimeStreamFilter"
           glib:get-type="g_mime_stream_filter_get_type"
           glib:type-struct="StreamFilterClass">
      <doc xml:space="preserve">A #GMimeStream which passes data through any #GMimeFilter objects.</doc>
      <constructor name="new" c:identifier="g_mime_stream_filter_new">
        <doc xml:space="preserve">Creates a new #GMimeStreamFilter object using @stream as the source
stream.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new filter stream with @stream as its source.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">source stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add" c:identifier="g_mime_stream_filter_add">
        <doc xml:space="preserve">Adds @filter to @stream. Filters are applied in the same order in
which they are added.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an id for the filter.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamFilter</doc>
            <type name="StreamFilter" c:type="GMimeStreamFilter*"/>
          </instance-parameter>
          <parameter name="filter" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeFilter</doc>
            <type name="Filter" c:type="GMimeFilter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="g_mime_stream_filter_remove">
        <doc xml:space="preserve">Removed a filter from the stream based on the id (as returned from
filter_add).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamFilter</doc>
            <type name="StreamFilter" c:type="GMimeStreamFilter*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <doc xml:space="preserve">filter id</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="priv">
        <type name="gpointer" c:type="_GMimeStreamFilterPrivate*"/>
      </field>
      <field name="source">
        <type name="Stream" c:type="GMimeStream*"/>
      </field>
    </class>
    <record name="StreamFilterClass"
            c:type="GMimeStreamFilterClass"
            glib:is-gtype-struct-for="StreamFilter">
      <field name="parent_class">
        <type name="StreamClass" c:type="GMimeStreamClass"/>
      </field>
    </record>
    <class name="StreamFs"
           c:symbol-prefix="stream_fs"
           c:type="GMimeStreamFs"
           parent="Stream"
           glib:type-name="GMimeStreamFs"
           glib:get-type="g_mime_stream_fs_get_type"
           glib:type-struct="StreamFsClass">
      <doc xml:space="preserve">A #GMimeStream wrapper around POSIX file descriptors.</doc>
      <constructor name="new" c:identifier="g_mime_stream_fs_new">
        <doc xml:space="preserve">Creates a new #GMimeStreamFs object around @fd.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a stream using @fd.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve">a file descriptor</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_for_path"
                   c:identifier="g_mime_stream_fs_new_for_path"
                   version="2.6.18">
        <doc xml:space="preserve">Creates a new #GMimeStreamFs object for the specified @path.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a stream using for reading and/or writing to the specified file path or %NULL on error.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve">the path to a file</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">as in open(2)</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">as in open(2)</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_bounds"
                   c:identifier="g_mime_stream_fs_new_with_bounds">
        <doc xml:space="preserve">Creates a new #GMimeStreamFs object around @fd with bounds @start
and @end.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a stream using @fd with bounds @start and @end.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve">a file descriptor</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve">start boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="end" transfer-ownership="none">
            <doc xml:space="preserve">end boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_owner" c:identifier="g_mime_stream_fs_get_owner">
        <doc xml:space="preserve">Gets whether or not @stream owns the backend file descriptor.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @stream owns the backend file descriptor or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamFs</doc>
            <type name="StreamFs" c:type="GMimeStreamFs*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_owner" c:identifier="g_mime_stream_fs_set_owner">
        <doc xml:space="preserve">Sets whether or not @stream owns the backend file descriptor.

Note: @owner should be %TRUE if the stream should close() the
backend file descriptor when destroyed or %FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamFs</doc>
            <type name="StreamFs" c:type="GMimeStreamFs*"/>
          </instance-parameter>
          <parameter name="owner" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if this stream should own the file descriptor or %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="owner">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="eos">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="fd">
        <type name="gint" c:type="int"/>
      </field>
    </class>
    <record name="StreamFsClass"
            c:type="GMimeStreamFsClass"
            glib:is-gtype-struct-for="StreamFs">
      <field name="parent_class">
        <type name="StreamClass" c:type="GMimeStreamClass"/>
      </field>
    </record>
    <class name="StreamGIO"
           c:symbol-prefix="stream_gio"
           c:type="GMimeStreamGIO"
           parent="Stream"
           glib:type-name="GMimeStreamGIO"
           glib:get-type="g_mime_stream_gio_get_type"
           glib:type-struct="StreamGIOClass">
      <doc xml:space="preserve">A #GMimeStream wrapper around GLib's GIO streams.</doc>
      <constructor name="new" c:identifier="g_mime_stream_gio_new">
        <doc xml:space="preserve">Creates a new #GMimeStreamGIO wrapper around a #GFile object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a stream using @file.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve">a #GFile</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_bounds"
                   c:identifier="g_mime_stream_gio_new_with_bounds">
        <doc xml:space="preserve">Creates a new #GMimeStreamGIO stream around a #GFile with bounds
@start and @end.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a stream using @file with bounds @start and @end.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve">a #GFile</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve">start boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="end" transfer-ownership="none">
            <doc xml:space="preserve">end boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_owner" c:identifier="g_mime_stream_gio_get_owner">
        <doc xml:space="preserve">Gets whether or not @stream owns the backend #GFile.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @stream owns the backend #GFile or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamGIO stream</doc>
            <type name="StreamGIO" c:type="GMimeStreamGIO*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_owner" c:identifier="g_mime_stream_gio_set_owner">
        <doc xml:space="preserve">Sets whether or not @stream owns the backend GIO pointer.

Note: @owner should be %TRUE if the stream should close() the
backend file descriptor when destroyed or %FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamGIO stream</doc>
            <type name="StreamGIO" c:type="GMimeStreamGIO*"/>
          </instance-parameter>
          <parameter name="owner" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if this stream should own the #GFile or %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="ostream">
        <type name="Gio.OutputStream" c:type="GOutputStream*"/>
      </field>
      <field name="istream">
        <type name="Gio.InputStream" c:type="GInputStream*"/>
      </field>
      <field name="file">
        <type name="Gio.File" c:type="GFile*"/>
      </field>
      <field name="owner">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="eos">
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </class>
    <record name="StreamGIOClass"
            c:type="GMimeStreamGIOClass"
            glib:is-gtype-struct-for="StreamGIO">
      <field name="parent_class">
        <type name="StreamClass" c:type="GMimeStreamClass"/>
      </field>
    </record>
    <record name="StreamIOVector" c:type="GMimeStreamIOVector">
      <doc xml:space="preserve">An I/O vector for use with g_mime_stream_writev().</doc>
      <field name="data" writable="1">
        <type name="gpointer" c:type="void*"/>
      </field>
      <field name="len" writable="1">
        <type name="gulong" c:type="size_t"/>
      </field>
    </record>
    <class name="StreamMem"
           c:symbol-prefix="stream_mem"
           c:type="GMimeStreamMem"
           parent="Stream"
           glib:type-name="GMimeStreamMem"
           glib:get-type="g_mime_stream_mem_get_type"
           glib:type-struct="StreamMemClass">
      <doc xml:space="preserve">A memory-backed #GMimeStream.</doc>
      <constructor name="new" c:identifier="g_mime_stream_mem_new">
        <doc xml:space="preserve">Creates a new #GMimeStreamMem object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new memory stream.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
      </constructor>
      <constructor name="new_with_buffer"
                   c:identifier="g_mime_stream_mem_new_with_buffer">
        <doc xml:space="preserve">Creates a new #GMimeStreamMem object and initializes the stream
contents with the first @len bytes of @buffer.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new memory stream initialized with @buffer.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="buffer" transfer-ownership="none">
            <doc xml:space="preserve">stream data</doc>
            <array length="1" zero-terminated="0" c:type="char*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve">buffer length</doc>
            <type name="gulong" c:type="size_t"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_byte_array"
                   c:identifier="g_mime_stream_mem_new_with_byte_array">
        <doc xml:space="preserve">Creates a new #GMimeStreamMem with data @array.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new memory stream using @array.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="array" transfer-ownership="none">
            <doc xml:space="preserve">source data</doc>
            <array name="GLib.ByteArray" c:type="GByteArray*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_byte_array"
              c:identifier="g_mime_stream_mem_get_byte_array">
        <doc xml:space="preserve">Gets the byte array from the memory stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the byte array from the memory stream.</doc>
          <array name="GLib.ByteArray" c:type="GByteArray*">
            <type name="guint8" c:type="guint8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamMem</doc>
            <type name="StreamMem" c:type="GMimeStreamMem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_owner" c:identifier="g_mime_stream_mem_get_owner">
        <doc xml:space="preserve">Gets whether or not @mem owns the backend memory buffer.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @mem owns the backend memory buffer or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamMem</doc>
            <type name="StreamMem" c:type="GMimeStreamMem*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_byte_array"
              c:identifier="g_mime_stream_mem_set_byte_array">
        <doc xml:space="preserve">Sets the byte array on the memory stream.

Note: The memory stream is not responsible for freeing the byte
array. Use g_mime_stream_mem_set_owner() to change this behavior.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamMem</doc>
            <type name="StreamMem" c:type="GMimeStreamMem*"/>
          </instance-parameter>
          <parameter name="array" transfer-ownership="none">
            <doc xml:space="preserve">stream data</doc>
            <array name="GLib.ByteArray" c:type="GByteArray*">
              <type name="guint8" c:type="guint8"/>
            </array>
          </parameter>
        </parameters>
      </method>
      <method name="set_owner" c:identifier="g_mime_stream_mem_set_owner">
        <doc xml:space="preserve">Sets whether or not @mem owns the backend memory buffer.

Note: @owner should be %TRUE if the stream should free the backend
memory buffer when destroyed or %FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mem" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamMem</doc>
            <type name="StreamMem" c:type="GMimeStreamMem*"/>
          </instance-parameter>
          <parameter name="owner" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if this stream should own the #GByteArray or %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="buffer">
        <array name="GLib.ByteArray" c:type="GByteArray*">
          <type name="guint8" c:type="guint8"/>
        </array>
      </field>
      <field name="owner">
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </class>
    <record name="StreamMemClass"
            c:type="GMimeStreamMemClass"
            glib:is-gtype-struct-for="StreamMem">
      <field name="parent_class">
        <type name="StreamClass" c:type="GMimeStreamClass"/>
      </field>
    </record>
    <class name="StreamMmap"
           c:symbol-prefix="stream_mmap"
           c:type="GMimeStreamMmap"
           parent="Stream"
           glib:type-name="GMimeStreamMmap"
           glib:get-type="g_mime_stream_mmap_get_type"
           glib:type-struct="StreamMmapClass">
      <doc xml:space="preserve">A memory-mapped #GMimeStream.</doc>
      <constructor name="new" c:identifier="g_mime_stream_mmap_new">
        <doc xml:space="preserve">Creates a new #GMimeStreamMmap object around @fd.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a stream using @fd.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve">file descriptor</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="prot" transfer-ownership="none">
            <doc xml:space="preserve">protection flags</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">map flags</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_bounds"
                   c:identifier="g_mime_stream_mmap_new_with_bounds">
        <doc xml:space="preserve">Creates a new #GMimeStreamMmap object around @fd with bounds @start
and @end.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a stream using @fd with bounds @start and @end.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve">file descriptor</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="prot" transfer-ownership="none">
            <doc xml:space="preserve">protection flags</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">map flags</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="start" transfer-ownership="none">
            <doc xml:space="preserve">start boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
          <parameter name="end" transfer-ownership="none">
            <doc xml:space="preserve">end boundary</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_object">
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="owner">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="eos">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="fd">
        <type name="gint" c:type="int"/>
      </field>
      <field name="map">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="maplen">
        <type name="gulong" c:type="size_t"/>
      </field>
    </class>
    <record name="StreamMmapClass"
            c:type="GMimeStreamMmapClass"
            glib:is-gtype-struct-for="StreamMmap">
      <field name="parent_class">
        <type name="StreamClass" c:type="GMimeStreamClass"/>
      </field>
    </record>
    <class name="StreamNull"
           c:symbol-prefix="stream_null"
           c:type="GMimeStreamNull"
           parent="Stream"
           glib:type-name="GMimeStreamNull"
           glib:get-type="g_mime_stream_null_get_type"
           glib:type-struct="StreamNullClass">
      <doc xml:space="preserve">A #GMimeStream which has no backing store.</doc>
      <constructor name="new" c:identifier="g_mime_stream_null_new">
        <doc xml:space="preserve">Creates a new #GMimeStreamNull object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new null stream (similar to /dev/null on Unix).</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
      </constructor>
      <field name="parent_object">
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="written">
        <type name="gulong" c:type="size_t"/>
      </field>
      <field name="newlines">
        <type name="gulong" c:type="size_t"/>
      </field>
    </class>
    <record name="StreamNullClass"
            c:type="GMimeStreamNullClass"
            glib:is-gtype-struct-for="StreamNull">
      <field name="parent_class">
        <type name="StreamClass" c:type="GMimeStreamClass"/>
      </field>
    </record>
    <class name="StreamPipe"
           c:symbol-prefix="stream_pipe"
           c:type="GMimeStreamPipe"
           parent="Stream"
           glib:type-name="GMimeStreamPipe"
           glib:get-type="g_mime_stream_pipe_get_type"
           glib:type-struct="StreamPipeClass">
      <doc xml:space="preserve">A #GMimeStream wrapper around pipes.</doc>
      <constructor name="new" c:identifier="g_mime_stream_pipe_new">
        <doc xml:space="preserve">Creates a new #GMimeStreamPipe object around @fd.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a stream using @fd.</doc>
          <type name="Stream" c:type="GMimeStream*"/>
        </return-value>
        <parameters>
          <parameter name="fd" transfer-ownership="none">
            <doc xml:space="preserve">a pipe descriptor</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_owner" c:identifier="g_mime_stream_pipe_get_owner">
        <doc xml:space="preserve">Gets whether or not @stream owns the backend pipe descriptor.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @stream owns the backend pipe descriptor or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamPipe</doc>
            <type name="StreamPipe" c:type="GMimeStreamPipe*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_owner" c:identifier="g_mime_stream_pipe_set_owner">
        <doc xml:space="preserve">Sets whether or not @stream owns the backend pipe descriptor.

Note: @owner should be %TRUE if the stream should close() the
backend pipe descriptor when destroyed or %FALSE otherwise.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStreamPipe</doc>
            <type name="StreamPipe" c:type="GMimeStreamPipe*"/>
          </instance-parameter>
          <parameter name="owner" transfer-ownership="none">
            <doc xml:space="preserve">owner</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="owner">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="eos">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="fd">
        <type name="gint" c:type="int"/>
      </field>
    </class>
    <record name="StreamPipeClass"
            c:type="GMimeStreamPipeClass"
            glib:is-gtype-struct-for="StreamPipe">
      <field name="parent_class">
        <type name="StreamClass" c:type="GMimeStreamClass"/>
      </field>
    </record>
    <constant name="UUDECODE_STATE_BEGIN"
              value="65536"
              c:type="GMIME_UUDECODE_STATE_BEGIN">
      <doc xml:space="preserve">State for the g_mime_encoding_uudecode_step() function, denoting that
the 'begin' line has been found.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="UUDECODE_STATE_END"
              value="131072"
              c:type="GMIME_UUDECODE_STATE_END">
      <doc xml:space="preserve">State for the g_mime_encoding_uudecode_step() function, denoting that
the end of the UU encoded block has been found.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="UUDECODE_STATE_INIT"
              value="0"
              c:type="GMIME_UUDECODE_STATE_INIT">
      <doc xml:space="preserve">Initial state for the g_mime_encoding_uudecode_step() function.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="UUDECODE_STATE_MASK"
              value="0"
              c:type="GMIME_UUDECODE_STATE_MASK">
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="YDECODE_STATE_BEGIN"
              value="4096"
              c:type="GMIME_YDECODE_STATE_BEGIN">
      <doc xml:space="preserve">State bit that denotes the yEnc filter has found the =ybegin line.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="YDECODE_STATE_DECODE"
              value="16384"
              c:type="GMIME_YDECODE_STATE_DECODE">
      <doc xml:space="preserve">State bit that denotes yEnc filter has begun decoding the actual
yencoded content and will continue to do so until an =yend line is
found (or until there is nothing left to decode).</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="YDECODE_STATE_END"
              value="32768"
              c:type="GMIME_YDECODE_STATE_END">
      <doc xml:space="preserve">State bit that denoates that g_mime_ydecode_step() has finished
decoding.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="YDECODE_STATE_EOLN"
              value="256"
              c:type="GMIME_YDECODE_STATE_EOLN">
      <doc xml:space="preserve">State bit that denotes the yEnc filter has reached an end-of-line.

This state is for internal use only.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="YDECODE_STATE_ESCAPE"
              value="512"
              c:type="GMIME_YDECODE_STATE_ESCAPE">
      <doc xml:space="preserve">State bit that denotes the yEnc filter has reached an escape
sequence.

This state is for internal use only.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="YDECODE_STATE_INIT"
              value="0"
              c:type="GMIME_YDECODE_STATE_INIT">
      <doc xml:space="preserve">Initial state for the g_mime_ydecode_step() function.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="YDECODE_STATE_PART"
              value="8192"
              c:type="GMIME_YDECODE_STATE_PART">
      <doc xml:space="preserve">State bit that denotes the yEnc filter has found the =ypart
line. (Note: not all yencoded blocks have one)</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="YENCODE_CRC_INIT"
              value="-1"
              c:type="GMIME_YENCODE_CRC_INIT">
      <doc xml:space="preserve">Initial state for the crc and pcrc state variables.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <constant name="YENCODE_STATE_INIT"
              value="0"
              c:type="GMIME_YENCODE_STATE_INIT">
      <doc xml:space="preserve">Initial state for the g_mime_ydecode_step() function.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <function name="charset_best"
              c:identifier="g_mime_charset_best"
              moved-to="Charset.best">
      <doc xml:space="preserve">Computes the best charset to use to encode this text buffer.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the charset name best suited for the input text or %NULL if it is US-ASCII safe.</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">a UTF-8 text buffer</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
      </parameters>
    </function>
    <function name="charset_canon_name"
              c:identifier="g_mime_charset_canon_name"
              moved-to="Charset.canon_name">
      <doc xml:space="preserve">Attempts to find a canonical charset name for @charset.

Note: Will normally return the same value as
g_mime_charset_iconv_name() unless the system iconv does not use
the canonical ISO charset names (such as using ISO8859-1 rather
than the canonical form ISO-8859-1).</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a canonical charset name for @charset.</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="charset" transfer-ownership="none">
          <doc xml:space="preserve">charset name</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="charset_iconv_name"
              c:identifier="g_mime_charset_iconv_name"
              moved-to="Charset.iconv_name">
      <doc xml:space="preserve">Attempts to find an iconv-friendly charset name for @charset.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">an iconv-friendly charset name for @charset.</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="charset" transfer-ownership="none">
          <doc xml:space="preserve">charset name</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="charset_iso_to_windows"
              c:identifier="g_mime_charset_iso_to_windows"
              moved-to="Charset.iso_to_windows">
      <doc xml:space="preserve">Maps the ISO-8859-# charset to the equivalent Windows-CP125#
charset.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">equivalent Windows charset.</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="isocharset" transfer-ownership="none">
          <doc xml:space="preserve">ISO-8859-# charset</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="charset_language"
              c:identifier="g_mime_charset_language"
              moved-to="Charset.language">
      <doc xml:space="preserve">Attempts to find a specific language code that is specific to
@charset. Currently only handles CJK and Russian/Ukranian
charset-&gt;lang mapping. Everything else will return %NULL.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a language code that is specific to @charset, or %NULL on fail.</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="charset" transfer-ownership="none">
          <doc xml:space="preserve">charset name</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="charset_locale_name"
              c:identifier="g_mime_charset_locale_name"
              moved-to="Charset.locale_name">
      <doc xml:space="preserve">Gets the user's locale charset (or iso-8859-1 by default).

Note: This function is deprecated. Use g_mime_locale_charset()
instead.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the user's locale charset (or iso-8859-1 by default).</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function name="charset_map_init"
              c:identifier="g_mime_charset_map_init"
              moved-to="Charset.map_init">
      <doc xml:space="preserve">Initializes character set maps.

Note: g_mime_init() calls this routine for you.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="charset_map_shutdown"
              c:identifier="g_mime_charset_map_shutdown"
              moved-to="Charset.map_shutdown">
      <doc xml:space="preserve">Frees internal lookup tables created in g_mime_charset_map_init().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="charset_name"
              c:identifier="g_mime_charset_name"
              moved-to="Charset.name">
      <doc xml:space="preserve">Attempts to find an iconv-friendly charset name for @charset.

Note: This function is deprecated. Use g_mime_charset_iconv_name()
instead.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">an iconv-friendly charset name for @charset.</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="charset" transfer-ownership="none">
          <doc xml:space="preserve">charset name</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="check_version" c:identifier="g_mime_check_version">
      <doc xml:space="preserve">Checks that the GMime library version meets the requirements of the
required version.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the requirement is met or %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="major" transfer-ownership="none">
          <doc xml:space="preserve">Minimum major version</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="minor" transfer-ownership="none">
          <doc xml:space="preserve">Minimum minor version</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="micro" transfer-ownership="none">
          <doc xml:space="preserve">Minimum micro version</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
      </parameters>
    </function>
    <function name="content_encoding_from_string"
              c:identifier="g_mime_content_encoding_from_string">
      <doc xml:space="preserve">Gets the appropriate #GMimeContentEncoding enumeration value based
on the input string.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the #GMimeContentEncoding specified by @str or #GMIME_CONTENT_ENCODING_DEFAULT on error.</doc>
        <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">a string representing a Content-Transfer-Encoding value</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="content_encoding_to_string"
              c:identifier="g_mime_content_encoding_to_string">
      <doc xml:space="preserve">Gets the string value of the content encoding.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the encoding type as a string or %NULL on error. Available values for the encoding are: #GMIME_CONTENT_ENCODING_DEFAULT, #GMIME_CONTENT_ENCODING_7BIT, #GMIME_CONTENT_ENCODING_8BIT, #GMIME_CONTENT_ENCODING_BINARY, #GMIME_CONTENT_ENCODING_BASE64, #GMIME_CONTENT_ENCODING_QUOTEDPRINTABLE and #GMIME_CONTENT_ENCODING_UUENCODE.</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
      <parameters>
        <parameter name="encoding" transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeContentEncoding</doc>
          <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
        </parameter>
      </parameters>
    </function>
    <function name="encoding_base64_decode_step"
              c:identifier="g_mime_encoding_base64_decode_step"
              moved-to="Encoding.base64_decode_step">
      <doc xml:space="preserve">Decodes a chunk of base64 encoded data.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes decoded (which have been dumped in @outbuf).</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output buffer</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="save" transfer-ownership="none">
          <doc xml:space="preserve">leftover bits that have not yet been decoded</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="encoding_base64_encode_close"
              c:identifier="g_mime_encoding_base64_encode_close"
              moved-to="Encoding.base64_encode_close">
      <doc xml:space="preserve">Base64 encodes the input stream to the output stream. Call this
when finished encoding data with g_mime_encoding_base64_encode_step()
to flush off the last little bit.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes encoded.</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output buffer</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="save" transfer-ownership="none">
          <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="encoding_base64_encode_step"
              c:identifier="g_mime_encoding_base64_encode_step"
              moved-to="Encoding.base64_encode_step">
      <doc xml:space="preserve">Base64 encodes a chunk of data. Performs an 'encode step', only
encodes blocks of 3 characters to the output at a time, saves
left-over state in state and save (initialise to 0 on first
invocation).</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes encoded.</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output buffer</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="save" transfer-ownership="none">
          <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="encoding_quoted_decode_step"
              c:identifier="g_mime_encoding_quoted_decode_step"
              moved-to="Encoding.quoted_decode_step">
      <doc xml:space="preserve">Decodes a block of quoted-printable encoded data. Performs a
'decode step' on a chunk of QP encoded data.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes decoded.</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output buffer</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="save" transfer-ownership="none">
          <doc xml:space="preserve">leftover bits that have not yet been decoded</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="encoding_quoted_encode_close"
              c:identifier="g_mime_encoding_quoted_encode_close"
              moved-to="Encoding.quoted_encode_close">
      <doc xml:space="preserve">Quoted-printable encodes a block of text. Call this when finished
encoding data with g_mime_encoding_quoted_encode_step() to flush off
the last little bit.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes encoded.</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output buffer</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="save" transfer-ownership="none">
          <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="encoding_quoted_encode_step"
              c:identifier="g_mime_encoding_quoted_encode_step"
              moved-to="Encoding.quoted_encode_step">
      <doc xml:space="preserve">Quoted-printable encodes a block of text. Performs an 'encode
step', saves left-over state in state and save (initialise to -1 on
first invocation).</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes encoded.</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output buffer</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="save" transfer-ownership="none">
          <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="encoding_uudecode_step"
              c:identifier="g_mime_encoding_uudecode_step"
              moved-to="Encoding.uudecode_step">
      <doc xml:space="preserve">Uudecodes a chunk of data. Performs a 'decode step' on a chunk of
uuencoded data. Assumes the "begin mode filename" line has
been stripped off.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes decoded.</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output buffer</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="save" transfer-ownership="none">
          <doc xml:space="preserve">leftover bits that have not yet been decoded</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="encoding_uuencode_close"
              c:identifier="g_mime_encoding_uuencode_close"
              moved-to="Encoding.uuencode_close">
      <doc xml:space="preserve">Uuencodes a chunk of data. Call this when finished encoding data
with g_mime_encoding_uuencode_step() to flush off the last little bit.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes encoded.</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output buffer</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="uubuf" transfer-ownership="none">
          <doc xml:space="preserve">temporary buffer of 60 bytes</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="save" transfer-ownership="none">
          <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="encoding_uuencode_step"
              c:identifier="g_mime_encoding_uuencode_step"
              moved-to="Encoding.uuencode_step">
      <doc xml:space="preserve">Uuencodes a chunk of data. Performs an 'encode step', only encodes
blocks of 45 characters to the output at a time, saves left-over
state in @uubuf, @state and @save (initialize to 0 on first
invocation).</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes encoded.</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output stream</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="uubuf" transfer-ownership="none">
          <doc xml:space="preserve">temporary buffer of 60 bytes</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">holds the number of bits that are stored in @save</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="save" transfer-ownership="none">
          <doc xml:space="preserve">leftover bits that have not yet been encoded</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="iconv_close"
              c:identifier="g_mime_iconv_close"
              introspectable="0">
      <doc xml:space="preserve">Closes the iconv descriptor @cd.

See the manual page for iconv_close(3) for further details.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%0 on success or %-1 on fail as well as setting an appropriate errno value.</doc>
        <type name="gint" c:type="int"/>
      </return-value>
      <parameters>
        <parameter name="cd" transfer-ownership="none">
          <doc xml:space="preserve">iconv conversion descriptor</doc>
          <type c:type="libiconv_t"/>
        </parameter>
      </parameters>
    </function>
    <function name="iconv_init" c:identifier="g_mime_iconv_init">
      <doc xml:space="preserve">Initialize GMime's iconv cache. This *MUST* be called before any
gmime-iconv interfaces will work correctly.

Note: this function is called for you by g_mime_init().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="iconv_locale_to_utf8"
              c:identifier="g_mime_iconv_locale_to_utf8">
      <doc xml:space="preserve">Allocates a new string buffer containing @str in UTF-8.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new string buffer containing @str converted to UTF-8.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">string in locale charset</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="iconv_locale_to_utf8_length"
              c:identifier="g_mime_iconv_locale_to_utf8_length">
      <doc xml:space="preserve">Allocates a new string buffer containing the first @n bytes of
@str converted to UTF-8.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new string buffer containing the first @n bytes of @str converted to UTF-8.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">string in locale charset</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="n" transfer-ownership="none">
          <doc xml:space="preserve">number of bytes to convert</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
      </parameters>
    </function>
    <function name="iconv_open"
              c:identifier="g_mime_iconv_open"
              introspectable="0">
      <doc xml:space="preserve">Allocates a coversion descriptor suitable for converting byte
sequences from charset @from to charset @to. The resulting
descriptor can be used with iconv() (or the g_mime_iconv() wrapper) any
number of times until closed using g_mime_iconv_close().

See the manual page for iconv_open(3) for further details.</doc>
      <return-value>
        <doc xml:space="preserve">a new conversion descriptor for use with g_mime_iconv() on success or (iconv_t) %-1 on fail as well as setting an appropriate errno value.</doc>
        <type c:type="libiconv_t"/>
      </return-value>
      <parameters>
        <parameter name="to" transfer-ownership="none">
          <doc xml:space="preserve">charset to convert to</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="from" transfer-ownership="none">
          <doc xml:space="preserve">charset to convert from</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="iconv_shutdown" c:identifier="g_mime_iconv_shutdown">
      <doc xml:space="preserve">Frees internal iconv caches created in g_mime_iconv_init().

Note: this function is called for you by g_mime_shutdown().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="iconv_strdup"
              c:identifier="g_mime_iconv_strdup"
              introspectable="0">
      <doc xml:space="preserve">Allocates a new string buffer containing @str converted to the
destination charset described in @cd.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new string buffer containing the original string converted to the new charset.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="cd" transfer-ownership="none">
          <doc xml:space="preserve">conversion descriptor</doc>
          <type c:type="libiconv_t"/>
        </parameter>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">string in source charset</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="iconv_strndup"
              c:identifier="g_mime_iconv_strndup"
              introspectable="0">
      <doc xml:space="preserve">Allocates a new string buffer containing the first @n bytes of @str
converted to the destination charset as described by the conversion
descriptor @cd.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new string buffer containing the first @n bytes of @str converted to the destination charset as described by the conversion descriptor @cd.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="cd" transfer-ownership="none">
          <doc xml:space="preserve">conversion descriptor</doc>
          <type c:type="libiconv_t"/>
        </parameter>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">string in source charset</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="n" transfer-ownership="none">
          <doc xml:space="preserve">number of bytes to convert</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
      </parameters>
    </function>
    <function name="iconv_utf8_to_locale"
              c:identifier="g_mime_iconv_utf8_to_locale">
      <doc xml:space="preserve">Allocates a new string buffer containing @str converted to the
user's locale charset.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new string buffer containing @str converted to the user's locale charset.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">string in UTF-8 charset</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="iconv_utf8_to_locale_length"
              c:identifier="g_mime_iconv_utf8_to_locale_length">
      <doc xml:space="preserve">Allocates a new string buffer containing the first @n bytes of
@str converted to the user's locale charset.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a new string buffer containing the first @n bytes of @str converted to the user's locale charset.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">string in UTF-8 charset</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="n" transfer-ownership="none">
          <doc xml:space="preserve">number of bytes to convert</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
      </parameters>
    </function>
    <function name="init" c:identifier="g_mime_init">
      <doc xml:space="preserve">Initializes GMime.

Note: Calls g_mime_charset_map_init() and g_mime_iconv_init() as
well.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve">initialization flags</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
      </parameters>
    </function>
    <function name="locale_charset" c:identifier="g_mime_locale_charset">
      <doc xml:space="preserve">Gets the user's locale charset (or iso-8859-1 by default).</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the user's locale charset (or iso-8859-1 by default).</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function name="locale_language" c:identifier="g_mime_locale_language">
      <doc xml:space="preserve">Gets the user's locale language code (or %NULL by default).</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the user's locale language code (or %NULL by default).</doc>
        <type name="utf8" c:type="const char*"/>
      </return-value>
    </function>
    <function name="references_append"
              c:identifier="g_mime_references_append"
              moved-to="References.append">
      <doc xml:space="preserve">Appends a reference to msgid to the list of references.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="refs" transfer-ownership="none">
          <doc xml:space="preserve">the address of a #GMimeReferences list</doc>
          <type name="References" c:type="GMimeReferences**"/>
        </parameter>
        <parameter name="msgid" transfer-ownership="none">
          <doc xml:space="preserve">a message-id string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="references_clear"
              c:identifier="g_mime_references_clear"
              moved-to="References.clear">
      <doc xml:space="preserve">Clears the #GMimeReferences list and resets it to %NULL.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="refs" transfer-ownership="none">
          <doc xml:space="preserve">address of a #GMimeReferences list</doc>
          <type name="References" c:type="GMimeReferences**"/>
        </parameter>
      </parameters>
    </function>
    <function name="set_user_charsets" c:identifier="g_mime_set_user_charsets">
      <doc xml:space="preserve">Set a list of charsets for GMime to use as a hint for encoding and
decoding headers. The charset list should be in order of preference
(e.g. most preferred first, least preferred last).</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="charsets" transfer-ownership="none">
          <doc xml:space="preserve">an array of user-preferred charsets</doc>
          <type name="utf8" c:type="const char**"/>
        </parameter>
      </parameters>
    </function>
    <function name="shutdown" c:identifier="g_mime_shutdown">
      <doc xml:space="preserve">Frees internally allocated tables created in g_mime_init(). Also
calls g_mime_charset_map_shutdown() and g_mime_iconv_shutdown().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="user_charsets" c:identifier="g_mime_user_charsets">
      <doc xml:space="preserve">Get the list of user-preferred charsets set with
g_mime_set_user_charsets().</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">an array of user-set charsets or %NULL if none set.</doc>
        <array c:type="char**">
          <type name="utf8"/>
        </array>
      </return-value>
    </function>
    <function name="utils_best_encoding"
              c:identifier="g_mime_utils_best_encoding">
      <doc xml:space="preserve">Determines the best content encoding for the first @len bytes of
@text.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a #GMimeContentEncoding that is determined to be the best encoding type for the specified block of text. ("best" in this particular case means smallest output size)</doc>
        <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
      </return-value>
      <parameters>
        <parameter name="text" transfer-ownership="none">
          <doc xml:space="preserve">text to encode</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve">text length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_decode_8bit" c:identifier="g_mime_utils_decode_8bit">
      <doc xml:space="preserve">Attempts to convert text in an unknown 8bit/multibyte charset into
UTF-8 by finding the charset which will convert the most bytes into
valid UTF-8 characters as possible. If no exact match can be found,
it will choose the best match and convert invalid byte sequences
into question-marks (?) in the returned string buffer.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a UTF-8 string representation of @text.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="text" transfer-ownership="none">
          <doc xml:space="preserve">input text in unknown 8bit/multibyte character set</doc>
          <array length="1" zero-terminated="0" c:type="char*">
            <type name="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve">input text length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_decode_message_id"
              c:identifier="g_mime_utils_decode_message_id">
      <doc xml:space="preserve">Decodes a msg-id as defined by rfc822.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">the addr-spec portion of the msg-id.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="message_id" transfer-ownership="none">
          <doc xml:space="preserve">string containing a message-id</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_generate_message_id"
              c:identifier="g_mime_utils_generate_message_id">
      <doc xml:space="preserve">Generates a unique Message-Id.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a unique string in an addr-spec format suitable for use as a Message-Id.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="fqdn" transfer-ownership="none">
          <doc xml:space="preserve">Fully qualified domain name</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_header_decode_date"
              c:identifier="g_mime_utils_header_decode_date">
      <doc xml:space="preserve">Decodes the rfc822 date string and saves the GMT offset into
@tz_offset if non-NULL.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the time_t representation of the date string specified by @str or (time_t) %0 on error. If @tz_offset is non-NULL, the value of the timezone offset will be stored.</doc>
        <type name="glong" c:type="time_t"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">input date string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="tz_offset"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">timezone offset</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_header_decode_phrase"
              c:identifier="g_mime_utils_header_decode_phrase">
      <doc xml:space="preserve">Decodes an rfc2047 encoded 'phrase' header.

Note: See g_mime_set_user_charsets() for details on how charset
conversion is handled for unencoded 8bit text and/or wrongly
specified rfc2047 encoded-word tokens.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a newly allocated UTF-8 string representing the the decoded header.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="phrase" transfer-ownership="none">
          <doc xml:space="preserve">header to decode</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_header_decode_text"
              c:identifier="g_mime_utils_header_decode_text">
      <doc xml:space="preserve">Decodes an rfc2047 encoded 'text' header.

Note: See g_mime_set_user_charsets() for details on how charset
conversion is handled for unencoded 8bit text and/or wrongly
specified rfc2047 encoded-word tokens.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a newly allocated UTF-8 string representing the the decoded header.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="text" transfer-ownership="none">
          <doc xml:space="preserve">header text to decode</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_header_encode_phrase"
              c:identifier="g_mime_utils_header_encode_phrase">
      <doc xml:space="preserve">Encodes a 'phrase' header according to the rules in rfc2047.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">the encoded 'phrase'. Useful for encoding internet addresses.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="phrase" transfer-ownership="none">
          <doc xml:space="preserve">phrase to encode</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_header_encode_text"
              c:identifier="g_mime_utils_header_encode_text">
      <doc xml:space="preserve">Encodes a 'text' header according to the rules in rfc2047.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">the encoded header. Useful for encoding headers like "Subject".</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="text" transfer-ownership="none">
          <doc xml:space="preserve">text to encode</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_header_fold" c:identifier="g_mime_utils_header_fold">
      <doc xml:space="preserve">Folds a structured header according to the rules in rfc822.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">an allocated string containing the folded header.  WARNING: This function is obsolete. Use g_mime_utils_structured_header_fold() instead.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="header" transfer-ownership="none">
          <doc xml:space="preserve">header field and value string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_header_format_date"
              c:identifier="g_mime_utils_header_format_date">
      <doc xml:space="preserve">Allocates a string buffer containing the rfc822 formatted date
string represented by @time and @tz_offset.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a valid string representation of the date.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="date" transfer-ownership="none">
          <doc xml:space="preserve">time_t date representation</doc>
          <type name="glong" c:type="time_t"/>
        </parameter>
        <parameter name="tz_offset" transfer-ownership="none">
          <doc xml:space="preserve">Timezone offset</doc>
          <type name="gint" c:type="int"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_header_printf"
              c:identifier="g_mime_utils_header_printf"
              introspectable="0">
      <doc xml:space="preserve">Allocates a buffer containing a formatted header specified by the
@Varargs.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">an allocated string containing the folded header specified by @format and the following arguments.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="format" transfer-ownership="none">
          <doc xml:space="preserve">string format</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="arg1" transfer-ownership="none">
          <varargs>
          </varargs>
        </parameter>
      </parameters>
    </function>
    <function name="utils_quote_string"
              c:identifier="g_mime_utils_quote_string">
      <doc xml:space="preserve">Quotes @string as needed according to the rules in rfc2045.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">an allocated string containing the escaped and quoted (if needed to be) input string. The decision to quote the string is based on whether or not the input string contains any 'tspecials' as defined by rfc2045.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">input string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_structured_header_fold"
              c:identifier="g_mime_utils_structured_header_fold">
      <doc xml:space="preserve">Folds a structured header according to the rules in rfc822.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">an allocated string containing the folded header.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="header" transfer-ownership="none">
          <doc xml:space="preserve">header field and value string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_text_is_8bit"
              c:identifier="g_mime_utils_text_is_8bit">
      <doc xml:space="preserve">Determines if @text contains 8bit characters within the first @len
bytes.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the text contains 8bit characters or %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="text" transfer-ownership="none">
          <doc xml:space="preserve">text to check for 8bit chars</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve">text length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_unquote_string"
              c:identifier="g_mime_utils_unquote_string">
      <doc xml:space="preserve">Unquotes and unescapes a string.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">input string</doc>
          <type name="utf8" c:type="char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_unstructured_header_fold"
              c:identifier="g_mime_utils_unstructured_header_fold">
      <doc xml:space="preserve">Folds an unstructured header according to the rules in rfc822.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">an allocated string containing the folded header.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="header" transfer-ownership="none">
          <doc xml:space="preserve">header field and value string</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
      </parameters>
    </function>
    <function name="ydecode_step" c:identifier="g_mime_ydecode_step">
      <doc xml:space="preserve">Performs a 'decode step' on a chunk of yEncoded data of length
@inlen pointed to by @inbuf and writes to @outbuf. Assumes the =ybegin
and =ypart lines have already been stripped off.

To get the crc32 value of the part, use #GMIME_YENCODE_CRC_FINAL
(@pcrc). If there are more parts, you should reuse @crc without
re-initializing. Once all parts have been decoded, you may get the
combined crc32 value of all the parts using #GMIME_YENCODE_CRC_FINAL
(@crc).</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes decoded.</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output buffer</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">ydecode state</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="pcrc" transfer-ownership="none">
          <doc xml:space="preserve">part crc state</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
        <parameter name="crc" transfer-ownership="none">
          <doc xml:space="preserve">crc state</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="yencode_close" c:identifier="g_mime_yencode_close">
      <doc xml:space="preserve">Call this function when finished encoding data with
g_mime_yencode_step() to flush off the remaining state.

#GMIME_YENCODE_CRC_FINAL (@pcrc) will give you the crc32 of the
encoded "part". If there are more "parts" to encode, you should
re-use @crc when encoding the next "parts" and then use
#GMIME_YENCODE_CRC_FINAL (@crc) to get the combined crc32 value of
all the parts.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes encoded.</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output buffer</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">yencode state</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="pcrc" transfer-ownership="none">
          <doc xml:space="preserve">part crc state</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
        <parameter name="crc" transfer-ownership="none">
          <doc xml:space="preserve">crc state</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
    <function name="yencode_step" c:identifier="g_mime_yencode_step">
      <doc xml:space="preserve">Performs an yEncode 'encode step' on a chunk of raw data of length
@inlen pointed to by @inbuf and writes to @outbuf.

@state should be initialized to #GMIME_YENCODE_STATE_INIT before
beginning making the first call to this function. Subsequent calls
should reuse @state.

Along the same lines, @pcrc and @crc should be initialized to
#GMIME_YENCODE_CRC_INIT before using.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the number of bytes encoded.</doc>
        <type name="gulong" c:type="size_t"/>
      </return-value>
      <parameters>
        <parameter name="inbuf" transfer-ownership="none">
          <doc xml:space="preserve">input buffer</doc>
          <type name="guint8" c:type="const unsigned char*"/>
        </parameter>
        <parameter name="inlen" transfer-ownership="none">
          <doc xml:space="preserve">input buffer length</doc>
          <type name="gulong" c:type="size_t"/>
        </parameter>
        <parameter name="outbuf" transfer-ownership="none">
          <doc xml:space="preserve">output buffer</doc>
          <type name="guint8" c:type="unsigned char*"/>
        </parameter>
        <parameter name="state" transfer-ownership="none">
          <doc xml:space="preserve">yencode state</doc>
          <type name="gint" c:type="int*"/>
        </parameter>
        <parameter name="pcrc" transfer-ownership="none">
          <doc xml:space="preserve">part crc state</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
        <parameter name="crc" transfer-ownership="none">
          <doc xml:space="preserve">crc state</doc>
          <type name="guint32" c:type="guint32*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
