<?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-3.0"/>
  <c:include name="gmime/gmime.h"/>
  <namespace name="GMime"
             version="3.0"
             shared-library="libgmime-3.0.so.0"
             c:identifier-prefixes="GMime"
             c:symbol-prefixes="gmime_,g_mime_">
    <enumeration name="AddressType" c:type="GMimeAddressType">
      <doc xml:space="preserve">An address type.</doc>
      <member name="sender" value="0" c:identifier="GMIME_ADDRESS_TYPE_SENDER">
        <doc xml:space="preserve">Represents the addresses in the Sender header.</doc>
      </member>
      <member name="from" value="1" c:identifier="GMIME_ADDRESS_TYPE_FROM">
        <doc xml:space="preserve">Represents the addresses in the From header.</doc>
      </member>
      <member name="reply_to"
              value="2"
              c:identifier="GMIME_ADDRESS_TYPE_REPLY_TO">
        <doc xml:space="preserve">Represents the addresses in the Reply-To header.</doc>
      </member>
      <member name="to" value="3" c:identifier="GMIME_ADDRESS_TYPE_TO">
        <doc xml:space="preserve">Represents the recipients in the To header.</doc>
      </member>
      <member name="cc" value="4" c:identifier="GMIME_ADDRESS_TYPE_CC">
        <doc xml:space="preserve">Represents the recipients in the Cc header.</doc>
      </member>
      <member name="bcc" value="5" c:identifier="GMIME_ADDRESS_TYPE_BCC">
        <doc xml:space="preserve">Represents the recipients in the Bcc header.</doc>
      </member>
    </enumeration>
    <class name="ApplicationPkcs7Mime"
           c:symbol-prefix="application_pkcs7_mime"
           c:type="GMimeApplicationPkcs7Mime"
           parent="Part"
           glib:type-name="GMimeApplicationPkcs7Mime"
           glib:get-type="g_mime_application_pkcs7_mime_get_type"
           glib:type-struct="ApplicationPkcs7MimeClass">
      <doc xml:space="preserve">An application/pkcs7-mime MIME part.</doc>
      <constructor name="new" c:identifier="g_mime_application_pkcs7_mime_new">
        <doc xml:space="preserve">Creates a new application/pkcs7-mime object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty application/pkcs7-mime object.</doc>
          <type name="ApplicationPkcs7Mime"
                c:type="GMimeApplicationPkcs7Mime*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">The type of S/MIME data contained within the part.</doc>
            <type name="SecureMimeType" c:type="GMimeSecureMimeType"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="encrypt"
                c:identifier="g_mime_application_pkcs7_mime_encrypt"
                throws="1">
        <doc xml:space="preserve">Attempts to encrypt the @entity MIME part to the public keys of @recipients
using S/MIME. If successful, a new application/pkcs7-mime object is returned.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve">a new #GMimeApplicationPkcs7Mime object on success
or %NULL on fail. If encrypting fails, an exception will be set on @err to provide
information as to why the failure occurred.</doc>
          <type name="ApplicationPkcs7Mime"
                c:type="GMimeApplicationPkcs7Mime*"/>
        </return-value>
        <parameters>
          <parameter name="entity" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject to encrypt</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncryptFlags</doc>
            <type name="EncryptFlags" c:type="GMimeEncryptFlags"/>
          </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>
      </function>
      <function name="sign"
                c:identifier="g_mime_application_pkcs7_mime_sign"
                throws="1">
        <doc xml:space="preserve">Attempts to sign the @entity MIME part with @userid's private key using
S/MIME. If successful, a new application/pkcs7-mime object is returned.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve">a new #GMimeApplicationPkcs7Mime object on success
or %NULL on fail. If signing fails, an exception will be set on @err to provide
information as to why the failure occurred.</doc>
          <type name="ApplicationPkcs7Mime"
                c:type="GMimeApplicationPkcs7Mime*"/>
        </return-value>
        <parameters>
          <parameter name="entity" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
          <parameter name="userid" transfer-ownership="none">
            <doc xml:space="preserve">the user id to sign with</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <method name="decrypt"
              c:identifier="g_mime_application_pkcs7_mime_decrypt"
              throws="1">
        <doc xml:space="preserve">Attempts to decrypt the encrypted application/pkcs7-mime part.

When non-%NULL, @session_key should be a %NULL-terminated string,
such as the one returned by g_mime_decrypt_result_get_session_key()
from a previous decryption. If the @session_key is not valid, decryption
will fail.

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" nullable="1">
          <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 occurred.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="pkcs7_mime" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeApplicationPkcs7Mime</doc>
            <type name="ApplicationPkcs7Mime"
                  c:type="GMimeApplicationPkcs7Mime*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDecryptFlags</doc>
            <type name="DecryptFlags" c:type="GMimeDecryptFlags"/>
          </parameter>
          <parameter name="session_key" transfer-ownership="none">
            <doc xml:space="preserve">session key to use or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">the decryption result</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_smime_type"
              c:identifier="g_mime_application_pkcs7_mime_get_smime_type">
        <doc xml:space="preserve">Gets the smime-type value of the Content-Type header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the smime-type value.</doc>
          <type name="SecureMimeType" c:type="GMimeSecureMimeType"/>
        </return-value>
        <parameters>
          <instance-parameter name="pkcs7_mime" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeApplicationPkcs7Mime object</doc>
            <type name="ApplicationPkcs7Mime"
                  c:type="GMimeApplicationPkcs7Mime*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="verify"
              c:identifier="g_mime_application_pkcs7_mime_verify"
              throws="1">
        <doc xml:space="preserve">Attempts to verify the signed @pkcs7_mime part and extract the original
MIME entity.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <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
occurred.</doc>
          <type name="SignatureList" c:type="GMimeSignatureList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="pkcs7_mime" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeApplicationPkcs7Mime</doc>
            <type name="ApplicationPkcs7Mime"
                  c:type="GMimeApplicationPkcs7Mime*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeVerifyFlags</doc>
            <type name="VerifyFlags" c:type="GMimeVerifyFlags"/>
          </parameter>
          <parameter name="entity"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">the extracted entity</doc>
            <type name="Object" c:type="GMimeObject**"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimePart object</doc>
        <type name="Part" c:type="GMimePart"/>
      </field>
      <field name="smime_type">
        <doc xml:space="preserve">The smime-type Content-Type parameter.</doc>
        <type name="SecureMimeType" c:type="GMimeSecureMimeType"/>
      </field>
    </class>
    <record name="ApplicationPkcs7MimeClass"
            c:type="GMimeApplicationPkcs7MimeClass"
            glib:is-gtype-struct-for="ApplicationPkcs7Mime">
      <field name="parent_class">
        <type name="PartClass" c:type="GMimePartClass"/>
      </field>
    </record>
    <class name="AutocryptHeader"
           c:symbol-prefix="autocrypt_header"
           c:type="GMimeAutocryptHeader"
           parent="GObject.Object"
           glib:type-name="GMimeAutocryptHeader"
           glib:get-type="g_mime_autocrypt_header_get_type"
           glib:type-struct="AutocryptHeaderClass">
      <doc xml:space="preserve">An object containing Autocrypt information about a given e-mail
address, as derived from a message header.

See https://autocrypt.org/ for details and motivation.</doc>
      <constructor name="new" c:identifier="g_mime_autocrypt_header_new">
        <doc xml:space="preserve">Creates a new #GMimeAutocryptHeader object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeAutocryptHeader object.</doc>
          <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
        </return-value>
      </constructor>
      <constructor name="new_from_string"
                   c:identifier="g_mime_autocrypt_header_new_from_string">
        <doc xml:space="preserve">Creates a new #GMimeAutocryptHeader object based on the value of an
Autocrypt: header.

Note that this will not have an @effective_date set, since the
@effective_date is derived from the Date: line in the same block of
e-mail headers, but cannot be extracted from the raw Autocrypt:
header itself.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeAutocryptHeader object, or
%NULL on error.</doc>
          <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
        </return-value>
        <parameters>
          <parameter name="string" transfer-ownership="none">
            <doc xml:space="preserve">The raw string value of an Autocrypt header</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="clone" c:identifier="g_mime_autocrypt_header_clone">
        <doc xml:space="preserve">If address and type already match between @src and @dst, copy
keydata, prefer_encrypt, effective_date from @src to @dst.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dst" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
          <parameter name="src" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </parameter>
        </parameters>
      </method>
      <method name="compare" c:identifier="g_mime_autocrypt_header_compare">
        <doc xml:space="preserve">Compare two Autocrypt Headers.  This is useful for comparison, as well as for
sorting headers by:

 - address
 - effective_date
 - keydata
 - prefer_encrypt</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">-1, 0, or 1 when @ah1 is less than, equal to, or greater than @ah2.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah1" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
          <parameter name="ah2" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_address"
              c:identifier="g_mime_autocrypt_header_get_address">
        <doc xml:space="preserve">Gets the internal address of the Autocrypt header, or %NULL if not set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the address associated with the Autocrypt header</doc>
          <type name="InternetAddressMailbox"
                c:type="InternetAddressMailbox*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_address_as_string"
              c:identifier="g_mime_autocrypt_header_get_address_as_string">
        <doc xml:space="preserve">Gets the internal address of the Autocrypt header as a C string, or %NULL if not set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the address associated with the Autocrypt header</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_effective_date"
              c:identifier="g_mime_autocrypt_header_get_effective_date">
        <doc xml:space="preserve">Gets the effective date of the Autocrypt header, or %NULL if not set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the effective date associated with the Autocrypt header</doc>
          <type name="GLib.DateTime" c:type="GDateTime*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_keydata"
              c:identifier="g_mime_autocrypt_header_get_keydata">
        <doc xml:space="preserve">Gets the raw keydata of the Autocrypt header, or %NULL if not set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the raw key data associated with the Autocrypt header</doc>
          <type name="GLib.Bytes" c:type="GBytes*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_prefer_encrypt"
              c:identifier="g_mime_autocrypt_header_get_prefer_encrypt">
        <doc xml:space="preserve">Gets the encryption preference stated by the Autocrypt header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the encryption preference associated with the Autocrypt header</doc>
          <type name="AutocryptPreferEncrypt"
                c:type="GMimeAutocryptPreferEncrypt"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_complete"
              c:identifier="g_mime_autocrypt_header_is_complete">
        <doc xml:space="preserve">When dealing with Autocrypt headers derived from a message, some
sender addresses will not have a legitimate/complete header
associated with them.  When a given sender address has no complete
header of a specific type, it should "reset" the state of the
associated address.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the header is complete, or %FALSE if it is incomplete.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_address"
              c:identifier="g_mime_autocrypt_header_set_address">
        <doc xml:space="preserve">Set the address associated with the autocrypt_header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve">a #InternetAddressMailbox value</doc>
            <type name="InternetAddressMailbox"
                  c:type="InternetAddressMailbox*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_address_from_string"
              c:identifier="g_mime_autocrypt_header_set_address_from_string">
        <doc xml:space="preserve">Set the address associated with the autocrypt_header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none">
            <doc xml:space="preserve">a %NULL-terminated string that is a raw e-mail address</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_effective_date"
              c:identifier="g_mime_autocrypt_header_set_effective_date">
        <doc xml:space="preserve">Set the effective date associated with the Autocrypt header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
          <parameter name="effective_date" transfer-ownership="none">
            <doc xml:space="preserve">a #GDateTime object</doc>
            <type name="GLib.DateTime" c:type="GDateTime*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_keydata"
              c:identifier="g_mime_autocrypt_header_set_keydata">
        <doc xml:space="preserve">Set the raw key data associated with the Autocrypt header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <type name="GLib.Bytes" c:type="GBytes*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_prefer_encrypt"
              c:identifier="g_mime_autocrypt_header_set_prefer_encrypt">
        <doc xml:space="preserve">Set the encryption preference associated with the Autocrypt header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
          <parameter name="pref" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptPreferEncrypt value</doc>
            <type name="AutocryptPreferEncrypt"
                  c:type="GMimeAutocryptPreferEncrypt"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string"
              c:identifier="g_mime_autocrypt_header_to_string">
        <doc xml:space="preserve">Gets the string representation of the Autocrypt header, or %NULL on
error.  For example, it might return:

    prefer-encrypt=mutual; addr=bob\@example.com; keydata=AAAB15BE...

If you are using this object to populate an Autocrypt-Gossip
header, you should set @gossip to %TRUE (this will suppress
inclusion of prefer-encrypt).</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the string representation of the
Autocrypt header.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="ah" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </instance-parameter>
          <parameter name="gossip" transfer-ownership="none">
            <doc xml:space="preserve">a #gboolean, indicating whether this header is for use with gossip</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="address">
        <doc xml:space="preserve">the #InternetAddressMailbox associated with this Autocrypt header.</doc>
        <type name="InternetAddressMailbox" c:type="InternetAddressMailbox*"/>
      </field>
      <field name="prefer_encrypt">
        <doc xml:space="preserve">a #GMimeAutocryptPreferEncrypt value (defaults to @GMIME_AUTOCRYPT_PREFER_ENCRYPT_NONE).</doc>
        <type name="AutocryptPreferEncrypt"
              c:type="GMimeAutocryptPreferEncrypt"/>
      </field>
      <field name="keydata">
        <doc xml:space="preserve">the raw binary form of the encoded key.</doc>
        <type name="GLib.Bytes" c:type="GBytes*"/>
      </field>
      <field name="effective_date">
        <doc xml:space="preserve">the date associated with the Autocrypt header in this message.</doc>
        <type name="GLib.DateTime" c:type="GDateTime*"/>
      </field>
    </class>
    <record name="AutocryptHeaderClass"
            c:type="GMimeAutocryptHeaderClass"
            glib:is-gtype-struct-for="AutocryptHeader">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="AutocryptHeaderList"
           c:symbol-prefix="autocrypt_header_list"
           c:type="GMimeAutocryptHeaderList"
           parent="GObject.Object"
           glib:type-name="GMimeAutocryptHeaderList"
           glib:get-type="g_mime_autocrypt_header_list_get_type"
           glib:type-struct="AutocryptHeaderListClass">
      <doc xml:space="preserve">A list of Autocrypt headers, typically extracted from a GMimeMessage.</doc>
      <constructor name="new" c:identifier="g_mime_autocrypt_header_list_new">
        <doc xml:space="preserve">Creates a new #GMimeAutocryptHeaderList object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeAutocryptHeaderList object.</doc>
          <type name="AutocryptHeaderList" c:type="GMimeAutocryptHeaderList*"/>
        </return-value>
      </constructor>
      <method name="add" c:identifier="g_mime_autocrypt_header_list_add">
        <doc xml:space="preserve">Adds a the passed #GMimeAutocryptHeader to the 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 #GMimeAutocryptHeaderList object</doc>
            <type name="AutocryptHeaderList"
                  c:type="GMimeAutocryptHeaderList*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeader object</doc>
            <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_missing_addresses"
              c:identifier="g_mime_autocrypt_header_list_add_missing_addresses">
        <doc xml:space="preserve">Adds a new incomplete #GMimeAutocryptHeader object for each
InternetAddressMailbox found in #addresses.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of addresses added</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeaderList object</doc>
            <type name="AutocryptHeaderList"
                  c:type="GMimeAutocryptHeaderList*"/>
          </instance-parameter>
          <parameter name="addresses" transfer-ownership="none">
            <doc xml:space="preserve">an #InternetAddressList object</doc>
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_count"
              c:identifier="g_mime_autocrypt_header_list_get_count">
        <doc xml:space="preserve">See how many Autocrypt headers are in the list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of available Autocrypt headers</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeaderList object</doc>
            <type name="AutocryptHeaderList"
                  c:type="GMimeAutocryptHeaderList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_header_at"
              c:identifier="g_mime_autocrypt_header_list_get_header_at">
        <doc xml:space="preserve">Get the Nth header in the list (returns %NULL on error, or if @index is out of bounds)</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a pointer to the Nth header in the list.</doc>
          <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeaderList object</doc>
            <type name="AutocryptHeaderList"
                  c:type="GMimeAutocryptHeaderList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">an index into the list</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_header_for_address"
              c:identifier="g_mime_autocrypt_header_list_get_header_for_address">
        <doc xml:space="preserve">Gets the Autocrypt header corresponding to the given @mailbox.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a pointer to the header in the list which
matches the requested address, or %NULL if no such header exists in
the list.</doc>
          <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeAutocryptHeaderList object</doc>
            <type name="AutocryptHeaderList"
                  c:type="GMimeAutocryptHeaderList*"/>
          </instance-parameter>
          <parameter name="mailbox" transfer-ownership="none">
            <doc xml:space="preserve">an #InternetAddressMailbox object</doc>
            <type name="InternetAddressMailbox"
                  c:type="InternetAddressMailbox*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_incomplete"
              c:identifier="g_mime_autocrypt_header_list_remove_incomplete">
        <doc xml:space="preserve">Remove all incomplete Autocrypt headers from the 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 #GMimeAutocryptHeaderList object</doc>
            <type name="AutocryptHeaderList"
                  c:type="GMimeAutocryptHeaderList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="array" readable="0" private="1">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="AutocryptHeaderListClass"
            c:type="GMimeAutocryptHeaderListClass"
            glib:is-gtype-struct-for="AutocryptHeaderList">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="AutocryptPreferEncrypt"
                 c:type="GMimeAutocryptPreferEncrypt">
      <doc xml:space="preserve">A description of the user's preference for encrypted messaging.</doc>
      <member name="none"
              value="0"
              c:identifier="GMIME_AUTOCRYPT_PREFER_ENCRYPT_NONE">
        <doc xml:space="preserve">No preference stated.</doc>
      </member>
      <member name="mutual"
              value="1"
              c:identifier="GMIME_AUTOCRYPT_PREFER_ENCRYPT_MUTUAL">
        <doc xml:space="preserve">Please encrypt, if you also have this preference</doc>
      </member>
    </enumeration>
    <constant name="BINARY_AGE" value="200" 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 email address associated with the certificate.  If the
certificate contains more than one email address with different
validities, the email address with the highest validity is
returned.  If more than one email address appears in the
certificate with the same (highest) validity, the first such email
address will be returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the relevant e-mail address, 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_id_validity"
              c:identifier="g_mime_certificate_get_id_validity">
        <doc xml:space="preserve">Get the validity of the certificate's identity information.  This
validity applies to the name, email, and user_id fields associated
with the certificate.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the identity validity of the certificate.</doc>
          <type name="Validity" c:type="GMimeValidity"/>
        </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 name associated with the certificate.  For email
certificates, this is usually the name of the person who controls
the certificate (encoded in UTF-8).  If the certificate contains
more than one name with different validities, the name with the
highest validity is returned.  If more than one name appears in the
certificate with the same (highest) validity, the first such name
will be returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the the relevant 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="Trust" c:type="GMimeTrust"/>
        </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_user_id" c:identifier="g_mime_certificate_get_user_id">
        <doc xml:space="preserve">Get the certificate's full User ID.  If the certificate contains
more than one User ID with different validities, the User ID with
the highest validity is returned.  If more than one User ID appears
in the certificate with the same (highest) validity, the first such
User ID will be returned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the relevant User 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="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 email address associated with the
certificate. (e.g. "jane\@example.org")</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_id_validity"
              c:identifier="g_mime_certificate_set_id_validity">
        <doc xml:space="preserve">Set the validity associated with the certificate's name, email, and user_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="validity" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeValidity representing the validity of the certificate's identity information.</doc>
            <type name="Validity" c:type="GMimeValidity"/>
          </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 name associated with the certificate.  For email
certificates, this is usually the name of the person who controls
the certificate (encoded in UTF-8). (e.g. "Jane Doe")</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 #GMimeTrust value</doc>
            <type name="Trust" c:type="GMimeTrust"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_user_id" c:identifier="g_mime_certificate_set_user_id">
        <doc xml:space="preserve">Set the certificate's full User ID.  By convention, this is usually
a mail name-addr as described in RFC 5322.  (e.g. "Jane Doe
&amp;lt;jane\@example.org&amp;gt;")</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="user_id" transfer-ownership="none">
            <doc xml:space="preserve">the full User ID for a certificate</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="pubkey_algo">
        <doc xml:space="preserve">The public-key algorithm used by the certificate, if known.</doc>
        <type name="PubKeyAlgo" c:type="GMimePubKeyAlgo"/>
      </field>
      <field name="digest_algo">
        <doc xml:space="preserve">The digest algorithm used by the certificate, if known.</doc>
        <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
      </field>
      <field name="trust">
        <doc xml:space="preserve">The level of trust assigned to this certificate.</doc>
        <type name="Trust" c:type="GMimeTrust"/>
      </field>
      <field name="issuer_serial">
        <doc xml:space="preserve">The issuer of the certificate, if known.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="issuer_name">
        <doc xml:space="preserve">The issuer of the certificate, if known.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="fingerprint">
        <doc xml:space="preserve">A hex string representing the certificate's fingerprint.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="created">
        <doc xml:space="preserve">The creation date of the certificate.</doc>
        <type name="glong" c:type="time_t"/>
      </field>
      <field name="expires">
        <doc xml:space="preserve">The expiration date of the certificate.</doc>
        <type name="glong" c:type="time_t"/>
      </field>
      <field name="keyid">
        <doc xml:space="preserve">The certificate's key id.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="email">
        <doc xml:space="preserve">The email address of the person or entity.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="name">
        <doc xml:space="preserve">The name of the person or entity.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="user_id">
        <doc xml:space="preserve">The full User ID of the certificate.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="id_validity">
        <doc xml:space="preserve">the validity of the email address, name, and User ID.</doc>
        <type name="Validity" c:type="GMimeValidity"/>
      </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 certificates.</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 a #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 of the certificate 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">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="array">
        <doc xml:space="preserve">An array of #GMimeCertificate objects.</doc>
        <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>
    <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">
        <doc xml:space="preserve">charset mask</doc>
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="level" writable="1">
        <doc xml:space="preserve">charset level</doc>
        <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" nullable="1">
          <doc xml:space="preserve">the charset name that best represents the charset
mask @charset or %NULL for us-ascii.</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="gsize" 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="gsize" 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" nullable="1">
          <doc xml:space="preserve">the charset name best suited for the input text
or %NULL if it is 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="gsize" 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" nullable="1">
          <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>
      <function name="parse" c:identifier="g_mime_content_disposition_parse">
        <doc xml:space="preserve">Parses the input string into a #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="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">Content-Disposition field value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <method name="encode" c:identifier="g_mime_content_disposition_encode">
        <doc xml:space="preserve">Encodes the Content-Disposition header.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new string containing the encoded header value.</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="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
        </parameters>
      </method>
      <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="name" transfer-ownership="none">
            <doc xml:space="preserve">parameter name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_parameters"
              c:identifier="g_mime_content_disposition_get_parameters">
        <doc xml:space="preserve">Gets the Content-Disposition parameter list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the Content-Disposition's parameter list.</doc>
          <type name="ParamList" c:type="GMimeParamList*"/>
        </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="is_attachment"
              c:identifier="g_mime_content_disposition_is_attachment">
        <doc xml:space="preserve">Determines if a Content-Disposition has a value of "attachment".</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the value matches "attachment", otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </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="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>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="disposition">
        <doc xml:space="preserve">disposition</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="params">
        <doc xml:space="preserve">a #GMimeParam list</doc>
        <type name="ParamList" c:type="GMimeParamList*"/>
      </field>
      <field name="changed" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </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">the MIME type or %NULL for the default value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="subtype" transfer-ownership="none">
            <doc xml:space="preserve">the MIME subtype or %NULL for the default value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="parse" c:identifier="g_mime_content_type_parse">
        <doc xml:space="preserve">Parses the input string into a #GMimeContentType object.</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="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </parameter>
          <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>
      </function>
      <method name="encode" c:identifier="g_mime_content_type_encode">
        <doc xml:space="preserve">Encodes the Content-Disposition header.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new string containing the encoded header value.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
        </parameters>
      </method>
      <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="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType</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="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mime_type"
              c:identifier="g_mime_content_type_get_mime_type">
        <doc xml:space="preserve">Allocates a string buffer containing the type and subtype defined
by the @content_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="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType</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="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">parameter name (aka attribute)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_parameters"
              c:identifier="g_mime_content_type_get_parameters">
        <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="ParamList" c:type="GMimeParamList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType</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="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType</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="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType</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="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType</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="content_type" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeContentType</doc>
            <type name="ContentType" c:type="GMimeContentType*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">parameter name (aka attribute)</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>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="type">
        <doc xml:space="preserve">media type</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="subtype">
        <doc xml:space="preserve">media subtype</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="params">
        <doc xml:space="preserve">a #GMimeParam list</doc>
        <type name="ParamList" c:type="GMimeParamList*"/>
      </field>
      <field name="changed" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </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>
      <constructor name="new" c:identifier="g_mime_crypto_context_new">
        <doc xml:space="preserve">Creates a new crypto context for the specified @protocol.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve">a newly allocated #GMimeCryptoContext.</doc>
          <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
        </return-value>
        <parameters>
          <parameter name="protocol" transfer-ownership="none">
            <doc xml:space="preserve">the crypto protocol</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="register"
                c:identifier="g_mime_crypto_context_register"
                introspectable="0">
        <doc xml:space="preserve">Registers the callback for the specified @protocol.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="protocol" transfer-ownership="none">
            <doc xml:space="preserve">crypto protocol</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="callback" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContextNewFunc</doc>
            <type name="CryptoContextNewFunc"
                  c:type="GMimeCryptoContextNewFunc"/>
          </parameter>
        </parameters>
      </function>
      <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.

When non-%NULL, @session_key should be a %NULL-terminated string,
such as the one returned by g_mime_decrypt_result_get_session_key()
from a previous decryption. If the @session_key is not valid, decryption
will fail.

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.

Note: It *may* be possible to maliciously design an encrypted stream such
that recursively decrypting it will result in an endless loop, causing
a denial of service attack on your application.</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="flags" transfer-ownership="none">
            <doc xml:space="preserve">a set of #GMimeDecryptFlags</doc>
            <type name="DecryptFlags" c:type="GMimeDecryptFlags"/>
          </parameter>
          <parameter name="session_key"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the session key to use or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </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">
            <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>
      </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" nullable="1">
          <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>
      </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">
            <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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the key id (or email address) to use when signing (assuming @sign is %TRUE)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a set of #GMimeEncryptFlags</doc>
            <type name="EncryptFlags" c:type="GMimeEncryptFlags"/>
          </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.

If @keys is %NULL or contains only a %NULL element, then all keys
will be exported.</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, terminated by a %NULL element</doc>
            <type name="utf8" c:type="const char**"/>
          </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" nullable="1">
          <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>
      </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" nullable="1">
          <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>
      </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" nullable="1">
          <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>
      </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">the total number of keys imported 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>
      </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 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="detach" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if @ostream should be the detached signature; otherwise, %FALSE</doc>
            <type name="gboolean" c:type="gboolean"/>
          </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="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 and may wish to
provide an @ostream argument for GMime to output the original
plaintext into. 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" nullable="1">
          <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="flags" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeVerifyFlags</doc>
            <type name="VerifyFlags" c:type="GMimeVerifyFlags"/>
          </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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">detached-signature stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="ostream"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">output stream for use with encapsulated signature input streams</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.

When non-%NULL, @session_key should be a %NULL-terminated string,
such as the one returned by g_mime_decrypt_result_get_session_key()
from a previous decryption. If the @session_key is not valid, decryption
will fail.

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.

Note: It *may* be possible to maliciously design an encrypted stream such
that recursively decrypting it will result in an endless loop, causing
a denial of service attack on your application.</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="flags" transfer-ownership="none">
            <doc xml:space="preserve">a set of #GMimeDecryptFlags</doc>
            <type name="DecryptFlags" c:type="GMimeDecryptFlags"/>
          </parameter>
          <parameter name="session_key"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the session key to use or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </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" nullable="1">
          <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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the key id (or email address) to use when signing (assuming @sign is %TRUE)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a set of #GMimeEncryptFlags</doc>
            <type name="EncryptFlags" c:type="GMimeEncryptFlags"/>
          </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.

If @keys is %NULL or contains only a %NULL element, then all keys
will be exported.</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, terminated by a %NULL element</doc>
            <type name="utf8" c:type="const char**"/>
          </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" nullable="1">
          <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" nullable="1">
          <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" nullable="1">
          <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">the total number of keys imported 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 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="detach" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if @ostream should be the detached signature; otherwise, %FALSE</doc>
            <type name="gboolean" c:type="gboolean"/>
          </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="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 and may wish to
provide an @ostream argument for GMime to output the original
plaintext into. 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" nullable="1">
          <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="flags" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeVerifyFlags</doc>
            <type name="VerifyFlags" c:type="GMimeVerifyFlags"/>
          </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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">detached-signature stream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
          <parameter name="ostream"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">output stream for use with encapsulated signature input streams</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="request_passwd">
        <doc xml:space="preserve">a callback for requesting a password</doc>
        <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">
              <doc xml:space="preserve">a #GMimeCryptoContext</doc>
              <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" nullable="1">
            <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">
              <doc xml:space="preserve">a #GMimeCryptoContext</doc>
              <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" nullable="1">
            <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">
              <doc xml:space="preserve">a #GMimeCryptoContext</doc>
              <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" nullable="1">
            <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">
              <doc xml:space="preserve">a #GMimeCryptoContext</doc>
              <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" nullable="1">
            <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">
              <doc xml:space="preserve">a #GMimeCryptoContext</doc>
              <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 or %-1 on fail.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <doc xml:space="preserve">a #GMimeCryptoContext</doc>
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="detach" transfer-ownership="none">
              <doc xml:space="preserve">%TRUE if @ostream should be the detached signature; otherwise, %FALSE</doc>
              <type name="gboolean" c:type="gboolean"/>
            </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="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" nullable="1">
            <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">
              <doc xml:space="preserve">a #GMimeCryptoContext</doc>
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <doc xml:space="preserve">a #GMimeVerifyFlags</doc>
              <type name="VerifyFlags" c:type="GMimeVerifyFlags"/>
            </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"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve">detached-signature stream</doc>
              <type name="Stream" c:type="GMimeStream*"/>
            </parameter>
            <parameter name="ostream"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve">output stream for use with encapsulated signature input streams</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">
              <doc xml:space="preserve">a #GMimeCryptoContext</doc>
              <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"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve">the key id (or email address) to use when signing (assuming @sign is %TRUE)</doc>
              <type name="utf8" c:type="const char*"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <doc xml:space="preserve">a set of #GMimeEncryptFlags</doc>
              <type name="EncryptFlags" c:type="GMimeEncryptFlags"/>
            </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">
              <doc xml:space="preserve">a #GMimeCryptoContext</doc>
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <doc xml:space="preserve">a set of #GMimeDecryptFlags</doc>
              <type name="DecryptFlags" c:type="GMimeDecryptFlags"/>
            </parameter>
            <parameter name="session_key"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve">the session key to use or %NULL</doc>
              <type name="utf8" c:type="const char*"/>
            </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">the total number of keys imported on success or %-1 on fail.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="ctx" transfer-ownership="none">
              <doc xml:space="preserve">a #GMimeCryptoContext</doc>
              <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">
              <doc xml:space="preserve">a #GMimeCryptoContext</doc>
              <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
            </parameter>
            <parameter name="keys" transfer-ownership="none">
              <doc xml:space="preserve">an array of key ids, terminated by a %NULL element</doc>
              <type name="utf8" c:type="const char**"/>
            </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>
    <callback name="CryptoContextNewFunc"
              c:type="GMimeCryptoContextNewFunc"
              introspectable="0">
      <doc xml:space="preserve">A callback used to create a new instance of a #GMimeCryptoContext subclass.</doc>
      <return-value>
        <doc xml:space="preserve">a new #GMimeCryptoContext instance.</doc>
        <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
      </return-value>
    </callback>
    <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="gssize" 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>
      </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="gssize" 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">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="encoding">
        <doc xml:space="preserve">the encoding of the content</doc>
        <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
      </field>
      <field name="stream">
        <doc xml:space="preserve">content stream</doc>
        <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="gssize" c:type="ssize_t"/>
          </return-value>
          <parameters>
            <parameter name="wrapper" transfer-ownership="none">
              <doc xml:space="preserve">a #GMimeDataWrapper</doc>
              <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>
    <bitfield name="DecryptFlags" c:type="GMimeDecryptFlags">
      <doc xml:space="preserve">Decryption flags.</doc>
      <member name="none" value="0" c:identifier="GMIME_DECRYPT_NONE">
        <doc xml:space="preserve">No flags specified.</doc>
      </member>
      <member name="export_session_key"
              value="1"
              c:identifier="GMIME_DECRYPT_EXPORT_SESSION_KEY">
        <doc xml:space="preserve">Export the decryption session-key</doc>
      </member>
    </bitfield>
    <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_session_key"
              c:identifier="g_mime_decrypt_result_get_session_key">
        <doc xml:space="preserve">Get the session key used for this decryption.</doc>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve">the session key digest algorithm used, or %NULL if no
session key was requested or found.</doc>
          <type name="utf8" c:type="const char*"/>
        </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" nullable="1">
          <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_session_key"
              c:identifier="g_mime_decrypt_result_set_session_key">
        <doc xml:space="preserve">Set the session key to be returned by this decryption result.</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="session_key"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a string representing the session key or %NULL to unset the key</doc>
            <type name="utf8" c:type="const char*"/>
          </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">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="recipients">
        <doc xml:space="preserve">A #GMimeCertificateList</doc>
        <type name="CertificateList" c:type="GMimeCertificateList*"/>
      </field>
      <field name="signatures">
        <doc xml:space="preserve">A #GMimeSignatureList if signed or %NULL otherwise.</doc>
        <type name="SignatureList" c:type="GMimeSignatureList*"/>
      </field>
      <field name="cipher">
        <doc xml:space="preserve">The cipher algorithm used to encrypt the stream.</doc>
        <type name="CipherAlgo" c:type="GMimeCipherAlgo"/>
      </field>
      <field name="mdc">
        <doc xml:space="preserve">The MDC digest algorithm used, if any.</doc>
        <type name="DigestAlgo" c:type="GMimeDigestAlgo"/>
      </field>
      <field name="session_key">
        <doc xml:space="preserve">The session key if requested or %NULL otherwise.</doc>
        <type name="utf8" c:type="char*"/>
      </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>
      <member name="crc32" value="302" c:identifier="GMIME_DIGEST_ALGO_CRC32">
        <doc xml:space="preserve">The CRC32 hash algorithm.</doc>
      </member>
      <member name="crc32_rfc1510"
              value="303"
              c:identifier="GMIME_DIGEST_ALGO_CRC32_RFC1510">
        <doc xml:space="preserve">The rfc1510 CRC32 hash algorithm.</doc>
      </member>
      <member name="crc32_rfc2440"
              value="304"
              c:identifier="GMIME_DIGEST_ALGO_CRC32_RFC2440">
        <doc xml:space="preserve">The rfc2440 CRC32 hash algorithm.</doc>
      </member>
    </enumeration>
    <record name="Encoding" c:type="GMimeEncoding">
      <doc xml:space="preserve">A context used for encoding or decoding data.</doc>
      <field name="encoding" writable="1">
        <doc xml:space="preserve">the type of encoding</doc>
        <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
      </field>
      <field name="uubuf" writable="1">
        <doc xml:space="preserve">a temporary buffer needed when uuencoding data</doc>
        <array zero-terminated="0" c:type="unsigned" fixed-size="60">
          <type name="guint" c:type="unsigned"/>
        </array>
      </field>
      <field name="encode" writable="1">
        <doc xml:space="preserve">%TRUE if encoding or %FALSE if decoding</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="save" writable="1">
        <doc xml:space="preserve">saved bytes from the previous step</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="state" writable="1">
        <doc xml:space="preserve">current encder/decoder state</doc>
        <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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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>
    <enumeration name="EncryptFlags" c:type="GMimeEncryptFlags">
      <doc xml:space="preserve">Encryption flags.</doc>
      <member name="none" value="0" c:identifier="GMIME_ENCRYPT_NONE">
        <doc xml:space="preserve">No flags specified.</doc>
      </member>
      <member name="always_trust"
              value="1"
              c:identifier="GMIME_ENCRYPT_ALWAYS_TRUST">
        <doc xml:space="preserve">Always trust the specified keys.</doc>
      </member>
      <member name="no_compress"
              value="16"
              c:identifier="GMIME_ENCRYPT_NO_COMPRESS">
        <doc xml:space="preserve">Don't compress the plaintext before encrypting.</doc>
      </member>
      <member name="symmetric"
              value="32"
              c:identifier="GMIME_ENCRYPT_SYMMETRIC">
        <doc xml:space="preserve">Encrypt symmetrically.</doc>
      </member>
      <member name="throw_keyids"
              value="64"
              c:identifier="GMIME_ENCRYPT_THROW_KEYIDS">
        <doc xml:space="preserve">Do not include the key ids in the ciphertext.</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_BLOCKQUOTE_CITATION"
              value="256"
              c:type="GMIME_FILTER_HTML_BLOCKQUOTE_CITATION">
      <doc xml:space="preserve">Enclose citation text in blockquotes.</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; and &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">
            <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="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="prespace" transfer-ownership="none">
            <doc xml:space="preserve">prespace buffer length</doc>
            <type name="gsize" 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="gsize" 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="gsize" 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">
            <doc xml:space="preserve">filter</doc>
            <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">
            <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="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="prespace" transfer-ownership="none">
            <doc xml:space="preserve">prespace buffer length</doc>
            <type name="gsize" 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="gsize" 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="gsize" 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">
            <doc xml:space="preserve">a #GMimeFilter object</doc>
            <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="const char*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve">length of @data</doc>
            <type name="gsize" 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="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="prespace" transfer-ownership="none">
            <doc xml:space="preserve">prespace buffer length</doc>
            <type name="gsize" 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="gsize" 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="gsize" 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="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="prespace" transfer-ownership="none">
            <doc xml:space="preserve">prespace buffer length</doc>
            <type name="gsize" 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="gsize" 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="gsize" 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="gsize" 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">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <doc xml:space="preserve">private state data</doc>
        <type name="gpointer" c:type="_GMimeFilterPrivate*"/>
      </field>
      <field name="outreal">
        <type name="utf8" c:type="char*"/>
      </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="gsize" c:type="size_t"/>
      </field>
      <field name="outpre">
        <type name="gsize" c:type="size_t"/>
      </field>
      <field name="backbuf">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="backsize">
        <type name="gsize" c:type="size_t"/>
      </field>
      <field name="backlen">
        <type name="gsize" 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">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="encoder">
        <doc xml:space="preserve">#GMimeEncoding state</doc>
        <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">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="flags">
        <doc xml:space="preserve">#GMimeFilterBestFlags</doc>
        <type name="FilterBestFlags" c:type="GMimeFilterBestFlags"/>
      </field>
      <field name="charset">
        <doc xml:space="preserve">#GMimeCharset state</doc>
        <type name="Charset" c:type="GMimeCharset"/>
      </field>
      <field name="count0">
        <doc xml:space="preserve">count of nul-bytes passed through the filter</doc>
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="count8">
        <doc xml:space="preserve">count of 8bit bytes passed through the filter</doc>
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="total">
        <doc xml:space="preserve">total number of bytes passed through the filter</doc>
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="maxline">
        <doc xml:space="preserve">the length of the longest line passed through the filter</doc>
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="linelen">
        <doc xml:space="preserve">current line length</doc>
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="frombuf">
        <doc xml:space="preserve">buffer for checking From_ lines</doc>
        <array zero-terminated="0" c:type="unsigned" fixed-size="6">
          <type name="guint" c:type="unsigned"/>
        </array>
      </field>
      <field name="fromlen" bits="4">
        <doc xml:space="preserve">length of bytes in @frombuf</doc>
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="hadfrom" bits="1">
        <doc xml:space="preserve">%TRUE if any line started with "From "</doc>
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="startline" bits="1">
        <doc xml:space="preserve">start line state</doc>
        <type name="guint" c:type="unsigned"/>
      </field>
      <field name="midline" bits="1">
        <doc xml:space="preserve">mid-line state</doc>
        <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="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">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="from_charset">
        <doc xml:space="preserve">charset that the filter is converting from</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="to_charset">
        <doc xml:space="preserve">charset the filter is converting to</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="cd" introspectable="0">
        <doc xml:space="preserve">charset conversion state</doc>
        <type c:type="iconv_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>
    <class name="FilterChecksum"
           c:symbol-prefix="filter_checksum"
           c:type="GMimeFilterChecksum"
           parent="Filter"
           glib:type-name="GMimeFilterChecksum"
           glib:get-type="g_mime_filter_checksum_get_type"
           glib:type-struct="FilterChecksumClass">
      <doc xml:space="preserve">A filter for calculating the checksum of a stream.</doc>
      <constructor name="new" c:identifier="g_mime_filter_checksum_new">
        <doc xml:space="preserve">Creates a new checksum filter.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeFilterChecksum filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve">the type of checksum</doc>
            <type name="GLib.ChecksumType" c:type="GChecksumType"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_digest"
              c:identifier="g_mime_filter_checksum_get_digest">
        <doc xml:space="preserve">Outputs the checksum digest into @digest.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes used of the @digest buffer.</doc>
          <type name="gsize" c:type="size_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">checksum filter object</doc>
            <type name="FilterChecksum" c:type="GMimeFilterChecksum*"/>
          </instance-parameter>
          <parameter name="digest" transfer-ownership="none">
            <doc xml:space="preserve">the digest buffer</doc>
            <type name="guint8" c:type="unsigned char*"/>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve">the length of the digest buffer</doc>
            <type name="gsize" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_string"
              c:identifier="g_mime_filter_checksum_get_string">
        <doc xml:space="preserve">Outputs the checksum digest as a newly allocated hexadecimal string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the hexadecimal representation of the checksum. The returned string should be freed with g_free() when no longer needed.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="checksum" transfer-ownership="none">
            <doc xml:space="preserve">checksum filter object</doc>
            <type name="FilterChecksum" c:type="GMimeFilterChecksum*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="checksum">
        <doc xml:space="preserve">The checksum context</doc>
        <type name="GLib.Checksum" c:type="GChecksum*"/>
      </field>
    </class>
    <record name="FilterChecksumClass"
            c:type="GMimeFilterChecksumClass"
            glib:is-gtype-struct-for="FilterChecksum">
      <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">
              <doc xml:space="preserve">filter</doc>
              <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">
              <doc xml:space="preserve">filter</doc>
              <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="gsize" c:type="size_t"/>
            </parameter>
            <parameter name="prespace" transfer-ownership="none">
              <doc xml:space="preserve">prespace buffer length</doc>
              <type name="gsize" 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="gsize" 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="gsize" 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">
              <doc xml:space="preserve">filter</doc>
              <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="gsize" c:type="size_t"/>
            </parameter>
            <parameter name="prespace" transfer-ownership="none">
              <doc xml:space="preserve">prespace buffer length</doc>
              <type name="gsize" 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="gsize" 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="gsize" 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">
              <doc xml:space="preserve">a #GMimeFilter object</doc>
              <type name="Filter" c:type="GMimeFilter*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="FilterDos2Unix"
           c:symbol-prefix="filter_dos2unix"
           c:type="GMimeFilterDos2Unix"
           parent="Filter"
           glib:type-name="GMimeFilterDos2Unix"
           glib:get-type="g_mime_filter_dos2unix_get_type"
           glib:type-struct="FilterDos2UnixClass">
      <doc xml:space="preserve">A filter to convert a stream from Windows/DOS line endings to Unix line endings.</doc>
      <constructor name="new" c:identifier="g_mime_filter_dos2unix_new">
        <doc xml:space="preserve">Creates a new #GMimeFilterDos2Unix filter.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeFilterDos2Unix filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="ensure_newline" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the filter should ensure that the stream ends in a new line</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="ensure_newline">
        <doc xml:space="preserve">%TRUE if the filter should ensure that the stream ends with a new line</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="pc">
        <doc xml:space="preserve">the previous character encountered</doc>
        <type name="gchar" c:type="char"/>
      </field>
    </class>
    <record name="FilterDos2UnixClass"
            c:type="GMimeFilterDos2UnixClass"
            glib:is-gtype-struct-for="FilterDos2Unix">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </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">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="flags">
        <doc xml:space="preserve">bit flags</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="nofill">
        <doc xml:space="preserve">nofill tag state</doc>
        <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">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="mode">
        <doc xml:space="preserve">#GMimeFilterFromMode</doc>
        <type name="FilterFromMode" c:type="GMimeFilterFromMode"/>
      </field>
      <field name="midline">
        <doc xml:space="preserve">%TRUE if in the middle of a line</doc>
        <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>
      <method name="get_comment"
              c:identifier="g_mime_filter_gzip_get_comment"
              version="3.2">
        <doc xml:space="preserve">Gets the comment that was either previously set or retrieved when decoding a gzip stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a string containing the comment.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="gzip" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeFilterGZip filter</doc>
            <type name="FilterGZip" c:type="GMimeFilterGZip*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_filename"
              c:identifier="g_mime_filter_gzip_get_filename"
              version="3.2">
        <doc xml:space="preserve">Gets the filename that was either previously set or retrieved when decoding a gzip stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a string containing th ename of the file.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="gzip" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeFilterGZip filter</doc>
            <type name="FilterGZip" c:type="GMimeFilterGZip*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_comment"
              c:identifier="g_mime_filter_gzip_set_comment"
              version="3.2">
        <doc xml:space="preserve">Sets the comment that should be used when generating the gzip header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gzip" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeFilterGZip filter</doc>
            <type name="FilterGZip" c:type="GMimeFilterGZip*"/>
          </instance-parameter>
          <parameter name="comment" transfer-ownership="none">
            <doc xml:space="preserve">The comment</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_filename"
              c:identifier="g_mime_filter_gzip_set_filename"
              version="3.2">
        <doc xml:space="preserve">Sets the filename that should be used when generating the gzip header.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="gzip" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeFilterGZip filter</doc>
            <type name="FilterGZip" c:type="GMimeFilterGZip*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve">The name of the file</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="priv">
        <doc xml:space="preserve">private state data</doc>
        <type name="gpointer" c:type="_GMimeFilterGZipPrivate*"/>
      </field>
      <field name="mode">
        <doc xml:space="preserve">#GMimeFilterGZipMode</doc>
        <type name="FilterGZipMode" c:type="GMimeFilterGZipMode"/>
      </field>
      <field name="level">
        <doc xml:space="preserve">compression level</doc>
        <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">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="scanner">
        <doc xml:space="preserve">URL scanner state</doc>
        <type name="gpointer" c:type="_UrlScanner*"/>
      </field>
      <field name="flags">
        <doc xml:space="preserve">flags specifying HTML conversion rules</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="colour">
        <doc xml:space="preserve">cite colour</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="column" bits="31">
        <doc xml:space="preserve">current column</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="pre_open" bits="1">
        <doc xml:space="preserve">currently inside of a 'pre' tag.</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="citation_depth">
        <doc xml:space="preserve">current citation depth level.</doc>
        <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="FilterOpenPGP"
           c:symbol-prefix="filter_openpgp"
           c:type="GMimeFilterOpenPGP"
           version="3.2"
           parent="Filter"
           glib:type-name="GMimeFilterOpenPGP"
           glib:get-type="g_mime_filter_openpgp_get_type"
           glib:type-struct="FilterOpenPGPClass">
      <doc xml:space="preserve">A filter to detect OpenPGP markers.</doc>
      <constructor name="new"
                   c:identifier="g_mime_filter_openpgp_new"
                   version="3.2">
        <doc xml:space="preserve">Creates a new #GMimeFilterOpenPGP filter.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeFilterOpenPGP filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
      </constructor>
      <method name="get_begin_offset"
              c:identifier="g_mime_filter_openpgp_get_begin_offset"
              version="3.2">
        <doc xml:space="preserve">Gets the stream offset of the beginning of the OpenPGP data block, if any have been found.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The stream offset or %-1 if no OpenPGP block was found.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="openpgp" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeFilterOpenPGP filter</doc>
            <type name="FilterOpenPGP" c:type="GMimeFilterOpenPGP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_data_type"
              c:identifier="g_mime_filter_openpgp_get_data_type"
              version="3.2">
        <doc xml:space="preserve">Gets the type of OpenPGP data that has been detected.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeOpenPGPData value.</doc>
          <type name="OpenPGPData" c:type="GMimeOpenPGPData"/>
        </return-value>
        <parameters>
          <instance-parameter name="openpgp" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeFilterOpenPGP filter</doc>
            <type name="FilterOpenPGP" c:type="GMimeFilterOpenPGP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_end_offset"
              c:identifier="g_mime_filter_openpgp_get_end_offset"
              version="3.2">
        <doc xml:space="preserve">Gets the stream offset of the end of the OpenPGP data block, if any have been found.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The stream offset or %-1 if no OpenPGP block was found.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="openpgp" transfer-ownership="none">
            <doc xml:space="preserve">A #GMimeFilterOpenPGP filter</doc>
            <type name="FilterOpenPGP" c:type="GMimeFilterOpenPGP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="state" readable="0" private="1">
        <type name="OpenPGPState" c:type="GMimeOpenPGPState"/>
      </field>
      <field name="seen_end_marker" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="midline" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="begin_offset" readable="0" private="1">
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="end_offset" readable="0" private="1">
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="position" readable="0" private="1">
        <type name="gint64" c:type="gint64"/>
      </field>
      <field name="next" readable="0" private="1">
        <type name="guint" c:type="guint"/>
      </field>
    </class>
    <record name="FilterOpenPGPClass"
            c:type="GMimeFilterOpenPGPClass"
            glib:is-gtype-struct-for="FilterOpenPGP">
      <field name="parent_class">
        <type name="FilterClass" c:type="GMimeFilterClass"/>
      </field>
    </record>
    <class name="FilterSmtpData"
           c:symbol-prefix="filter_smtp_data"
           c:type="GMimeFilterSmtpData"
           parent="Filter"
           glib:type-name="GMimeFilterSmtpData"
           glib:get-type="g_mime_filter_smtp_data_get_type"
           glib:type-struct="FilterSmtpDataClass">
      <doc xml:space="preserve">A filter to byte-stuff SMTP DATA.</doc>
      <constructor name="new" c:identifier="g_mime_filter_smtp_data_new">
        <doc xml:space="preserve">Creates a new #GMimeFilterSmtpData filter.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeFilterSmtpData filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
      </constructor>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="bol">
        <doc xml:space="preserve">beginning-of-line state.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </class>
    <record name="FilterSmtpDataClass"
            c:type="GMimeFilterSmtpDataClass"
            glib:is-gtype-struct-for="FilterSmtpData">
      <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">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="lwsp" readable="0" private="1">
        <type name="gpointer" c:type="void*"/>
      </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="FilterUnix2Dos"
           c:symbol-prefix="filter_unix2dos"
           c:type="GMimeFilterUnix2Dos"
           parent="Filter"
           glib:type-name="GMimeFilterUnix2Dos"
           glib:get-type="g_mime_filter_unix2dos_get_type"
           glib:type-struct="FilterUnix2DosClass">
      <doc xml:space="preserve">A filter to convert a stream from Windows/DOS line endings to Unix line endings.</doc>
      <constructor name="new" c:identifier="g_mime_filter_unix2dos_new">
        <doc xml:space="preserve">Creates a new #GMimeFilterUnix2Dos filter.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeFilterUnix2Dos filter.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <parameter name="ensure_newline" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the filter should ensure that the stream ends in a new line</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="ensure_newline">
        <doc xml:space="preserve">%TRUE if the filter should ensure that the stream ends with a new line</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="pc">
        <doc xml:space="preserve">the previous character encountered</doc>
        <type name="gchar" c:type="char"/>
      </field>
    </class>
    <record name="FilterUnix2DosClass"
            c:type="GMimeFilterUnix2DosClass"
            glib:is-gtype-struct-for="FilterUnix2Dos">
      <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">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="is_windows">
        <doc xml:space="preserve">%TRUE if the stream is detected to be a windows-cp125x charset</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="claimed_charset">
        <doc xml:space="preserve">charset the text stream is claimed to be</doc>
        <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">
        <doc xml:space="preserve">parent #GMimeFilter</doc>
        <type name="Filter" c:type="GMimeFilter"/>
      </field>
      <field name="encode">
        <doc xml:space="preserve">encode vs decode</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="part">
        <doc xml:space="preserve">part id</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="state">
        <doc xml:space="preserve">encode/decode state</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="pcrc">
        <doc xml:space="preserve">part crc</doc>
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="crc">
        <doc xml:space="preserve">full crc</doc>
        <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>
    <enumeration name="Format" c:type="GMimeFormat">
      <doc xml:space="preserve">An enum of formats.</doc>
      <member name="message" value="0" c:identifier="GMIME_FORMAT_MESSAGE">
        <doc xml:space="preserve">The stream contains a single message.</doc>
      </member>
      <member name="mbox" value="1" c:identifier="GMIME_FORMAT_MBOX">
        <doc xml:space="preserve">The stream is in the UNIX mbox format.</doc>
      </member>
      <member name="mmdf" value="2" c:identifier="GMIME_FORMAT_MMDF">
        <doc xml:space="preserve">The stream is in the MMDF format.</doc>
      </member>
    </enumeration>
    <record name="FormatOptions"
            c:type="GMimeFormatOptions"
            glib:type-name="GMimeFormatOptions"
            glib:get-type="g_mime_format_options_get_type"
            c:symbol-prefix="format_options">
      <doc xml:space="preserve">Format options for serializing various GMime objects.</doc>
      <constructor name="new" c:identifier="g_mime_format_options_new">
        <doc xml:space="preserve">Creates a new set of #GMimeFormatOptions.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated set of #GMimeFormatOptions with the default values.</doc>
          <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
        </return-value>
      </constructor>
      <method name="add_hidden_header"
              c:identifier="g_mime_format_options_add_hidden_header">
        <doc xml:space="preserve">Adds the given header to the list of headers that should be hidden.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeFormatOptions</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear_hidden_headers"
              c:identifier="g_mime_format_options_clear_hidden_headers">
        <doc xml:space="preserve">Clears the list of headers that should be hidden.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeFormatOptions</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="clone" c:identifier="g_mime_format_options_clone">
        <doc xml:space="preserve">Clones a #GMimeFormatOptions.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated #GMimeFormatOptions.</doc>
          <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="create_newline_filter"
              c:identifier="g_mime_format_options_create_newline_filter">
        <doc xml:space="preserve">Creates a #GMimeFilter suitable for converting line-endings to the
currently set new-line format.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #GMimeFilter to convert to the specified new-line format.</doc>
          <type name="Filter" c:type="GMimeFilter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
          <parameter name="ensure_newline" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the output must *always* end with a new line</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="g_mime_format_options_free">
        <doc xml:space="preserve">Frees a set of #GMimeFormatOptions.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeFormatOptions</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_newline"
              c:identifier="g_mime_format_options_get_newline">
        <doc xml:space="preserve">Gets a string representing the currently set new-line format.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a new-line character sequence.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_newline_format"
              c:identifier="g_mime_format_options_get_newline_format">
        <doc xml:space="preserve">Gets the new-line format to use when writing out messages and headers.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the new-line format that is currently set.</doc>
          <type name="NewLineFormat" c:type="GMimeNewLineFormat"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_param_encoding_method"
              c:identifier="g_mime_format_options_get_param_encoding_method">
        <doc xml:space="preserve">Gets the parameter encoding method to use for #GMimeParam parameters that do not
already have an encoding method specified.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the encoding method that is currently set.</doc>
          <type name="ParamEncodingMethod" c:type="GMimeParamEncodingMethod"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_hidden_header"
              c:identifier="g_mime_format_options_is_hidden_header">
        <doc xml:space="preserve">Gets whether or not the specified header should be hidden.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the header should be hidden or %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">the name of a header</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_hidden_header"
              c:identifier="g_mime_format_options_remove_hidden_header">
        <doc xml:space="preserve">Removes the given header from the list of headers that should be hidden.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeFormatOptions</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
          <parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a header name</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_newline_format"
              c:identifier="g_mime_format_options_set_newline_format">
        <doc xml:space="preserve">Sets the new-line format that should be used when writing headers and messages.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeFormatOptions</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
          <parameter name="newline" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeNewLineFormat</doc>
            <type name="NewLineFormat" c:type="GMimeNewLineFormat"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_param_encoding_method"
              c:identifier="g_mime_format_options_set_param_encoding_method">
        <doc xml:space="preserve">Sets the parameter encoding method to use when encoding parameters which
do not have an encoding method specified.

Note: #GMIME_PARAM_ENCODING_METHOD_DEFAULT is not allowed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeFormatOptions</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </instance-parameter>
          <parameter name="method" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParamEncodingMethod</doc>
            <type name="ParamEncodingMethod"
                  c:type="GMimeParamEncodingMethod"/>
          </parameter>
        </parameters>
      </method>
      <function name="get_default"
                c:identifier="g_mime_format_options_get_default">
        <doc xml:space="preserve">Gets the default format options.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the default format options.</doc>
          <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
        </return-value>
      </function>
    </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">
        <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>
      </constructor>
    </class>
    <record name="GpgContextClass"
            c:type="GMimeGpgContextClass"
            disguised="1"
            glib:is-gtype-struct-for="GpgContext">
    </record>
    <class name="Header"
           c:symbol-prefix="header"
           c:type="GMimeHeader"
           parent="GObject.Object"
           glib:type-name="GMimeHeader"
           glib:get-type="g_mime_header_get_type"
           glib:type-struct="HeaderClass">
      <doc xml:space="preserve">A message or mime-part header.</doc>
      <method name="format_addrlist"
              c:identifier="g_mime_header_format_addrlist">
        <doc xml:space="preserve">Parses the @value and then re-formats it to conform to the formatting options,
folding the value if necessary.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string containing the reformatted value.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">a Sender, From, Reply-To, To, Cc, or Bcc header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset (note: unused)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="format_content_disposition"
              c:identifier="g_mime_header_format_content_disposition">
        <doc xml:space="preserve">Parses the @value and then re-formats it to conform to the formatting options,
folding the value if necessary.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string containing the reformatted value.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">a Content-Disposition header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset (note: unused)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="format_content_type"
              c:identifier="g_mime_header_format_content_type">
        <doc xml:space="preserve">Parses the @value and then re-formats it to conform to the formatting options,
folding the value if necessary.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string containing the reformatted value.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">a Content-Type header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset (note: unused)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="format_default"
              c:identifier="g_mime_header_format_default">
        <doc xml:space="preserve">Parses the @value and then re-formats it to conform to the formatting options,
folding the value if necessary.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string containing the reformatted value.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">a header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset to use when encoding the @value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="format_message_id"
              c:identifier="g_mime_header_format_message_id">
        <doc xml:space="preserve">Parses the @value and then re-formats it to conform to the formatting options,
folding the value if necessary.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string containing the reformatted value.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">a Message-Id or Content-Id header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset (note: unused)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="format_received"
              c:identifier="g_mime_header_format_received">
        <doc xml:space="preserve">Parses the @value and then re-formats it to conform to the formatting options,
folding the value if necessary.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string containing the reformatted value.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">a Received header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset (note: unused)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="format_references"
              c:identifier="g_mime_header_format_references">
        <doc xml:space="preserve">Parses the @value and then re-formats it to conform to the formatting options,
folding the value if necessary.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string containing the reformatted value.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">a References or In-Reply-To header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset (note: unused)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="g_mime_header_get_name">
        <doc xml:space="preserve">Gets the 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="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_offset" c:identifier="g_mime_header_get_offset">
        <doc xml:space="preserve">Gets the header's stream offset if known.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the header offset or %-1 if unknown.</doc>
          <type name="gint64" c:type="gint64"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_raw_name" c:identifier="g_mime_header_get_raw_name">
        <doc xml:space="preserve">Gets the header's raw name. The raw header name is the complete string up to
(but not including) the ':' separating the header's name from its value. This
string may be different from the value returned by g_mime_header_get_name()
if the parsed message's header contained trailing whitespace after the header
name, such as: "Subject : this is the subject\r\n".</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the raw header name.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_raw_value" c:identifier="g_mime_header_get_raw_value">
        <doc xml:space="preserve">Gets the header's raw (folded) value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the header value or %NULL if invalid.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_value" c:identifier="g_mime_header_get_value">
        <doc xml:space="preserve">Gets the header's unfolded value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the header's decoded value or %NULL if invalid.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_raw_value" c:identifier="g_mime_header_set_raw_value">
        <doc xml:space="preserve">Sets the header's raw value.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
          <parameter name="raw_value" transfer-ownership="none">
            <doc xml:space="preserve">the raw value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_value" c:identifier="g_mime_header_set_value">
        <doc xml:space="preserve">Sets the header's decoded value.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the new header value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_to_stream"
              c:identifier="g_mime_header_write_to_stream">
        <doc xml:space="preserve">Write the header to the specified stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of bytes written, or %-1 on fail.</doc>
          <type name="gssize" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="header" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeHeader</doc>
            <type name="Header" c:type="GMimeHeader*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="stream" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <type name="Stream" c:type="GMimeStream*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="name" readable="0" private="1">
        <doc xml:space="preserve">the name of the header</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="value" readable="0" private="1">
        <doc xml:space="preserve">the unfolded value of the header</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="formatter" readable="0" private="1">
        <type name="HeaderRawValueFormatter"
              c:type="GMimeHeaderRawValueFormatter"/>
      </field>
      <field name="options" readable="0" private="1">
        <type name="ParserOptions" c:type="GMimeParserOptions*"/>
      </field>
      <field name="reformat" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="changed" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="raw_value" readable="0" private="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="raw_name" readable="0" private="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="charset" readable="0" private="1">
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="offset" readable="0" private="1">
        <type name="gint64" c:type="gint64"/>
      </field>
    </class>
    <record name="HeaderClass"
            c:type="GMimeHeaderClass"
            glib:is-gtype-struct-for="Header">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <class name="HeaderList"
           c:symbol-prefix="header_list"
           c:type="GMimeHeaderList"
           parent="GObject.Object"
           glib:type-name="GMimeHeaderList"
           glib:get-type="g_mime_header_list_get_type"
           glib:type-struct="HeaderListClass">
      <doc xml:space="preserve">A list of message or mime-part headers.</doc>
      <constructor name="new" c:identifier="g_mime_header_list_new">
        <doc xml:space="preserve">Creates a new #GMimeHeaderList object.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new header list object.</doc>
          <type name="HeaderList" c:type="GMimeHeaderList*"/>
        </return-value>
        <parameters>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </parameter>
        </parameters>
      </constructor>
      <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.</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>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset</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="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_count" c:identifier="g_mime_header_list_get_count">
        <doc xml:space="preserve">Gets the number of headers contained within the header list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of headers in the header list.</doc>
          <type name="gint" c:type="int"/>
        </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="get_header" c:identifier="g_mime_header_list_get_header">
        <doc xml:space="preserve">Gets the first header with the specified name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeHeader for the specified @name.</doc>
          <type name="Header" c:type="GMimeHeader*"/>
        </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="get_header_at"
              c:identifier="g_mime_header_list_get_header_at">
        <doc xml:space="preserve">Gets the header at the specified @index within the list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the header at position @index.</doc>
          <type name="Header" c:type="GMimeHeader*"/>
        </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="index" transfer-ownership="none">
            <doc xml:space="preserve">the 0-based index of the header</doc>
            <type name="gint" c:type="int"/>
          </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.</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>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="g_mime_header_list_remove">
        <doc xml:space="preserve">Remove the first instance of 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="remove_at" c:identifier="g_mime_header_list_remove_at">
        <doc xml:space="preserve">Removes the header at the specified @index from @headers.</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="index" transfer-ownership="none">
            <doc xml:space="preserve">the 0-based index of the header to remove</doc>
            <type name="gint" c:type="int"/>
          </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.</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>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset</doc>
            <type name="utf8" c:type="const char*"/>
          </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="GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </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="gssize" 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="GMimeHeaderList*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </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="options" readable="0" private="1">
        <type name="ParserOptions" c:type="GMimeParserOptions*"/>
      </field>
      <field name="changed" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
      <field name="hash" readable="0" private="1">
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </field>
      <field name="array" readable="0" private="1">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </class>
    <record name="HeaderListClass"
            c:type="GMimeHeaderListClass"
            glib:is-gtype-struct-for="HeaderList">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <callback name="HeaderRawValueFormatter"
              c:type="GMimeHeaderRawValueFormatter">
      <doc xml:space="preserve">Function callback for encoding and formatting a header value.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">the encoded and formatted raw header value.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="header" transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeHeader</doc>
          <type name="Header" c:type="GMimeHeader*"/>
        </parameter>
        <parameter name="options" transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeFormatOptions</doc>
          <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">an unencoded header value</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="charset" transfer-ownership="none">
          <doc xml:space="preserve">a charset</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="options" transfer-ownership="none">
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="linelen" transfer-ownership="none">
            <type name="gsize" c:type="size_t*"/>
          </parameter>
          <parameter name="str" transfer-ownership="none">
            <type name="GLib.String" c:type="GString*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_charset" c:identifier="internet_address_get_charset">
        <doc xml:space="preserve">Gets the charset to be used when encoding the name of the mailbox or group.</doc>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve">the charset to be used when encoding the name of the
mailbox or group if available or %NULL otherwise.</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="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" nullable="1">
          <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_charset" c:identifier="internet_address_set_charset">
        <doc xml:space="preserve">Set the charset to use for encoding the name of the mailbox or group.</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="charset"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the charset to use when encoding the name or %NULL to use the defaults</doc>
            <type name="utf8" c:type="const char*"/>
          </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="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </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">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="charset">
        <doc xml:space="preserve">the charset used for encoding the name</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="name">
        <doc xml:space="preserve">display name</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="changed" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </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="options" transfer-ownership="none">
              <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
            </parameter>
            <parameter name="flags" transfer-ownership="none">
              <type name="guint32" c:type="guint32"/>
            </parameter>
            <parameter name="linelen" transfer-ownership="none">
              <type name="gsize" c:type="size_t*"/>
            </parameter>
            <parameter name="str" 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">
        <doc xml:space="preserve">parent #InternetAddress</doc>
        <type name="InternetAddress" c:type="InternetAddress"/>
      </field>
      <field name="members">
        <doc xml:space="preserve">a #InternetAddressList of group members</doc>
        <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" c:identifier="internet_address_list_parse">
        <doc xml:space="preserve">Construct a list of internet addresses from the given string.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <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="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </parameter>
          <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="encode" c:identifier="internet_address_list_encode">
        <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="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </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>
      <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" nullable="1">
          <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="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </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">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="array">
        <doc xml:space="preserve">The array of #InternetAddress objects.</doc>
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="changed" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </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 addr-spec string.</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="get_idn_addr"
              c:identifier="internet_address_mailbox_get_idn_addr">
        <doc xml:space="preserve">Gets the IDN ascii-encoded addr-spec.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the encoded addr-spec string.</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">
        <doc xml:space="preserve">parent #InternetAddress</doc>
        <type name="InternetAddress" c:type="InternetAddress"/>
      </field>
      <field name="idn_addr">
        <doc xml:space="preserve">the ascii-encoded version of @addr</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="addr">
        <doc xml:space="preserve">the address string</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="at">
        <doc xml:space="preserve">the index of the '@' character</doc>
        <type name="gint" c:type="int"/>
      </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="3" 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="0" 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="2" 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_mailbox" c:identifier="g_mime_message_add_mailbox">
        <doc xml:space="preserve">Add a mailbox 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 #GMimeAddressType</doc>
            <type name="AddressType" c:type="GMimeAddressType"/>
          </parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">The name of the mailbox (or %NULL)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="addr" transfer-ownership="none">
            <doc xml:space="preserve">The address of the mailbox</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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">user-supplied callback data</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_addresses" c:identifier="g_mime_message_get_addresses">
        <doc xml:space="preserve">Gets a list of addresses of the specified @type from the @message.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a list of addresses 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 #GMimeAddressType</doc>
            <type name="AddressType" c:type="GMimeAddressType"/>
          </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_autocrypt_gossip_headers"
              c:identifier="g_mime_message_get_autocrypt_gossip_headers"
              throws="1">
        <doc xml:space="preserve">Creates a new #GMimeAutocryptHeaderList of relevant headers of the
given type based on the recipient(s) of an e-mail message.

Returns the same object as
#g_mime_message_get_autocrypt_gossip_headers_with_inner_part , but
handles decryption and cleanup automatically.

@flags and @session_key are passed through to
#g_mime_multipart_encrypted_decrypt, as needed.

If the message is not actually an encrypted message, returns %NULL:
it should be ignored for purposes of evaluating gossip.

If decryption fails, returns %NULL.  In this case, an exception
will be set on @err to provide information about the decryption
failure.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeAutocryptHeaderList object,
or %NULL on error.</doc>
          <type name="AutocryptHeaderList" c:type="GMimeAutocryptHeaderList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMessage object, which is expected to be encrypted.</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="now" transfer-ownership="none">
            <doc xml:space="preserve">a #GDateTime object, or %NULL</doc>
            <type name="GLib.DateTime" c:type="GDateTime*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDecryptFlags, to be used during decryption</doc>
            <type name="DecryptFlags" c:type="GMimeDecryptFlags"/>
          </parameter>
          <parameter name="session_key" transfer-ownership="none">
            <doc xml:space="preserve">session key to use or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_autocrypt_gossip_headers_from_inner_part"
              c:identifier="g_mime_message_get_autocrypt_gossip_headers_from_inner_part">
        <doc xml:space="preserve">Creates a new #GMimeAutocryptHeaderList of relevant headers of the
given type based on the recipient(s) of an e-mail message.

You must pass the decrypted inner part of the message to this
function, since Autocrypt-Gossip headers are only stored within the
encrypted layer.

If you don't already have the decrypted inner part available to
you, you probably want to use
#g_mime_message_get_autocrypt_gossip_headers instead.

Each header in the returned list will:

 - have a valid address
 - be of the type requested
 - be complete

If no Autocrypt header is found for a recipient, no
#GMimeAutocryptHeader will be in the list associated with that e-mail address.

Note that the following types of Autocrypt headers will not be
returned by this function:

 - headers of an unrequested type
 - headers that do not match an address in "From:"
 - unparseable headers
 - headers with unknown critical attributes
 - duplicate valid headers for a given address

On error (e.g. if this version of GMime cannot handle the requested
Autocrypt type, or if a parameter is missing or malformed), returns
%NULL

The returned Autocrypt headers will have their effective_date set
to the earliest of either:

- the Date: header of the message or
- @now (or the current time, if @now is %NULL)</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeAutocryptHeaderList object, or %NULL on error.</doc>
          <type name="AutocryptHeaderList" c:type="GMimeAutocryptHeaderList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMessage object.</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="now" transfer-ownership="none">
            <doc xml:space="preserve">a #GDateTime object, or %NULL</doc>
            <type name="GLib.DateTime" c:type="GDateTime*"/>
          </parameter>
          <parameter name="inner_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeObject which is the cleartext part of the inner message</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_autocrypt_header"
              c:identifier="g_mime_message_get_autocrypt_header">
        <doc xml:space="preserve">Creates a new #GMimeAutocryptHeader base on the relevant Autocrypt
header associated with the sender of an e-mail message.

If the message has no sender in the From: field, or has more than
one sender, then this function will return %NULL.  Autocrypt should
ignore the message entirely.

If there is one sender, but no single Autocrypt header is found
that matches that e-mail address, a #GMimeAutocryptHeader will be
returned for the sender, but it will be incomplete (see
#g_mime_autocrypt_header_is_complete).

Note that the following types of Autocrypt headers will not be
returned by this function:

 - headers that do not match an address in "From:"
 - unparseable headers
 - headers with unknown critical attributes
 - duplicate valid headers for the sender's address

The returned Autocrypt headers will have their effective_date set
to the earliest of either:

- the Date: header of the message or
- @now (or the current time, if @now is %NULL)</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeAutocryptHeaderList object,
or %NULL if the message should be ignored for purposes of
Autocrypt.</doc>
          <type name="AutocryptHeader" c:type="GMimeAutocryptHeader*"/>
        </return-value>
        <parameters>
          <instance-parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMessage object.</doc>
            <type name="Message" c:type="GMimeMessage*"/>
          </instance-parameter>
          <parameter name="now" transfer-ownership="none">
            <doc xml:space="preserve">a #GDateTime object, or %NULL</doc>
            <type name="GLib.DateTime" c:type="GDateTime*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_bcc" c:identifier="g_mime_message_get_bcc">
        <doc xml:space="preserve">Gets combined list of parsed addresses in the Bcc header(s).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parsed list of addresses in the Bcc header(s).</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 guaranteed 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_cc" c:identifier="g_mime_message_get_cc">
        <doc xml:space="preserve">Gets combined list of parsed addresses in the Cc header(s).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parsed list of addresses in the Cc header(s).</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_date" c:identifier="g_mime_message_get_date">
        <doc xml:space="preserve">Gets the parsed date and time value from the Date header.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #GDateTime on success or %NULL if the date could not be parsed.</doc>
          <type name="GLib.DateTime" c:type="GDateTime*"/>
        </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_from" c:identifier="g_mime_message_get_from">
        <doc xml:space="preserve">Gets the parsed list of addresses in the From header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parsed list of addresses in the From header.</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_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_reply_to" c:identifier="g_mime_message_get_reply_to">
        <doc xml:space="preserve">Gets the parsed list of addresses in the Reply-To header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parsed list of addresses in the Reply-To header.</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_sender" c:identifier="g_mime_message_get_sender">
        <doc xml:space="preserve">Gets the parsed list of addresses in the Sender header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parsed list of addresses in the Sender header.</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_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="get_to" c:identifier="g_mime_message_get_to">
        <doc xml:space="preserve">Gets combined list of parsed addresses in the To header(s).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the parsed list of addresses in the To header(s).</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="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" nullable="1">
          <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="gsize" c:type="size_t"/>
          </parameter>
          <parameter name="nparts"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">number of parts</doc>
            <type name="gsize" 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="GLib.DateTime" c:type="GDateTime*"/>
          </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_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>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">The charset to use for encoding the subject or %NULL to use the default</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeObject</doc>
        <type name="Object" c:type="GMimeObject"/>
      </field>
      <field name="addrlists">
        <doc xml:space="preserve">a table of address lists</doc>
        <type name="InternetAddressList" c:type="InternetAddressList**"/>
      </field>
      <field name="mime_part">
        <doc xml:space="preserve">toplevel MIME part</doc>
        <type name="Object" c:type="GMimeObject*"/>
      </field>
      <field name="message_id">
        <doc xml:space="preserve">Message-Id string</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="date">
        <doc xml:space="preserve">Date value</doc>
        <type name="GLib.DateTime" c:type="GDateTime*"/>
      </field>
      <field name="subject">
        <doc xml:space="preserve">Subject string</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="marker" readable="0" private="1">
        <type name="utf8" c:type="char*"/>
      </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">
        <doc xml:space="preserve">parent #GMimeObject</doc>
        <type name="Object" c:type="GMimeObject"/>
      </field>
      <field name="message">
        <doc xml:space="preserve">child #GMimeMessage</doc>
        <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="gsize" 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">
        <doc xml:space="preserve">parent #GMimePart object</doc>
        <type name="Part" c:type="GMimePart"/>
      </field>
      <field name="number">
        <doc xml:space="preserve">the part number</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="total">
        <doc xml:space="preserve">the total number of message/partials that make up the whole message/rfc822</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="id">
        <doc xml:space="preserve">message/partial id</doc>
        <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">Appends a mime part to @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>
      </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">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <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">
            <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>
      </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">
            <doc xml:space="preserve">a #GMimeMultipart object</doc>
            <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 parts contained within @multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of parts contained within @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>
      </virtual-method>
      <virtual-method name="get_part" invoker="get_part">
        <doc xml:space="preserve">Gets the part at the specified @index within the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the 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">the 0-based index of the 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 0-based index of @part within @multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the 0-based 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">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="insert" invoker="insert">
        <doc xml:space="preserve">Inserts @part into @multipart at the specified @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">the 0-based index to insert the part</doc>
            <type name="gint" c:type="int"/>
          </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="remove" invoker="remove">
        <doc xml:space="preserve">Removes the specified @part from @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">a #GMimeObject</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 part at the specified @index from @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">the 0-based index of the 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">
            <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>
      </virtual-method>
      <method name="add" c:identifier="g_mime_multipart_add">
        <doc xml:space="preserve">Appends a mime part to @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">a #GMimeObject</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"
                     nullable="1"
                     allow-none="1">
            <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 parts contained within @multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of parts contained within @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_epilogue" c:identifier="g_mime_multipart_get_epilogue">
        <doc xml:space="preserve">Gets the epilogue on the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a pointer to the epilogue 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_part" c:identifier="g_mime_multipart_get_part">
        <doc xml:space="preserve">Gets the part at the specified @index within the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the 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">the 0-based index of the part</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_prologue" c:identifier="g_mime_multipart_get_prologue">
        <doc xml:space="preserve">Gets the prologue on the multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a pointer to the prologue 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 0-based index of @part within @multipart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the 0-based 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">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </parameter>
        </parameters>
      </method>
      <method name="insert" c:identifier="g_mime_multipart_insert">
        <doc xml:space="preserve">Inserts @part into @multipart at the specified @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">the 0-based index to insert the part</doc>
            <type name="gint" c:type="int"/>
          </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="remove" c:identifier="g_mime_multipart_remove">
        <doc xml:space="preserve">Removes the specified @part from @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">a #GMimeObject</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 part at the specified @index from @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">the 0-based index of the 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 part at the specified @index within @multipart with
@replacement.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the 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">the 0-based index of the 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_epilogue" c:identifier="g_mime_multipart_set_epilogue">
        <doc xml:space="preserve">Sets the epilogue 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="epilogue" transfer-ownership="none">
            <doc xml:space="preserve">epilogue</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_prologue" c:identifier="g_mime_multipart_set_prologue">
        <doc xml:space="preserve">Sets the prologue 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="prologue" transfer-ownership="none">
            <doc xml:space="preserve">prologue</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeObject</doc>
        <type name="Object" c:type="GMimeObject"/>
      </field>
      <field name="children">
        <doc xml:space="preserve">array of MIME sub-parts</doc>
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="boundary">
        <doc xml:space="preserve">MIME boundary</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="prologue">
        <doc xml:space="preserve">multipart prologue</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="epilogue">
        <doc xml:space="preserve">multipart epilogue</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="write_end_boundary" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </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">
              <doc xml:space="preserve">a #GMimeMultipart object</doc>
              <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">
              <doc xml:space="preserve">a #GMimeMultipart object</doc>
              <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">
              <doc xml:space="preserve">a #GMimeMultipart object</doc>
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <doc xml:space="preserve">the 0-based index to insert the part</doc>
              <type name="gint" c:type="int"/>
            </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="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">
              <doc xml:space="preserve">a #GMimeMultipart object</doc>
              <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="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">
              <doc xml:space="preserve">a #GMimeMultipart object</doc>
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <doc xml:space="preserve">the 0-based index of the 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 part at position @index.</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <doc xml:space="preserve">a #GMimeMultipart object</doc>
              <type name="Multipart" c:type="GMimeMultipart*"/>
            </parameter>
            <parameter name="index" transfer-ownership="none">
              <doc xml:space="preserve">the 0-based index of the 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">
              <doc xml:space="preserve">a #GMimeMultipart object</doc>
              <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="index_of">
        <callback name="index_of">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the 0-based 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">
              <doc xml:space="preserve">a #GMimeMultipart object</doc>
              <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="get_count">
        <callback name="get_count">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the number of parts contained within @multipart.</doc>
            <type name="gint" c:type="int"/>
          </return-value>
          <parameters>
            <parameter name="multipart" transfer-ownership="none">
              <doc xml:space="preserve">a #GMimeMultipart object</doc>
              <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">
              <doc xml:space="preserve">a #GMimeMultipart object</doc>
              <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">
              <doc xml:space="preserve">a #GMimeMultipart object</doc>
              <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>
      <function name="encrypt"
                c:identifier="g_mime_multipart_encrypted_encrypt"
                throws="1">
        <doc xml:space="preserve">Attempts to encrypt (and conditionally sign) the @entity MIME part
to the public keys of @recipients using the @ctx encryption
context. If successful, a new multipart/encrypted object is returned.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve">a new #GMimeMultipartEncrypted object on success
or %NULL on fail. If encrypting fails, an exception will be set on @err to provide
information as to why the failure occurred.</doc>
          <type name="MultipartEncrypted" c:type="GMimeMultipartEncrypted*"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </parameter>
          <parameter name="entity" transfer-ownership="none">
            <doc xml:space="preserve">MIME part to encrypt</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </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"
                     nullable="1"
                     allow-none="1">
            <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="flags" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeEncryptFlags</doc>
            <type name="EncryptFlags" c:type="GMimeEncryptFlags"/>
          </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>
      </function>
      <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 @encrypted.

When non-%NULL, @session_key should be a %NULL-terminated string,
such as the one returned by g_mime_decrypt_result_get_session_key()
from a previous decryption. If the @session_key is not valid, decryption
will fail.

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" nullable="1">
          <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 occurred.</doc>
          <type name="Object" c:type="GMimeObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="encrypted" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipartEncrypted</doc>
            <type name="MultipartEncrypted" c:type="GMimeMultipartEncrypted*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeDecryptFlags</doc>
            <type name="DecryptFlags" c:type="GMimeDecryptFlags"/>
          </parameter>
          <parameter name="session_key" transfer-ownership="none">
            <doc xml:space="preserve">session key to use or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a #GMimeDecryptResult</doc>
            <type name="DecryptResult" c:type="GMimeDecryptResult**"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeMultipart</doc>
        <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>
      <function 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. If successful, a new multipart/signed
object is returned.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve">a new #GMimeMultipartSigned object on success
or %NULL on fail. If signing fails, an exception will be set on @err to provide
information as to why the failure occurred.</doc>
          <type name="MultipartSigned" c:type="GMimeMultipartSigned*"/>
        </return-value>
        <parameters>
          <parameter name="ctx" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeCryptoContext</doc>
            <type name="CryptoContext" c:type="GMimeCryptoContext*"/>
          </parameter>
          <parameter name="entity" transfer-ownership="none">
            <doc xml:space="preserve">MIME part to sign</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </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>
        </parameters>
      </function>
      <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.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <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
occurred.</doc>
          <type name="SignatureList" c:type="GMimeSignatureList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mps" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeMultipartSigned</doc>
            <type name="MultipartSigned" c:type="GMimeMultipartSigned*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeVerifyFlags</doc>
            <type name="VerifyFlags" c:type="GMimeVerifyFlags"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeMultipart</doc>
        <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>
    <enumeration name="NewLineFormat" c:type="GMimeNewLineFormat">
      <doc xml:space="preserve">There are two commonly used line-endings used by modern Operating Systems.
Unix-based systems such as Linux and Mac OS use a single character ('\n' aka LF)
to represent the end of line where-as Windows (or DOS) uses a sequence of two
characters ("\r\n" aka CRLF). Most text-based network protocols such as SMTP,
POP3, and IMAP use the CRLF sequence as well.</doc>
      <member name="unix" value="0" c:identifier="GMIME_NEWLINE_FORMAT_UNIX">
        <doc xml:space="preserve">The Unix New-Line format ("\n").</doc>
      </member>
      <member name="dos" value="1" c:identifier="GMIME_NEWLINE_FORMAT_DOS">
        <doc xml:space="preserve">The DOS New-Line format ("\r\n").</doc>
      </member>
    </enumeration>
    <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="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </parameter>
          <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="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </parameter>
          <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="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">
            <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>
      </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">
            <doc xml:space="preserve">a #GMimeObject</doc>
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="header_added">
        <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">
            <type name="Header" c:type="GMimeHeader*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="header_changed">
        <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">
            <type name="Header" c:type="GMimeHeader*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="header_removed">
        <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">
            <type name="Header" c:type="GMimeHeader*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="headers_cleared">
        <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>
        </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">
            <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>
      </virtual-method>
      <virtual-method name="write_to_stream">
        <return-value transfer-ownership="none">
          <type name="gssize" c:type="ssize_t"/>
        </return-value>
        <parameters>
          <instance-parameter name="object" transfer-ownership="none">
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="content_only" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="stream" transfer-ownership="none">
            <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 new header to the header list.</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>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset</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_autocrypt_headers"
              c:identifier="g_mime_object_get_autocrypt_headers"
              introspectable="0">
        <return-value>
          <type name="AutocryptHeaderList" c:type="GMimeAutocryptHeaderList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <type name="Object" c:type="GMimeObject*"/>
          </instance-parameter>
          <parameter name="effective_date" transfer-ownership="none">
            <type name="GLib.DateTime" c:type="GDateTime*"/>
          </parameter>
          <parameter name="matchheader" transfer-ownership="none">
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="addresses" transfer-ownership="none">
            <type name="InternetAddressList" c:type="InternetAddressList*"/>
          </parameter>
          <parameter name="keep_incomplete" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </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="name" transfer-ownership="none">
            <doc xml:space="preserve">parameter name</doc>
            <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 value of the first header with the specified name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the value of the requested header if it
exists or %NULL otherwise.</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>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepend_header"
              c:identifier="g_mime_object_prepend_header">
        <doc xml:space="preserve">Prepends a new header to the header list.</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>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset</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="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>
      </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 a header to the specified value.</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>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">a charset</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>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </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="gssize" 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="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </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">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="disposition">
        <doc xml:space="preserve">a #GMimeContentDisposition</doc>
        <type name="ContentDisposition" c:type="GMimeContentDisposition*"/>
      </field>
      <field name="content_type">
        <doc xml:space="preserve">a #GMimeContentType</doc>
        <type name="ContentType" c:type="GMimeContentType*"/>
      </field>
      <field name="headers">
        <doc xml:space="preserve">a #GMimeHeaderList</doc>
        <type name="HeaderList" c:type="GMimeHeaderList*"/>
      </field>
      <field name="content_id">
        <doc xml:space="preserve">a Content-Id</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="ensure_newline" readable="0" private="1">
        <type name="gboolean" c:type="gboolean"/>
      </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="header_added">
        <callback name="header_added">
          <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">
              <type name="Header" c:type="GMimeHeader*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="header_changed">
        <callback name="header_changed">
          <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">
              <type name="Header" c:type="GMimeHeader*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="header_removed">
        <callback name="header_removed">
          <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">
              <type name="Header" c:type="GMimeHeader*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="headers_cleared">
        <callback name="headers_cleared">
          <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>
          </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">
              <doc xml:space="preserve">a #GMimeObject</doc>
              <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">
              <doc xml:space="preserve">a #GMimeObject</doc>
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
            <parameter name="options"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
              <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write_to_stream">
        <callback name="write_to_stream">
          <return-value transfer-ownership="none">
            <type name="gssize" c:type="ssize_t"/>
          </return-value>
          <parameters>
            <parameter name="object" transfer-ownership="none">
              <type name="Object" c:type="GMimeObject*"/>
            </parameter>
            <parameter name="options" transfer-ownership="none">
              <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
            </parameter>
            <parameter name="content_only" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
            <parameter name="stream" transfer-ownership="none">
              <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">
              <doc xml:space="preserve">a #GMimeObject</doc>
              <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"
                   nullable="1"
                   allow-none="1"
                   closure="2">
          <doc xml:space="preserve">User-supplied callback data.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="OpenPGPData" c:type="GMimeOpenPGPData">
      <doc xml:space="preserve">The type of OpenPGP data found, if any.</doc>
      <member name="none" value="0" c:identifier="GMIME_OPENPGP_DATA_NONE">
        <doc xml:space="preserve">No OpenPGP data found.</doc>
      </member>
      <member name="encrypted"
              value="1"
              c:identifier="GMIME_OPENPGP_DATA_ENCRYPTED">
        <doc xml:space="preserve">The content contains OpenPGP encrypted data.</doc>
      </member>
      <member name="signed" value="2" c:identifier="GMIME_OPENPGP_DATA_SIGNED">
        <doc xml:space="preserve">The content contains OpenPGP signed data.</doc>
      </member>
      <member name="public_key"
              value="3"
              c:identifier="GMIME_OPENPGP_DATA_PUBLIC_KEY">
        <doc xml:space="preserve">The content contains OpenPGP public key data.</doc>
      </member>
      <member name="private_key"
              value="4"
              c:identifier="GMIME_OPENPGP_DATA_PRIVATE_KEY">
        <doc xml:space="preserve">The content contains OpenPGP private key data.</doc>
      </member>
    </enumeration>
    <record name="OpenPGPMarker" c:type="GMimeOpenPGPMarker" version="3.2">
      <doc xml:space="preserve">An OpenPGP marker for use with GMime's internal state machines used for detecting OpenPGP blocks.</doc>
      <field name="marker" writable="1">
        <doc xml:space="preserve">The OpenPGP marker.</doc>
        <type name="utf8" c:type="const char*"/>
      </field>
      <field name="len" writable="1">
        <doc xml:space="preserve">The length of the OpenPGP marker.</doc>
        <type name="gsize" c:type="size_t"/>
      </field>
      <field name="before" writable="1">
        <doc xml:space="preserve">The #GMimeOpenPGPState that the state machine must be in before encountering this marker.</doc>
        <type name="OpenPGPState" c:type="GMimeOpenPGPState"/>
      </field>
      <field name="after" writable="1">
        <doc xml:space="preserve">The #GMimeOpenPGPState that the state machine will transition into once this marker is found.</doc>
        <type name="OpenPGPState" c:type="GMimeOpenPGPState"/>
      </field>
      <field name="is_end_marker" writable="1">
        <doc xml:space="preserve">%TRUE if the marker is an end marker; otherwise, %FALSE.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
    </record>
    <bitfield name="OpenPGPState" version="3.2" c:type="GMimeOpenPGPState">
      <doc xml:space="preserve">The current state of the #GMimeFilterOpenPGP filter.</doc>
      <member name="none" value="0" c:identifier="GMIME_OPENPGP_NONE">
        <doc xml:space="preserve">No OpenPGP markers have been found (yet).</doc>
      </member>
      <member name="begin_pgp_message"
              value="1"
              c:identifier="GMIME_OPENPGP_BEGIN_PGP_MESSAGE">
        <doc xml:space="preserve">The "-----BEGIN PGP MESSAGE-----" marker has been found.</doc>
      </member>
      <member name="end_pgp_message"
              value="3"
              c:identifier="GMIME_OPENPGP_END_PGP_MESSAGE">
        <doc xml:space="preserve">The "-----END PGP MESSAGE-----" marker has been found.</doc>
      </member>
      <member name="begin_pgp_signed_message"
              value="4"
              c:identifier="GMIME_OPENPGP_BEGIN_PGP_SIGNED_MESSAGE">
        <doc xml:space="preserve">The "-----BEGIN PGP SIGNED MESSAGE-----" marker has been found.</doc>
      </member>
      <member name="begin_pgp_signature"
              value="12"
              c:identifier="GMIME_OPENPGP_BEGIN_PGP_SIGNATURE">
        <doc xml:space="preserve">The "-----BEGIN PGP SIGNATURE-----" marker has been found.</doc>
      </member>
      <member name="end_pgp_signature"
              value="28"
              c:identifier="GMIME_OPENPGP_END_PGP_SIGNATURE">
        <doc xml:space="preserve">The "-----END PGP SIGNATURE-----" marker has been found.</doc>
      </member>
      <member name="begin_pgp_public_key_block"
              value="32"
              c:identifier="GMIME_OPENPGP_BEGIN_PGP_PUBLIC_KEY_BLOCK">
        <doc xml:space="preserve">The "-----BEGIN PGP PUBLIC KEY BLOCK-----" marker has been found.</doc>
      </member>
      <member name="end_pgp_public_key_block"
              value="96"
              c:identifier="GMIME_OPENPGP_END_PGP_PUBLIC_KEY_BLOCK">
        <doc xml:space="preserve">The "-----END PGP PUBLIC KEY BLOCK-----" marker has been found.</doc>
      </member>
      <member name="begin_pgp_private_key_block"
              value="128"
              c:identifier="GMIME_OPENPGP_BEGIN_PGP_PRIVATE_KEY_BLOCK">
        <doc xml:space="preserve">The "-----BEGIN PGP PRIVATE KEY BLOCK-----" marker has been found.</doc>
      </member>
      <member name="end_pgp_private_key_block"
              value="384"
              c:identifier="GMIME_OPENPGP_END_PGP_PRIVATE_KEY_BLOCK">
        <doc xml:space="preserve">The "-----END PGP PRIVATE KEY BLOCK-----" marker has been found.</doc>
      </member>
    </bitfield>
    <class name="Param"
           c:symbol-prefix="param"
           c:type="GMimeParam"
           parent="GObject.Object"
           glib:type-name="GMimeParam"
           glib:get-type="g_mime_param_get_type"
           glib:type-struct="ParamClass">
      <doc xml:space="preserve">A parameter name/value pair as used in the Content-Type and Content-Disposition headers.</doc>
      <method name="get_charset" c:identifier="g_mime_param_get_charset">
        <doc xml:space="preserve">Gets the charset used for encoding the parameter.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the charset used for encoding 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="GMimeParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_encoding_method"
              c:identifier="g_mime_param_get_encoding_method">
        <doc xml:space="preserve">Gets the encoding method used for encoding the parameter.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the encoding method used for encoding the parameter.</doc>
          <type name="ParamEncodingMethod" c:type="GMimeParamEncodingMethod"/>
        </return-value>
        <parameters>
          <instance-parameter name="param" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParam</doc>
            <type name="Param" c:type="GMimeParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_lang" c:identifier="g_mime_param_get_lang">
        <doc xml:space="preserve">Gets the language specifier used for encoding the parameter.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the language specifier used for encoding 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="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="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="GMimeParam*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_charset" c:identifier="g_mime_param_set_charset">
        <doc xml:space="preserve">Sets the parameter charset used for encoding the value.</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">a #GMimeParam</doc>
            <type name="Param" c:type="GMimeParam*"/>
          </instance-parameter>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">the charset or %NULL to use the default</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_encoding_method"
              c:identifier="g_mime_param_set_encoding_method">
        <doc xml:space="preserve">Sets the encoding method used for encoding the value.</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">a #GMimeParam</doc>
            <type name="Param" c:type="GMimeParam*"/>
          </instance-parameter>
          <parameter name="method" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParamEncodingMethod</doc>
            <type name="ParamEncodingMethod"
                  c:type="GMimeParamEncodingMethod"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_lang" c:identifier="g_mime_param_set_lang">
        <doc xml:space="preserve">Sets the parameter language specifier used for encoding the value.</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">a #GMimeParam</doc>
            <type name="Param" c:type="GMimeParam*"/>
          </instance-parameter>
          <parameter name="lang" transfer-ownership="none">
            <doc xml:space="preserve">the language specifier</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_value" c:identifier="g_mime_param_set_value">
        <doc xml:space="preserve">Sets the parameter value to @value.</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">a #GMimeParam</doc>
            <type name="Param" c:type="GMimeParam*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the new parameter value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="method">
        <doc xml:space="preserve">The encoding method used for the parameter value.</doc>
        <type name="ParamEncodingMethod" c:type="GMimeParamEncodingMethod"/>
      </field>
      <field name="charset">
        <doc xml:space="preserve">The charset to use when encoding the parameter value.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="lang">
        <doc xml:space="preserve">the language specifier to use when encoding the value.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="name">
        <doc xml:space="preserve">The parameter name.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="value">
        <doc xml:space="preserve">The parameter value.</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="changed" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
    </class>
    <record name="ParamClass"
            c:type="GMimeParamClass"
            glib:is-gtype-struct-for="Param">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <enumeration name="ParamEncodingMethod" c:type="GMimeParamEncodingMethod">
      <doc xml:space="preserve">The MIME specifications specify that the proper method for encoding Content-Type and
Content-Disposition parameter values is the method described in
&lt;a href="https://tools.ietf.org/html/rfc2231"&gt;rfc2231&lt;/a&gt;. However, it is common for
some older email clients to improperly encode using the method described in
&lt;a href="https://tools.ietf.org/html/rfc2047"&gt;rfc2047&lt;/a&gt; instead.</doc>
      <member name="default"
              value="0"
              c:identifier="GMIME_PARAM_ENCODING_METHOD_DEFAULT">
        <doc xml:space="preserve">Use the default encoding method set on the #GMimeFormatOptions.</doc>
      </member>
      <member name="rfc2231"
              value="1"
              c:identifier="GMIME_PARAM_ENCODING_METHOD_RFC2231">
        <doc xml:space="preserve">Use the encoding method described in rfc2231.</doc>
      </member>
      <member name="rfc2047"
              value="2"
              c:identifier="GMIME_PARAM_ENCODING_METHOD_RFC2047">
        <doc xml:space="preserve">Use the encoding method described in rfc2047.</doc>
      </member>
    </enumeration>
    <class name="ParamList"
           c:symbol-prefix="param_list"
           c:type="GMimeParamList"
           parent="GObject.Object"
           glib:type-name="GMimeParamList"
           glib:get-type="g_mime_param_list_get_type"
           glib:type-struct="ParamListClass">
      <doc xml:space="preserve">A list of Content-Type or Content-Disposition parameters.</doc>
      <constructor name="new" c:identifier="g_mime_param_list_new">
        <doc xml:space="preserve">Creates a new Content-Type or Content-Disposition parameter list.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeParamList.</doc>
          <type name="ParamList" c:type="GMimeParamList*"/>
        </return-value>
      </constructor>
      <function name="parse" c:identifier="g_mime_param_list_parse">
        <doc xml:space="preserve">Parses the input string into a parameter list.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeParamList.</doc>
          <type name="ParamList" c:type="GMimeParamList*"/>
        </return-value>
        <parameters>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">a string to parse</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </function>
      <method name="clear" c:identifier="g_mime_param_list_clear">
        <doc xml:space="preserve">Clears the list of parameters.</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 #GMimeParamList</doc>
            <type name="ParamList" c:type="GMimeParamList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="encode" c:identifier="g_mime_param_list_encode">
        <doc xml:space="preserve">Encodes the parameter list into @str, folding lines if required.</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 #GMimeParamList</doc>
            <type name="ParamList" c:type="GMimeParamList*"/>
          </instance-parameter>
          <parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
            <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
          </parameter>
          <parameter name="fold" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the parameter list should be folded; otherwise, %FALSE</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">the output string buffer</doc>
            <type name="GLib.String" c:type="GString*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_parameter"
              c:identifier="g_mime_param_list_get_parameter">
        <doc xml:space="preserve">Gets the #GMimeParam with the given @name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the requested #GMimeParam.</doc>
          <type name="Param" c:type="GMimeParam*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">list: a #GMimeParamList</doc>
            <type name="ParamList" c:type="GMimeParamList*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">the name of the parameter</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_parameter_at"
              c:identifier="g_mime_param_list_get_parameter_at">
        <doc xml:space="preserve">Gets the #GMimeParam at the specified @index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GMimeParam at the specified index.</doc>
          <type name="Param" c:type="GMimeParam*"/>
        </return-value>
        <parameters>
          <instance-parameter name="list" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParamList</doc>
            <type name="ParamList" c:type="GMimeParamList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">the index of the requested parameter</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="length" c:identifier="g_mime_param_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 #GMimeParam items 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 #GMimeParamList</doc>
            <type name="ParamList" c:type="GMimeParamList*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="g_mime_param_list_remove">
        <doc xml:space="preserve">Removes a parameter from the #GMimeParamList.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the specified parameter 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 #GMimeParamList</doc>
            <type name="ParamList" c:type="GMimeParamList*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">the name of the parameter</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_at" c:identifier="g_mime_param_list_remove_at">
        <doc xml:space="preserve">Removes a #GMimeParam from the #GMimeParamList at the specified index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if a #GMimeParam 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 #GMimeParamList</doc>
            <type name="ParamList" c:type="GMimeParamList*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">index of the param to remove</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_parameter"
              c:identifier="g_mime_param_list_set_parameter">
        <doc xml:space="preserve">Sets the specified parameter to @value.</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 #GMimeParamList</doc>
            <type name="ParamList" c:type="GMimeParamList*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">The name of the parameter</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">The parameter value</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="array" readable="0" private="1">
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <field name="changed" readable="0" private="1">
        <type name="gpointer" c:type="gpointer"/>
      </field>
    </class>
    <record name="ParamListClass"
            c:type="GMimeParamListClass"
            glib:is-gtype-struct-for="ParamList">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </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" nullable="1">
          <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>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </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" nullable="1">
          <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>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </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_format" c:identifier="g_mime_parser_get_format">
        <doc xml:space="preserve">Gets the format that the parser is set to parse.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the format that the parser is set to parse.</doc>
          <type name="Format" c:type="GMimeFormat"/>
        </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_mbox_marker"
              c:identifier="g_mime_parser_get_mbox_marker">
        <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" nullable="1">
          <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_mbox_marker_offset"
              c:identifier="g_mime_parser_get_mbox_marker_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_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="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_format" c:identifier="g_mime_parser_set_format">
        <doc xml:space="preserve">Sets the format that the parser should expect the stream to be in.</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="format" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeFormat</doc>
            <type name="Format" c:type="GMimeFormat"/>
          </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"
                     nullable="1"
                     allow-none="1">
            <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.

By default, this feature is enabled if the underlying stream is seekable.</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).

By default, this feature is disabled.</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="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">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <doc xml:space="preserve">private parser state</doc>
        <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"
                   nullable="1"
                   allow-none="1"
                   closure="4">
          <doc xml:space="preserve">The user-supplied callback data.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="ParserOptions"
            c:type="GMimeParserOptions"
            glib:type-name="GMimeParserOptions"
            glib:get-type="g_mime_parser_options_get_type"
            c:symbol-prefix="parser_options">
      <doc xml:space="preserve">A set of parser options used by #GMimeParser and various other parsing functions.</doc>
      <constructor name="new" c:identifier="g_mime_parser_options_new">
        <doc xml:space="preserve">Creates a new set of #GMimeParserOptions.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated set of #GMimeParserOptions with the default values.</doc>
          <type name="ParserOptions" c:type="GMimeParserOptions*"/>
        </return-value>
      </constructor>
      <method name="clone" c:identifier="g_mime_parser_options_clone">
        <doc xml:space="preserve">Clones a #GMimeParserOptions.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated #GMimeParserOptions.</doc>
          <type name="ParserOptions" c:type="GMimeParserOptions*"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="g_mime_parser_options_free">
        <doc xml:space="preserve">Frees a set of #GMimeParserOptions.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParserOptions</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_address_compliance_mode"
              c:identifier="g_mime_parser_options_get_address_compliance_mode">
        <doc xml:space="preserve">Gets the compliance mode that should be used when parsing rfc822 addresses.

Note: Even in #GMIME_RFC_COMPLIANCE_STRICT mode, the address parser is fairly liberal in
what it accepts. Setting it to #GMIME_RFC_COMPLIANCE_LOOSE just makes it try harder to
deal with garbage input.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the compliance mode that is currently set.</doc>
          <type name="RfcComplianceMode" c:type="GMimeRfcComplianceMode"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_allow_addresses_without_domain"
              c:identifier="g_mime_parser_options_get_allow_addresses_without_domain">
        <doc xml:space="preserve">Gets whether or not the rfc822 address parser should allow addresses without a domain.

In general, you'll probably want this value to be %FALSE (the default) as it allows
maximum interoperability with existing (broken) mail clients and other mail software
such as sloppily written perl scripts (aka spambots) that do not properly quote the
name when it contains a comma.

This option exists in order to allow parsing of mailbox addresses that do not have a
domain component. These types of addresses are rare and were typically only used when
sending mail to other users on the same UNIX system.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the address parser should allow addresses without a domain.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_fallback_charsets"
              c:identifier="g_mime_parser_options_get_fallback_charsets">
        <doc xml:space="preserve">Gets the fallback charsets to try when decoding 8-bit headers.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a %NULL-terminated list of charsets to try when
decoding 8-bit headers.</doc>
          <array c:type="const char**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_parameter_compliance_mode"
              c:identifier="g_mime_parser_options_get_parameter_compliance_mode">
        <doc xml:space="preserve">Gets the compliance mode that should be used when parsing Content-Type and
Content-Disposition parameters.

Note: Even in #GMIME_RFC_COMPLIANCE_STRICT mode, the parameter parser is fairly liberal
in what it accepts. Setting it to #GMIME_RFC_COMPLIANCE_LOOSE just makes it try harder
to deal with garbage input.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the compliance mode that is currently set.</doc>
          <type name="RfcComplianceMode" c:type="GMimeRfcComplianceMode"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_rfc2047_compliance_mode"
              c:identifier="g_mime_parser_options_get_rfc2047_compliance_mode">
        <doc xml:space="preserve">Gets the compliance mode that should be used when parsing rfc2047 encoded words.

Note: Even in #GMIME_RFC_COMPLIANCE_STRICT mode, the rfc2047 parser is fairly liberal
in what it accepts. Setting it to #GMIME_RFC_COMPLIANCE_LOOSE just makes it try harder
to deal with garbage input.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the compliance mode that is currently set.</doc>
          <type name="RfcComplianceMode" c:type="GMimeRfcComplianceMode"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_warning_callback"
              c:identifier="g_mime_parser_options_get_warning_callback"
              introspectable="0">
        <doc xml:space="preserve">Gets callback function which is called if the parser detects any issues.</doc>
        <return-value>
          <doc xml:space="preserve">the currently registered warning callback function</doc>
          <type name="ParserWarningFunc" c:type="GMimeParserWarningFunc"/>
        </return-value>
        <parameters>
          <instance-parameter name="options"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_address_compliance_mode"
              c:identifier="g_mime_parser_options_set_address_compliance_mode">
        <doc xml:space="preserve">Sets the compliance mode that should be used when parsing rfc822 addresses.

In general, you'll probably want this value to be #GMIME_RFC_COMPLIANCE_LOOSE
(the default) as it allows maximum interoperability with existing (broken) mail clients
and other mail software such as sloppily written perl scripts (aka spambots).

Note: Even in #GMIME_RFC_COMPLIANCE_STRICT mode, the address parser is fairly liberal in
what it accepts. Setting it to #GMIME_RFC_COMPLIANCE_LOOSE just makes it try harder to
deal with garbage input.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParserOptions</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeRfcComplianceMode</doc>
            <type name="RfcComplianceMode" c:type="GMimeRfcComplianceMode"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_allow_addresses_without_domain"
              c:identifier="g_mime_parser_options_set_allow_addresses_without_domain">
        <doc xml:space="preserve">Sets whether the rfc822 address parser should allow addresses without a domain.

In general, you'll probably want this value to be %FALSE (the default) as it allows
maximum interoperability with existing (broken) mail clients and other mail software
such as sloppily written perl scripts (aka spambots) that do not properly quote the
name when it contains a comma.

This option exists in order to allow parsing of mailbox addresses that do not have a
domain component. These types of addresses are rare and were typically only used when
sending mail to other users on the same UNIX system.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParserOptions</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
          <parameter name="allow" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the parser should allow addresses without a domain or %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_fallback_charsets"
              c:identifier="g_mime_parser_options_set_fallback_charsets">
        <doc xml:space="preserve">Sets the fallback charsets to try when decoding 8-bit headers.

Note: It is recommended that the list of charsets start with utf-8
and end with iso-8859-1.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParserOptions</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
          <parameter name="charsets" transfer-ownership="none">
            <doc xml:space="preserve">a %NULL-terminated list of charsets or %NULL for the default list</doc>
            <type name="utf8" c:type="const char**"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_parameter_compliance_mode"
              c:identifier="g_mime_parser_options_set_parameter_compliance_mode">
        <doc xml:space="preserve">Sets the compliance mode that should be used when parsing Content-Type and
Content-Disposition parameters.

In general, you'll probably want this value to be #GMIME_RFC_COMPLIANCE_LOOSE
(the default) as it allows maximum interoperability with existing (broken) mail clients
and other mail software such as sloppily written perl scripts (aka spambots).

Note: Even in #GMIME_RFC_COMPLIANCE_STRICT mode, the parameter parser is fairly liberal
in what it accepts. Setting it to #GMIME_RFC_COMPLIANCE_LOOSE just makes it try harder
to deal with garbage input.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParserOptions</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeRfcComplianceMode</doc>
            <type name="RfcComplianceMode" c:type="GMimeRfcComplianceMode"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_rfc2047_compliance_mode"
              c:identifier="g_mime_parser_options_set_rfc2047_compliance_mode">
        <doc xml:space="preserve">Sets the compliance mode that should be used when parsing rfc2047 encoded words.

In general, you'll probably want this value to be #GMIME_RFC_COMPLIANCE_LOOSE
(the default) as it allows maximum interoperability with existing (broken) mail clients
and other mail software such as sloppily written perl scripts (aka spambots).

Note: Even in #GMIME_RFC_COMPLIANCE_STRICT mode, the parameter parser is fairly liberal
in what it accepts. Setting it to #GMIME_RFC_COMPLIANCE_LOOSE just makes it try harder
to deal with garbage input.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParserOptions</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
          <parameter name="mode" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeRfcComplianceMode</doc>
            <type name="RfcComplianceMode" c:type="GMimeRfcComplianceMode"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_warning_callback"
              c:identifier="g_mime_parser_options_set_warning_callback"
              introspectable="0">
        <doc xml:space="preserve">Registers the callback function being called if the parser detects any issues.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="options" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeParserOptions</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </instance-parameter>
          <parameter name="warning_cb" transfer-ownership="none" closure="1">
            <doc xml:space="preserve">a #GMimeParserWarningFunc or %NULL to clear the callback</doc>
            <type name="ParserWarningFunc" c:type="GMimeParserWarningFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">data passed to the warning callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <function name="get_default"
                c:identifier="g_mime_parser_options_get_default">
        <doc xml:space="preserve">Gets the default parser options.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the default parser options.</doc>
          <type name="ParserOptions" c:type="GMimeParserOptions*"/>
        </return-value>
      </function>
    </record>
    <enumeration name="ParserWarning" c:type="GMimeParserWarning">
      <doc xml:space="preserve">Issues the @GMimeParser detects. Note that the `GMIME_CRIT_*` issues indicate that some parts of the @GMimeParser input may
be ignored or will be interpreted differently by other software products.</doc>
      <member name="warn_duplicated_content_hdr"
              value="1"
              c:identifier="GMIME_WARN_DUPLICATED_CONTENT_HDR">
        <doc xml:space="preserve">repeated exactly the same `Content-*` header</doc>
      </member>
      <member name="warn_duplicated_parameter"
              value="2"
              c:identifier="GMIME_WARN_DUPLICATED_PARAMETER">
        <doc xml:space="preserve">repeated exactly the same header parameter</doc>
      </member>
      <member name="warn_unencoded_8bit_header"
              value="3"
              c:identifier="GMIME_WARN_UNENCODED_8BIT_HEADER">
        <doc xml:space="preserve">a header contains unencoded 8-bit characters</doc>
      </member>
      <member name="warn_invalid_content_type"
              value="4"
              c:identifier="GMIME_WARN_INVALID_CONTENT_TYPE">
        <doc xml:space="preserve">invalid content type, assume `application/octet-stream`</doc>
      </member>
      <member name="warn_invalid_header"
              value="5"
              c:identifier="GMIME_WARN_INVALID_HEADER">
        <doc xml:space="preserve">invalid header, ignored</doc>
      </member>
      <member name="warn_malformed_multipart"
              value="6"
              c:identifier="GMIME_WARN_MALFORMED_MULTIPART">
        <doc xml:space="preserve">no items in a `multipart/...`</doc>
      </member>
      <member name="warn_truncated_message"
              value="7"
              c:identifier="GMIME_WARN_TRUNCATED_MESSAGE">
        <doc xml:space="preserve">the message is truncated</doc>
      </member>
      <member name="warn_malformed_message"
              value="8"
              c:identifier="GMIME_WARN_MALFORMED_MESSAGE">
        <doc xml:space="preserve">the message is malformed</doc>
      </member>
      <member name="crit_conflicting_content_hdr"
              value="9"
              c:identifier="GMIME_CRIT_CONFLICTING_CONTENT_HDR">
        <doc xml:space="preserve">conflicting `Content-*` header</doc>
      </member>
      <member name="crit_conflicting_parameter"
              value="10"
              c:identifier="GMIME_CRIT_CONFLICTING_PARAMETER">
        <doc xml:space="preserve">conflicting header parameter</doc>
      </member>
      <member name="crit_multipart_without_boundary"
              value="11"
              c:identifier="GMIME_CRIT_MULTIPART_WITHOUT_BOUNDARY">
        <doc xml:space="preserve">a `multipart/...` part lacks the required boundary parameter</doc>
      </member>
    </enumeration>
    <callback name="ParserWarningFunc" c:type="GMimeParserWarningFunc">
      <doc xml:space="preserve">The function signature for a callback to g_mime_parser_options_set_warning_callback().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve">parser offset where the issue has been detected, or -1 if it is unknown</doc>
          <type name="gint64" c:type="gint64"/>
        </parameter>
        <parameter name="errcode" transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeParserWarning</doc>
          <type name="ParserWarning" c:type="GMimeParserWarning"/>
        </parameter>
        <parameter name="item" transfer-ownership="none">
          <doc xml:space="preserve">a NUL-terminated string containing the value causing the issue, may be %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="3">
          <doc xml:space="preserve">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
application/octet-stream.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty MIME Part object with a default content-type of
application/octet-stream.</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" invoker="set_content">
        <doc xml:space="preserve">Sets the content 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>
      </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" c:identifier="g_mime_part_get_content">
        <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_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_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="get_openpgp_data"
              c:identifier="g_mime_part_get_openpgp_data">
        <doc xml:space="preserve">Gets whether or not (and what type) of OpenPGP data is contained
within the #GMimePart.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GMimeOpenPGPData.</doc>
          <type name="OpenPGPData" c:type="GMimeOpenPGPData"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_attachment" c:identifier="g_mime_part_is_attachment">
        <doc xml:space="preserve">Determines whether or not the part is an attachment based on the
value of the Content-Disposition header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the part is an attachment, otherwise %FALSE.</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>
      <method name="openpgp_decrypt"
              c:identifier="g_mime_part_openpgp_decrypt"
              throws="1">
        <doc xml:space="preserve">Decrypts the content of the @mime_part and then replaces the content with
the new, decrypted, content.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <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="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a set of #GMimeDecryptFlags</doc>
            <type name="DecryptFlags" c:type="GMimeDecryptFlags"/>
          </parameter>
          <parameter name="session_key"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the session key to use or %NULL</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="openpgp_encrypt"
              c:identifier="g_mime_part_openpgp_encrypt"
              throws="1">
        <doc xml:space="preserve">Encrypts (and optionally signs) the content of the @mime_part and then replaces
the content with the new, encrypted, content.</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>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="sign" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if the content should also be signed; otherwise, %FALSE</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="userid"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">the key id (or email address) to use when signing (assuming @sign is %TRUE)</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a set of #GMimeEncryptFlags</doc>
            <type name="EncryptFlags" c:type="GMimeEncryptFlags"/>
          </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>
        </parameters>
      </method>
      <method name="openpgp_sign"
              c:identifier="g_mime_part_openpgp_sign"
              throws="1">
        <doc xml:space="preserve">Signs the content of the @mime_part and then replaces the content with
the new, signed, content.</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>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="userid" transfer-ownership="none">
            <doc xml:space="preserve">the key id (or email address) to use for signing</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="openpgp_verify"
              c:identifier="g_mime_part_openpgp_verify"
              throws="1">
        <doc xml:space="preserve">Verifies the OpenPGP signature of the @mime_part and then replaces the content
with the original, raw, content.</doc>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve">a #GMimeSignatureList on success or %NULL on error.</doc>
          <type name="SignatureList" c:type="GMimeSignatureList*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimePart</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">a set of #GMimeVerifyFlags</doc>
            <type name="VerifyFlags" c:type="GMimeVerifyFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_content" c:identifier="g_mime_part_set_content">
        <doc xml:space="preserve">Sets the content 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_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_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="set_openpgp_data"
              c:identifier="g_mime_part_set_openpgp_data">
        <doc xml:space="preserve">Sets whether or not (and what type) of OpenPGP data is contained
within the #GMimePart.</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</doc>
            <type name="Part" c:type="GMimePart*"/>
          </instance-parameter>
          <parameter name="data" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeOpenPGPData</doc>
            <type name="OpenPGPData" c:type="GMimeOpenPGPData"/>
          </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">
        <doc xml:space="preserve">parent #GMimeObject</doc>
        <type name="Object" c:type="GMimeObject"/>
      </field>
      <field name="encoding">
        <doc xml:space="preserve">a #GMimeContentEncoding</doc>
        <type name="ContentEncoding" c:type="GMimeContentEncoding"/>
      </field>
      <field name="openpgp">
        <doc xml:space="preserve">a #GMimeOpenPGPData</doc>
        <type name="OpenPGPData" c:type="GMimeOpenPGPData"/>
      </field>
      <field name="content_description">
        <doc xml:space="preserve">Content-Description string</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="content_location">
        <doc xml:space="preserve">Content-Location string</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="content_md5">
        <doc xml:space="preserve">Content-MD5 string</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="content">
        <doc xml:space="preserve">a #GMimeDataWrapper representing the MIME part's content</doc>
        <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">
        <callback name="set_content">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="mime_part" transfer-ownership="none">
              <doc xml:space="preserve">a #GMimePart object</doc>
              <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"
            glib:type-name="GMimePartIter"
            glib:get-type="g_mime_part_iter_get_type"
            c:symbol-prefix="part_iter">
      <doc xml:space="preserve">A MIME part iterator.</doc>
      <constructor name="new" c:identifier="g_mime_part_iter_new">
        <doc xml:space="preserve">Creates a new #GMimePartIter for iterating over @toplevel's subparts.</doc>
        <return-value transfer-ownership="full">
          <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>
      </constructor>
      <method name="clone" c:identifier="g_mime_part_iter_clone">
        <doc xml:space="preserve">Clones the @iter, including its current state.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimePartIter that is identical to @iter.</doc>
          <type name="PartIter" c:type="GMimePartIter*"/>
        </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="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>
    </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" 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">
        <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>
      </constructor>
    </class>
    <record name="Pkcs7ContextClass"
            c:type="GMimePkcs7ContextClass"
            disguised="1"
            glib:is-gtype-struct-for="Pkcs7Context">
    </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="ecc" value="18" c:identifier="GMIME_PUBKEY_ALGO_ECC">
        <doc xml:space="preserve">The Eliptic Curve algorithm.</doc>
      </member>
      <member name="elg" value="20" c:identifier="GMIME_PUBKEY_ALGO_ELG">
        <doc xml:space="preserve">The ElGamal algorithm.</doc>
      </member>
      <member name="ecdsa" value="301" c:identifier="GMIME_PUBKEY_ALGO_ECDSA">
        <doc xml:space="preserve">The Eliptic Curve + DSA algorithm.</doc>
      </member>
      <member name="ecdh" value="302" c:identifier="GMIME_PUBKEY_ALGO_ECDH">
        <doc xml:space="preserve">The Eliptic Curve + Diffie Helman algorithm.</doc>
      </member>
      <member name="eddsa" value="303" c:identifier="GMIME_PUBKEY_ALGO_EDDSA">
        <doc xml:space="preserve">The Eliptic Curve + DSA algorithm.</doc>
      </member>
    </enumeration>
    <record name="References"
            c:type="GMimeReferences"
            glib:type-name="GMimeReferences"
            glib:get-type="g_mime_references_get_type"
            c:symbol-prefix="references">
      <doc xml:space="preserve">A List of references, as per the References or In-Reply-To header
fields.</doc>
      <field name="array" writable="1">
        <doc xml:space="preserve">the array of message-id references</doc>
        <array name="GLib.PtrArray" c:type="GPtrArray*">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
      <constructor name="new" c:identifier="g_mime_references_new">
        <doc xml:space="preserve">Creates a new #GMimeReferences.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeReferences.</doc>
          <type name="References" c:type="GMimeReferences*"/>
        </return-value>
      </constructor>
      <method 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>
          <instance-parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeReferences</doc>
            <type name="References" c:type="GMimeReferences*"/>
          </instance-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>
      </method>
      <method name="clear" c:identifier="g_mime_references_clear">
        <doc xml:space="preserve">Clears 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</doc>
            <type name="References" c:type="GMimeReferences*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="copy" c:identifier="g_mime_references_copy">
        <doc xml:space="preserve">Copies a #GMimeReferences list.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeReferences list that contains
an identical list of items as @refs.</doc>
          <type name="References" c:type="GMimeReferences*"/>
        </return-value>
        <parameters>
          <instance-parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve">the list of references to copy</doc>
            <type name="References" c:type="GMimeReferences*"/>
          </instance-parameter>
        </parameters>
      </method>
      <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 specified Message-Id reference from the #GMimeReferences.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the Message-Id reference from the #GMimeReferences.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeReferences</doc>
            <type name="References" c:type="GMimeReferences*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">the index of the message id</doc>
            <type name="gint" c:type="int"/>
          </parameter>
        </parameters>
      </method>
      <method name="length" c:identifier="g_mime_references_length">
        <doc xml:space="preserve">Gets the length of the #GMimeReferences list.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of message ids in the list.</doc>
          <type name="gint" c:type="int"/>
        </return-value>
        <parameters>
          <instance-parameter name="refs" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeReferences</doc>
            <type name="References" c:type="GMimeReferences*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_message_id"
              c:identifier="g_mime_references_set_message_id">
        <doc xml:space="preserve">Sets the specified Message-Id reference from the #GMimeReferences.</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</doc>
            <type name="References" c:type="GMimeReferences*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">the index of the message id</doc>
            <type name="gint" c:type="int"/>
          </parameter>
          <parameter name="msgid" transfer-ownership="none">
            <doc xml:space="preserve">the message id</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <function name="parse" c:identifier="g_mime_references_parse">
        <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 transfer-ownership="full">
          <doc xml:space="preserve">a new #GMimeReferences containing the parsed message ids.</doc>
          <type name="References" c:type="GMimeReferences*"/>
        </return-value>
        <parameters>
          <parameter name="options"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
            <type name="ParserOptions" c:type="GMimeParserOptions*"/>
          </parameter>
          <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="RfcComplianceMode" c:type="GMimeRfcComplianceMode">
      <doc xml:space="preserve">An RFC compliance mode.</doc>
      <member name="loose" value="0" c:identifier="GMIME_RFC_COMPLIANCE_LOOSE">
        <doc xml:space="preserve">Attempt to be much more liberal accepting broken and/or invalid formatting.</doc>
      </member>
      <member name="strict"
              value="1"
              c:identifier="GMIME_RFC_COMPLIANCE_STRICT">
        <doc xml:space="preserve">Do not attempt to be overly liberal in accepting broken and/or invalid formatting.</doc>
      </member>
    </enumeration>
    <constant name="SIGNATURE_STATUS_ERROR_MASK"
              value="-8"
              c:type="GMIME_SIGNATURE_STATUS_ERROR_MASK">
      <doc xml:space="preserve">A convenience macro for masking out the non-error bit flags.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <enumeration name="SecureMimeType" c:type="GMimeSecureMimeType">
      <doc xml:space="preserve">The S/MIME data type.</doc>
      <member name="compressed_data"
              value="0"
              c:identifier="GMIME_SECURE_MIME_TYPE_COMPRESSED_DATA">
        <doc xml:space="preserve">The S/MIME content contains compressed data.</doc>
      </member>
      <member name="enveloped_data"
              value="1"
              c:identifier="GMIME_SECURE_MIME_TYPE_ENVELOPED_DATA">
        <doc xml:space="preserve">The S/MIME content contains enveloped data.</doc>
      </member>
      <member name="signed_data"
              value="2"
              c:identifier="GMIME_SECURE_MIME_TYPE_SIGNED_DATA">
        <doc xml:space="preserve">The S/MIME content contains signed data.</doc>
      </member>
      <member name="certs_only"
              value="3"
              c:identifier="GMIME_SECURE_MIME_TYPE_CERTS_ONLY">
        <doc xml:space="preserve">The S/MIME content contains only certificates.</doc>
      </member>
      <member name="unknown"
              value="4"
              c:identifier="GMIME_SECURE_MIME_TYPE_UNKNOWN">
        <doc xml:space="preserve">The S/MIME content is unknown.</doc>
      </member>
    </enumeration>
    <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_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 as a bitfield of #GMimeSignatureStatus flags.</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_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">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="status">
        <doc xml:space="preserve">A bitfield of #GMimeSignatureStatus values.</doc>
        <type name="SignatureStatus" c:type="GMimeSignatureStatus"/>
      </field>
      <field name="cert">
        <doc xml:space="preserve">The #GMimeCertificate used in the signature.</doc>
        <type name="Certificate" c:type="GMimeCertificate*"/>
      </field>
      <field name="created">
        <doc xml:space="preserve">The creation date of the signature.</doc>
        <type name="glong" c:type="time_t"/>
      </field>
      <field name="expires">
        <doc xml:space="preserve">The expiration date of the signature.</doc>
        <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>
    <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">
        <doc xml:space="preserve">parent #GObject</doc>
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="array" readable="0" private="1">
        <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 bit flags for a particular
#GMimeSignature.</doc>
      <member name="valid"
              value="1"
              c:identifier="GMIME_SIGNATURE_STATUS_VALID">
        <doc xml:space="preserve">The signature is fully valid.</doc>
      </member>
      <member name="green"
              value="2"
              c:identifier="GMIME_SIGNATURE_STATUS_GREEN">
        <doc xml:space="preserve">The signature is good.</doc>
      </member>
      <member name="red" value="4" c:identifier="GMIME_SIGNATURE_STATUS_RED">
        <doc xml:space="preserve">The signature is bad.</doc>
      </member>
      <member name="key_revoked"
              value="16"
              c:identifier="GMIME_SIGNATURE_STATUS_KEY_REVOKED">
        <doc xml:space="preserve">The key has been revoked.</doc>
      </member>
      <member name="key_expired"
              value="32"
              c:identifier="GMIME_SIGNATURE_STATUS_KEY_EXPIRED">
        <doc xml:space="preserve">The key has expired.</doc>
      </member>
      <member name="sig_expired"
              value="64"
              c:identifier="GMIME_SIGNATURE_STATUS_SIG_EXPIRED">
        <doc xml:space="preserve">The signature has expired.</doc>
      </member>
      <member name="key_missing"
              value="128"
              c:identifier="GMIME_SIGNATURE_STATUS_KEY_MISSING">
        <doc xml:space="preserve">Can't verify due to missing key.</doc>
      </member>
      <member name="crl_missing"
              value="256"
              c:identifier="GMIME_SIGNATURE_STATUS_CRL_MISSING">
        <doc xml:space="preserve">CRL not available.</doc>
      </member>
      <member name="crl_too_old"
              value="512"
              c:identifier="GMIME_SIGNATURE_STATUS_CRL_TOO_OLD">
        <doc xml:space="preserve">Available CRL is too old.</doc>
      </member>
      <member name="bad_policy"
              value="1024"
              c:identifier="GMIME_SIGNATURE_STATUS_BAD_POLICY">
        <doc xml:space="preserve">A policy was not met.</doc>
      </member>
      <member name="sys_error"
              value="2048"
              c:identifier="GMIME_SIGNATURE_STATUS_SYS_ERROR">
        <doc xml:space="preserve">A system error occurred.</doc>
      </member>
      <member name="tofu_conflict"
              value="4096"
              c:identifier="GMIME_SIGNATURE_STATUS_TOFU_CONFLICT">
        <doc xml:space="preserve">Tofu conflict detected.</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">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <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">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <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">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <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">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <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="gssize" 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="gsize" 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">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <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">
            <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>
      </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">
            <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>
      </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">
            <doc xml:space="preserve">a #GMimeStream</doc>
            <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="gssize" 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="gsize" 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="gssize" 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="gsize" 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="gssize" 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="..." transfer-ownership="none">
            <doc xml:space="preserve">arguments</doc>
            <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="gssize" 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="gsize" 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="gssize" 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="gsize" 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="gssize" 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="gint64" c:type="gint64"/>
        </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="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="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="gsize" c:type="size_t"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object" readable="0" private="1">
        <doc xml:space="preserve">parent #GObject</doc>
        <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">
        <doc xml:space="preserve">parent #GMimeStream</doc>
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="mode">
        <doc xml:space="preserve">buffering mode</doc>
        <type name="StreamBufferMode" c:type="GMimeStreamBufferMode"/>
      </field>
      <field name="source">
        <doc xml:space="preserve">source stream</doc>
        <type name="Stream" c:type="GMimeStream*"/>
      </field>
      <field name="buffer">
        <doc xml:space="preserve">internal buffer</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="bufptr">
        <doc xml:space="preserve">current position in the buffer</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="bufend">
        <doc xml:space="preserve">end of the buffer</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="buflen">
        <doc xml:space="preserve">buffer length</doc>
        <type name="gsize" 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="read"
              value="0"
              c:identifier="GMIME_STREAM_BUFFER_BLOCK_READ">
        <doc xml:space="preserve">Read in 4k blocks.</doc>
      </member>
      <member name="write"
              value="1"
              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">
        <doc xml:space="preserve">parent #GMimeStream</doc>
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="sources">
        <doc xml:space="preserve">list of sources</doc>
        <type name="gpointer" c:type="_cat_node*"/>
      </field>
      <field name="current">
        <doc xml:space="preserve">current source</doc>
        <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="gssize" c:type="ssize_t"/>
          </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="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="gsize" 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="gssize" c:type="ssize_t"/>
          </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="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="gsize" 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">
              <doc xml:space="preserve">a #GMimeStream</doc>
              <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">
              <doc xml:space="preserve">a #GMimeStream</doc>
              <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">
              <doc xml:space="preserve">a #GMimeStream</doc>
              <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">
              <doc xml:space="preserve">a #GMimeStream</doc>
              <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">
              <doc xml:space="preserve">a #GMimeStream</doc>
              <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">
              <doc xml:space="preserve">a #GMimeStream</doc>
              <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">
              <doc xml:space="preserve">a #GMimeStream</doc>
              <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">
              <doc xml:space="preserve">a #GMimeStream</doc>
              <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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a FILE pointer</doc>
            <type name="gpointer" c:type="FILE*"/>
          </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"
                     nullable="1"
                     allow-none="1">
            <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>
      <function name="open" c:identifier="g_mime_stream_file_open" throws="1">
        <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>
      </function>
      <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">
        <doc xml:space="preserve">parent #GMimeStream</doc>
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="owner">
        <doc xml:space="preserve">%TRUE if this stream owns @fd</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="fp">
        <doc xml:space="preserve">standard-c FILE pointer</doc>
        <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="get_owner" c:identifier="g_mime_stream_filter_get_owner">
        <doc xml:space="preserve">Gets whether or not @stream owns the source stream.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @stream owns the source stream 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 #GMimeStreamFilter</doc>
            <type name="StreamFilter" c:type="GMimeStreamFilter*"/>
          </instance-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>
      <method name="set_owner" c:identifier="g_mime_stream_filter_set_owner">
        <doc xml:space="preserve">Sets whether or not @stream owns the source stream..

Note: @owner should be %TRUE if the stream should close() the
backend source stream 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 #GMimeStreamFilter</doc>
            <type name="StreamFilter" c:type="GMimeStreamFilter*"/>
          </instance-parameter>
          <parameter name="owner" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if this stream should own the source stream or %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeStream</doc>
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="priv">
        <doc xml:space="preserve">private state data</doc>
        <type name="gpointer" c:type="_GMimeStreamFilterPrivate*"/>
      </field>
      <field name="source">
        <doc xml:space="preserve">source stream</doc>
        <type name="Stream" c:type="GMimeStream*"/>
      </field>
      <field name="owner">
        <type name="gboolean" c:type="gboolean"/>
      </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_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>
      <function name="open" c:identifier="g_mime_stream_fs_open" throws="1">
        <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>
      </function>
      <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">
        <doc xml:space="preserve">parent #GMimeStream</doc>
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="owner">
        <doc xml:space="preserve">%TRUE if this stream owns @fd</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="eos">
        <doc xml:space="preserve">%TRUE if end-of-stream</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="fd">
        <doc xml:space="preserve">file descriptor</doc>
        <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">
        <doc xml:space="preserve">parent #GMimeStream</doc>
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="ostream">
        <doc xml:space="preserve">a #GOutputStream</doc>
        <type name="Gio.OutputStream" c:type="GOutputStream*"/>
      </field>
      <field name="istream">
        <doc xml:space="preserve">a #GInputStream</doc>
        <type name="Gio.InputStream" c:type="GInputStream*"/>
      </field>
      <field name="file">
        <doc xml:space="preserve">a #GFile</doc>
        <type name="Gio.File" c:type="GFile*"/>
      </field>
      <field name="owner">
        <doc xml:space="preserve">%TRUE if this stream owns the #GFile or %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="eos">
        <doc xml:space="preserve">%TRUE if the end of the stream has been reached or %FALSE otherwise</doc>
        <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">
        <doc xml:space="preserve">data to pass to the I/O function.</doc>
        <type name="gpointer" c:type="void*"/>
      </field>
      <field name="len" writable="1">
        <doc xml:space="preserve">length of the data, in bytes.</doc>
        <type name="gsize" 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="const char*">
              <type name="guint8"/>
            </array>
          </parameter>
          <parameter name="len" transfer-ownership="none">
            <doc xml:space="preserve">buffer length</doc>
            <type name="gsize" 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">
        <doc xml:space="preserve">parent #GMimeStream</doc>
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="buffer">
        <doc xml:space="preserve">a memory buffer</doc>
        <array name="GLib.ByteArray" c:type="GByteArray*">
          <type name="guint8" c:type="guint8"/>
        </array>
      </field>
      <field name="owner">
        <doc xml:space="preserve">%TRUE if this stream owns the memory buffer</doc>
        <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>
      <method name="get_owner"
              c:identifier="g_mime_stream_mmap_get_owner"
              version="3.2">
        <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="StreamMmap" c:type="GMimeStreamMmap*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_owner"
              c:identifier="g_mime_stream_mmap_set_owner"
              version="3.2">
        <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 #GMimeStreamMmap</doc>
            <type name="StreamMmap" c:type="GMimeStreamMmap*"/>
          </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">
        <doc xml:space="preserve">parent #GMimeStream</doc>
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="owner">
        <doc xml:space="preserve">%TRUE if this stream owns the memory map</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="eos">
        <doc xml:space="preserve">%TRUE if end-of-stream</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="fd">
        <doc xml:space="preserve">file descriptor</doc>
        <type name="gint" c:type="int"/>
      </field>
      <field name="map">
        <doc xml:space="preserve">memory map</doc>
        <type name="utf8" c:type="char*"/>
      </field>
      <field name="maplen">
        <doc xml:space="preserve">length of the memory map</doc>
        <type name="gsize" 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>
      <method name="get_count_newlines"
              c:identifier="g_mime_stream_null_get_count_newlines">
        <doc xml:space="preserve">Gets whether or not the stream should keep track of the number of newlines
encountered.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the stream should count the number of newlines 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 #GMimeStreamNull</doc>
            <type name="StreamNull" c:type="GMimeStreamNull*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_count_newlines"
              c:identifier="g_mime_stream_null_set_count_newlines">
        <doc xml:space="preserve">Sets whether or not the stream should keep track of the number of newlines
encountered.</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 #GMimeStreamNull</doc>
            <type name="StreamNull" c:type="GMimeStreamNull*"/>
          </instance-parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if newlines should be counted or %FALSE otherwise</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimeStream</doc>
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="written">
        <doc xml:space="preserve">number of bytes written to this stream</doc>
        <type name="gsize" c:type="size_t"/>
      </field>
      <field name="newlines">
        <doc xml:space="preserve">the number of newlines written to this stream</doc>
        <type name="gsize" c:type="size_t"/>
      </field>
      <field name="count_newlines">
        <doc xml:space="preserve">whether or not the stream should count newlines</doc>
        <type name="gboolean" c:type="gboolean"/>
      </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">
        <doc xml:space="preserve">parent #GMimeStream</doc>
        <type name="Stream" c:type="GMimeStream"/>
      </field>
      <field name="owner">
        <doc xml:space="preserve">%TRUE if this stream owns @fd</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="eos">
        <doc xml:space="preserve">%TRUE if end-of-stream</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="fd">
        <doc xml:space="preserve">pipe descriptor</doc>
        <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>
    <class name="TextPart"
           c:symbol-prefix="text_part"
           c:type="GMimeTextPart"
           parent="Part"
           glib:type-name="GMimeTextPart"
           glib:get-type="g_mime_text_part_get_type"
           glib:type-struct="TextPartClass">
      <doc xml:space="preserve">A text MIME part object.</doc>
      <constructor name="new" c:identifier="g_mime_text_part_new">
        <doc xml:space="preserve">Creates a new text 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="TextPart" c:type="GMimeTextPart*"/>
        </return-value>
      </constructor>
      <constructor name="new_with_subtype"
                   c:identifier="g_mime_text_part_new_with_subtype">
        <doc xml:space="preserve">Creates a new text MIME part with a sepcified subtype.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an empty text MIME part object with the specified subtype.</doc>
          <type name="TextPart" c:type="GMimeTextPart*"/>
        </return-value>
        <parameters>
          <parameter name="subtype" transfer-ownership="none">
            <doc xml:space="preserve">textual subtype string</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="get_charset" c:identifier="g_mime_text_part_get_charset">
        <doc xml:space="preserve">Gets the value of the charset parameter on the Content-Type header.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the value of the charset parameter or %NULL if unavailable.</doc>
          <type name="utf8" c:type="const char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeTextPart</doc>
            <type name="TextPart" c:type="GMimeTextPart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_text" c:identifier="g_mime_text_part_get_text">
        <doc xml:space="preserve">Gets the text content of the @mime_part as a string.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly allocated string containing the utf-8 encoded text content.</doc>
          <type name="utf8" c:type="char*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mime_part" transfer-ownership="none">
            <doc xml:space="preserve">a #GMimeTextPart</doc>
            <type name="TextPart" c:type="GMimeTextPart*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_charset" c:identifier="g_mime_text_part_set_charset">
        <doc xml:space="preserve">Sets the charset parameter on the Content-Type header to the specified value.</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 #GMimeTextPart</doc>
            <type name="TextPart" c:type="GMimeTextPart*"/>
          </instance-parameter>
          <parameter name="charset" transfer-ownership="none">
            <doc xml:space="preserve">the name of the charset</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_text" c:identifier="g_mime_text_part_set_text">
        <doc xml:space="preserve">Sets the specified text as the content and updates the charset parameter on the Content-Type header.</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 #GMimeTextPart</doc>
            <type name="TextPart" c:type="GMimeTextPart*"/>
          </instance-parameter>
          <parameter name="text" transfer-ownership="none">
            <doc xml:space="preserve">the text in utf-8</doc>
            <type name="utf8" c:type="const char*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent_object">
        <doc xml:space="preserve">parent #GMimePart</doc>
        <type name="Part" c:type="GMimePart"/>
      </field>
    </class>
    <record name="TextPartClass"
            c:type="GMimeTextPartClass"
            glib:is-gtype-struct-for="TextPart">
      <field name="parent_class">
        <type name="PartClass" c:type="GMimePartClass"/>
      </field>
    </record>
    <enumeration name="Trust" c:type="GMimeTrust">
      <doc xml:space="preserve">The trust level of a certificate.  Trust level tries to answer the
question: "How much is the user willing to rely on cryptographic
identity assertions made by the owner of this certificate?"

By way of comparison with web browser X.509 certificate validation
stacks, the certificate of a "Root CA" has @GMIME_TRUST_ULTIMATE,
while the certificate of an intermediate CA has @GMIME_TRUST_FULL,
and an end-entity certificate (e.g., with CA:FALSE set) would have
@GMIME_TRUST_NEVER.</doc>
      <member name="unknown" value="0" c:identifier="GMIME_TRUST_UNKNOWN">
        <doc xml:space="preserve">We do not know whether to rely on identity assertions made by the certificate.</doc>
      </member>
      <member name="undefined" value="1" c:identifier="GMIME_TRUST_UNDEFINED">
        <doc xml:space="preserve">We do not have enough information to decide whether to rely on identity assertions made by the certificate.</doc>
      </member>
      <member name="never" value="2" c:identifier="GMIME_TRUST_NEVER">
        <doc xml:space="preserve">We should never rely on identity assertions made by the certificate.</doc>
      </member>
      <member name="marginal" value="3" c:identifier="GMIME_TRUST_MARGINAL">
        <doc xml:space="preserve">We can rely on identity assertions made by this certificate as long as they are corroborated by other marginally-trusted certificates.</doc>
      </member>
      <member name="full" value="4" c:identifier="GMIME_TRUST_FULL">
        <doc xml:space="preserve">We can rely on identity assertions made by this certificate.</doc>
      </member>
      <member name="ultimate" value="5" c:identifier="GMIME_TRUST_ULTIMATE">
        <doc xml:space="preserve">This certificate is an undeniable root of trust (e.g. normally, this is a certificate controlled by the user themselves).</doc>
      </member>
    </enumeration>
    <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>
    <enumeration name="Validity" c:type="GMimeValidity">
      <doc xml:space="preserve">The validity level of a certificate's User ID.  Validity level
tries to answer the question: "How strongly do we believe that this
certificate belongs to the party it says it belongs to?"

Note that some OpenPGP certificates have multiple User IDs, and
each User ID may have a different validity level (e.g. depending on
which third parties have certified which User IDs, and which third
parties the local user has chosen to trust).

Similarly, an X.509 certificate can have multiple SubjectAltNames,
and each name may also have a different validity level (e.g. if the
issuing CA is bound by name constraints).

Note that the GMime API currently only exposes the highest-validty
User ID for any given certificate.</doc>
      <member name="unknown" value="0" c:identifier="GMIME_VALIDITY_UNKNOWN">
        <doc xml:space="preserve">The User ID of the certificate is of unknown validity.</doc>
      </member>
      <member name="undefined"
              value="1"
              c:identifier="GMIME_VALIDITY_UNDEFINED">
        <doc xml:space="preserve">The User ID of the certificate is undefined.</doc>
      </member>
      <member name="never" value="2" c:identifier="GMIME_VALIDITY_NEVER">
        <doc xml:space="preserve">The User ID of the certificate is never to be treated as valid.</doc>
      </member>
      <member name="marginal" value="3" c:identifier="GMIME_VALIDITY_MARGINAL">
        <doc xml:space="preserve">The User ID of the certificate is marginally valid (e.g. it has been certified by only one marginally-trusted party).</doc>
      </member>
      <member name="full" value="4" c:identifier="GMIME_VALIDITY_FULL">
        <doc xml:space="preserve">The User ID of the certificate is fully valid.</doc>
      </member>
      <member name="ultimate" value="5" c:identifier="GMIME_VALIDITY_ULTIMATE">
        <doc xml:space="preserve">The User ID of the certificate is ultimately valid (i.e., usually the certificate belongs to the local user themselves).</doc>
      </member>
    </enumeration>
    <enumeration name="VerifyFlags" c:type="GMimeVerifyFlags">
      <doc xml:space="preserve">Signature verification flags.</doc>
      <member name="verify_none" value="0" c:identifier="GMIME_VERIFY_NONE">
        <doc xml:space="preserve">No flags specified.</doc>
      </member>
    </enumeration>
    <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" nullable="1">
        <doc xml:space="preserve">the charset name best suited for the input text
or %NULL if it is 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="gsize" 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" nullable="1">
        <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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="format_options_get_default"
              c:identifier="g_mime_format_options_get_default"
              moved-to="FormatOptions.get_default">
      <doc xml:space="preserve">Gets the default format options.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">the default format options.</doc>
        <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
      </return-value>
    </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="iconv_t"/>
        </parameter>
      </parameters>
    </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="gsize" 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="iconv_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_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="iconv_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="iconv_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="gsize" 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="gsize" c:type="size_t"/>
        </parameter>
      </parameters>
    </function>
    <function name="init" c:identifier="g_mime_init">
      <doc xml:space="preserve">Initializes GMime.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </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" nullable="1">
        <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="parser_options_get_default"
              c:identifier="g_mime_parser_options_get_default"
              moved-to="ParserOptions.get_default">
      <doc xml:space="preserve">Gets the default parser options.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">the default parser options.</doc>
        <type name="ParserOptions" c:type="GMimeParserOptions*"/>
      </return-value>
    </function>
    <function name="references_parse"
              c:identifier="g_mime_references_parse"
              moved-to="References.parse">
      <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 transfer-ownership="full">
        <doc xml:space="preserve">a new #GMimeReferences containing the parsed message ids.</doc>
        <type name="References" c:type="GMimeReferences*"/>
      </return-value>
      <parameters>
        <parameter name="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
          <type name="ParserOptions" c:type="GMimeParserOptions*"/>
        </parameter>
        <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>
    <function name="shutdown" c:identifier="g_mime_shutdown">
      <doc xml:space="preserve">Frees internally allocated tables created in g_mime_init().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </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>
          <array length="1" zero-terminated="0" c:type="const unsigned char*">
            <type name="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve">text length</doc>
          <type name="gsize" 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="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
          <type name="ParserOptions" c:type="GMimeParserOptions*"/>
        </parameter>
        <parameter name="text" transfer-ownership="none">
          <doc xml:space="preserve">input text in
  unknown 8bit/multibyte character set</doc>
          <array length="2" zero-terminated="0" c:type="const char*">
            <type name="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve">input text length</doc>
          <type name="gsize" 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">Parses the rfc822 date string.</doc>
      <return-value transfer-ownership="full" nullable="1">
        <doc xml:space="preserve">the #GDateTime representation of the date
string specified by @str or %NULL on error.</doc>
        <type name="GLib.DateTime" c:type="GDateTime*"/>
      </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>
      </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.</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="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
          <type name="ParserOptions" c:type="GMimeParserOptions*"/>
        </parameter>
        <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.</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="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
          <type name="ParserOptions" c:type="GMimeParserOptions*"/>
        </parameter>
        <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="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
          <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
        </parameter>
        <parameter name="phrase" transfer-ownership="none">
          <doc xml:space="preserve">phrase to encode</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="charset"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">the charset to use or %NULL to use the default</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="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
          <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
        </parameter>
        <parameter name="text" transfer-ownership="none">
          <doc xml:space="preserve">text to encode</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="charset"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">the charset to use or %NULL to use the default</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 @date.</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">a #GDateTime</doc>
          <type name="GLib.DateTime" c:type="GDateTime*"/>
        </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 @text and the following arguments.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
          <type name="ParserOptions" c:type="GMimeParserOptions*"/>
        </parameter>
        <parameter name="format"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
          <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
        </parameter>
        <parameter name="text" transfer-ownership="none">
          <doc xml:space="preserve">text with printf-style formatters</doc>
          <type name="utf8" c:type="const char*"/>
        </parameter>
        <parameter name="..." transfer-ownership="none">
          <doc xml:space="preserve">arguments</doc>
          <varargs/>
        </parameter>
      </parameters>
    </function>
    <function name="utils_header_unfold"
              c:identifier="g_mime_utils_header_unfold">
      <doc xml:space="preserve">Unfolds a raw header value according to the rules in rfc822.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">an allocated string containing the unfolded header value.</doc>
        <type name="utf8" c:type="char*"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">raw header value</doc>
          <type name="utf8" c:type="const char*"/>
        </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="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
          <type name="ParserOptions" c:type="GMimeParserOptions*"/>
        </parameter>
        <parameter name="format"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
          <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
        </parameter>
        <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>
          <array length="1" zero-terminated="0" c:type="const unsigned char*">
            <type name="guint8"/>
          </array>
        </parameter>
        <parameter name="len" transfer-ownership="none">
          <doc xml:space="preserve">text length</doc>
          <type name="gsize" 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="options"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeParserOptions or %NULL</doc>
          <type name="ParserOptions" c:type="GMimeParserOptions*"/>
        </parameter>
        <parameter name="format"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GMimeFormatOptions or %NULL</doc>
          <type name="FormatOptions" c:type="GMimeFormatOptions*"/>
        </parameter>
        <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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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="gsize" 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>
