<?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"/>
  <include name="libxml2" version="2.0"/>
  <package name="libedataserver-1.2"/>
  <c:include name="libedataserver/libedataserver.h"/>
  <namespace name="EDataServer"
             version="1.2"
             shared-library="libedataserver-1.2.so.18.0,libcamel-1.2.so.36.0"
             c:identifier-prefixes="E"
             c:symbol-prefixes="e">
    <record name="AsyncClosure"
            c:type="EAsyncClosure"
            disguised="1"
            version="3.6">
      <doc xml:space="preserve">#EAsyncClosure provides a simple way to run an asynchronous function
synchronously without blocking a running #GMainLoop or using threads.

1) Create an #EAsyncClosure with e_async_closure_new().

2) Call the asynchronous function passing e_async_closure_callback() as
   the #GAsyncReadyCallback argument and the #EAsyncClosure as the data
   argument.

3) Call e_async_closure_wait() and collect the #GAsyncResult.

4) Call the corresponding asynchronous "finish" function, passing the
   #GAsyncResult returned by e_async_closure_wait().

5) If needed, repeat steps 2-4 for additional asynchronous functions
   using the same #EAsyncClosure.

6) Finally, free the #EAsyncClosure with e_async_closure_free().</doc>
      <method name="free" c:identifier="e_async_closure_free" version="3.6">
        <doc xml:space="preserve">Frees the @closure and the resources it holds.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="closure" transfer-ownership="none">
            <doc xml:space="preserve">an #EAsyncClosure</doc>
            <type name="AsyncClosure" c:type="EAsyncClosure*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="wait" c:identifier="e_async_closure_wait" version="3.6">
        <doc xml:space="preserve">Call this function immediately after starting an asynchronous operation.
The function waits for the asynchronous operation to complete and returns
its #GAsyncResult to be passed to the operation's "finish" function.

This function can be called repeatedly on the same #EAsyncClosure to
easily string together multiple asynchronous operations.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GAsyncResult which is owned by the closure</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </return-value>
        <parameters>
          <instance-parameter name="closure" transfer-ownership="none">
            <doc xml:space="preserve">an #EAsyncClosure</doc>
            <type name="AsyncClosure" c:type="EAsyncClosure*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="callback"
                c:identifier="e_async_closure_callback"
                version="3.6">
        <doc xml:space="preserve">Pass this function as the #GAsyncReadyCallback argument of an asynchronous
function, and the #EAsyncClosure as the data argument.

This causes e_async_closure_wait() to terminate and return @result.</doc>
        <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 #GObject or %NULL, it is not used by the function at all</doc>
            <type name="GObject.Object" c:type="GObject*"/>
          </parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="closure" transfer-ownership="none">
            <doc xml:space="preserve">an #EAsyncClosure</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="new"
                c:identifier="e_async_closure_new"
                version="3.6"
                introspectable="0">
        <doc xml:space="preserve">Creates a new #EAsyncClosure for use with asynchronous functions.</doc>
        <return-value>
          <doc xml:space="preserve">a new #EAsyncClosure</doc>
          <type name="AsyncClosure" c:type="EAsyncClosure*"/>
        </return-value>
      </function>
    </record>
    <constant name="CREDENTIALS_KEY_AUTH_METHOD"
              value="auth-method"
              c:type="E_CREDENTIALS_KEY_AUTH_METHOD">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CREDENTIALS_KEY_FOREIGN_REQUEST"
              value="foreign-request"
              c:type="E_CREDENTIALS_KEY_FOREIGN_REQUEST">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CREDENTIALS_KEY_PASSWORD"
              value="password"
              c:type="E_CREDENTIALS_KEY_PASSWORD">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CREDENTIALS_KEY_PROMPT_FLAGS"
              value="prompt-flags"
              c:type="E_CREDENTIALS_KEY_PROMPT_FLAGS">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CREDENTIALS_KEY_PROMPT_KEY"
              value="prompt-key"
              c:type="E_CREDENTIALS_KEY_PROMPT_KEY">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CREDENTIALS_KEY_PROMPT_REASON"
              value="prompt-reason"
              c:type="E_CREDENTIALS_KEY_PROMPT_REASON">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CREDENTIALS_KEY_PROMPT_TEXT"
              value="prompt-text"
              c:type="E_CREDENTIALS_KEY_PROMPT_TEXT">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CREDENTIALS_KEY_PROMPT_TITLE"
              value="prompt-title"
              c:type="E_CREDENTIALS_KEY_PROMPT_TITLE">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CREDENTIALS_KEY_USERNAME"
              value="username"
              c:type="E_CREDENTIALS_KEY_USERNAME">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <record name="CancellableMutex" c:type="ECancellableMutex">
      <field name="base" writable="1">
        <type name="gpointer" c:type="_ECancellableLocksBase"/>
      </field>
      <field name="mutex" writable="1">
        <type name="GLib.Mutex" c:type="GMutex"/>
      </field>
      <method name="clear"
              c:identifier="e_cancellable_mutex_clear"
              version="3.8">
        <doc xml:space="preserve">Frees memory allocated by e_cancellable_mutex_init().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mutex" transfer-ownership="none">
            <doc xml:space="preserve">an #ECancellableMutex instance</doc>
            <type name="CancellableMutex" c:type="ECancellableMutex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_internal_mutex"
              c:identifier="e_cancellable_mutex_get_internal_mutex"
              version="3.8"
              introspectable="0">
        <doc xml:space="preserve">To get internal #GMutex. This is meant for cases when a lock is already
acquired, and the caller needs to wait for a #GCond, in which case
the returned #GMutex can be used to g_cond_wait() or g_cond_wait_until().</doc>
        <return-value>
          <doc xml:space="preserve">Internal #GMutex, used in @mutex</doc>
          <type name="GLib.Mutex" c:type="GMutex*"/>
        </return-value>
        <parameters>
          <instance-parameter name="mutex" transfer-ownership="none">
            <doc xml:space="preserve">an #ECancellableMutex instance</doc>
            <type name="CancellableMutex" c:type="ECancellableMutex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init"
              c:identifier="e_cancellable_mutex_init"
              version="3.8">
        <doc xml:space="preserve">Initializes @mutex structure.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mutex" transfer-ownership="none">
            <doc xml:space="preserve">an #ECancellableMutex instance</doc>
            <type name="CancellableMutex" c:type="ECancellableMutex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lock"
              c:identifier="e_cancellable_mutex_lock"
              version="3.8">
        <doc xml:space="preserve">Acquires lock on @mutex. The returned value indicates whether
the lock was acquired, while %FALSE is returned only either or
invalid arguments or the passed in @cancellable had been cancelled.
In case of %NULL @cancellable the function blocks like g_mutex_lock().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE, if lock had been acquired, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="mutex" transfer-ownership="none">
            <doc xml:space="preserve">an #ECancellableMutex instance</doc>
            <type name="CancellableMutex" c:type="ECancellableMutex*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unlock"
              c:identifier="e_cancellable_mutex_unlock"
              version="3.8">
        <doc xml:space="preserve">Releases lock previously acquired by e_cancellable_mutex_lock().
Behaviour is undefined if this is called on a @mutex which returned
%FALSE in e_cancellable_mutex_lock().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="mutex" transfer-ownership="none">
            <doc xml:space="preserve">an #ECancellableMutex instance</doc>
            <type name="CancellableMutex" c:type="ECancellableMutex*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="CancellableRecMutex" c:type="ECancellableRecMutex">
      <field name="base" writable="1">
        <type name="gpointer" c:type="_ECancellableLocksBase"/>
      </field>
      <field name="rec_mutex" writable="1">
        <type name="GLib.RecMutex" c:type="GRecMutex"/>
      </field>
      <method name="clear"
              c:identifier="e_cancellable_rec_mutex_clear"
              version="3.8">
        <doc xml:space="preserve">Frees memory allocated by e_cancellable_rec_mutex_init().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="rec_mutex" transfer-ownership="none">
            <doc xml:space="preserve">an #ECancellableRecMutex instance</doc>
            <type name="CancellableRecMutex" c:type="ECancellableRecMutex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init"
              c:identifier="e_cancellable_rec_mutex_init"
              version="3.8">
        <doc xml:space="preserve">Initializes @rec_mutex structure.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="rec_mutex" transfer-ownership="none">
            <doc xml:space="preserve">an #ECancellableRecMutex instance</doc>
            <type name="CancellableRecMutex" c:type="ECancellableRecMutex*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lock"
              c:identifier="e_cancellable_rec_mutex_lock"
              version="3.8">
        <doc xml:space="preserve">Acquires lock on @rec_mutex. The returned value indicates whether
the lock was acquired, while %FALSE is returned only either or
invalid arguments or the passed in @cancellable had been cancelled.
In case of %NULL @cancellable the function blocks like g_rec_mutex_lock().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE, if lock had been acquired, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="rec_mutex" transfer-ownership="none">
            <doc xml:space="preserve">an #ECancellableRecMutex instance</doc>
            <type name="CancellableRecMutex" c:type="ECancellableRecMutex*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unlock"
              c:identifier="e_cancellable_rec_mutex_unlock"
              version="3.8">
        <doc xml:space="preserve">Releases lock previously acquired by e_cancellable_rec_mutex_lock().
Behaviour is undefined if this is called on a @rec_mutex which returned
%FALSE in e_cancellable_rec_mutex_lock().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="rec_mutex" transfer-ownership="none">
            <doc xml:space="preserve">an #ECancellableRecMutex instance</doc>
            <type name="CancellableRecMutex" c:type="ECancellableRecMutex*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <class name="Client"
           c:symbol-prefix="client"
           c:type="EClient"
           version="3.2"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="EClient"
           glib:get-type="e_client_get_type"
           glib:type-struct="ClientClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <function name="error_create"
                c:identifier="e_client_error_create"
                version="3.2"
                deprecated="Just use the #GError API directly."
                deprecated-version="3.8">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #GError containing an E_CLIENT_ERROR of the given @code. If the @custom_msg is NULL, then the error message is the one returned from e_client_error_to_string() for the @code, otherwise the given message is used.  Returned pointer should be freed with g_error_free().</doc>
          <type name="GLib.Error" c:type="GError*"/>
        </return-value>
        <parameters>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve">an #EClientError code to create</doc>
            <type name="ClientError" c:type="EClientError"/>
          </parameter>
          <parameter name="custom_msg" transfer-ownership="none">
            <doc xml:space="preserve">custom message to use for the error; can be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="error_quark" c:identifier="e_client_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="error_to_string"
                c:identifier="e_client_error_to_string"
                version="3.2">
        <doc xml:space="preserve">FIXME: Document me.</doc>
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="code" transfer-ownership="none">
            <type name="ClientError" c:type="EClientError"/>
          </parameter>
        </parameters>
      </function>
      <function name="util_copy_object_slist"
                c:identifier="e_client_util_copy_object_slist"
                version="3.2"
                deprecated="Use e_util_copy_object_slist() instead."
                deprecated-version="3.8">
        <doc xml:space="preserve">Copies a #GSList of #GObject&lt;!-- --&gt;s to the end of @copy_to.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">New head of @copy_to. The returned pointer can be freed with e_client_util_free_object_slist().</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="GObject.Object"/>
          </type>
        </return-value>
        <parameters>
          <parameter name="copy_to" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">Where to copy; may be %NULL</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="GObject.Object"/>
            </type>
          </parameter>
          <parameter name="objects" transfer-ownership="none">
            <doc xml:space="preserve">#GSList of #GObject&lt;!-- --&gt;s to be copied</doc>
            <type name="GLib.SList" c:type="const GSList*">
              <type name="GObject.Object"/>
            </type>
          </parameter>
        </parameters>
      </function>
      <function name="util_copy_string_slist"
                c:identifier="e_client_util_copy_string_slist"
                version="3.2"
                deprecated="Use e_util_copy_string_slist() instead."
                deprecated-version="3.8">
        <doc xml:space="preserve">Copies the #GSList of strings to the end of @copy_to.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">New head of @copy_to. The returned pointer can be freed with e_client_util_free_string_slist().</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <parameter name="copy_to" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">Where to copy; may be %NULL</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="strings" transfer-ownership="none">
            <doc xml:space="preserve">#GSList of strings to be copied</doc>
            <type name="GLib.SList" c:type="const GSList*">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </function>
      <function name="util_free_object_slist"
                c:identifier="e_client_util_free_object_slist"
                version="3.2"
                deprecated="Use g_slist_free_full() instead."
                deprecated-version="3.8">
        <doc xml:space="preserve">Calls g_object_unref() on each member of @objects and then frees @objects
itself.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="objects" transfer-ownership="none">
            <doc xml:space="preserve">a #GSList of #GObject&lt;!-- --&gt;s</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="GObject.Object"/>
            </type>
          </parameter>
        </parameters>
      </function>
      <function name="util_free_string_slist"
                c:identifier="e_client_util_free_string_slist"
                version="3.2"
                deprecated="Use g_slist_free_full() instead."
                deprecated-version="3.8">
        <doc xml:space="preserve">Frees memory previously allocated by e_client_util_strv_to_slist().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="strings" transfer-ownership="none">
            <doc xml:space="preserve">a #GSList of strings (gchar *)</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </function>
      <function name="util_parse_comma_strings"
                c:identifier="e_client_util_parse_comma_strings"
                version="3.2">
        <doc xml:space="preserve">Parses comma-separated list of values into #GSList.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Newly allocated #GSList of newly allocated strings corresponding to values parsed from @strings. Free the returned pointer with e_client_util_free_string_slist().</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <parameter name="strings" transfer-ownership="none">
            <doc xml:space="preserve">string of comma-separated values</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="util_slist_to_strv"
                c:identifier="e_client_util_slist_to_strv"
                version="3.2"
                deprecated="Use e_util_slist_to_strv() instead."
                deprecated-version="3.8">
        <doc xml:space="preserve">Convert a list of strings into a %NULL-terminated array of strings.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Newly allocated %NULL-terminated array of strings. The returned pointer should be freed with g_strfreev().  Note: Paired function for this is e_client_util_strv_to_slist().</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="strings" transfer-ownership="none">
            <doc xml:space="preserve">a #GSList of strings (const gchar *)</doc>
            <type name="GLib.SList" c:type="const GSList*">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </function>
      <function name="util_strv_to_slist"
                c:identifier="e_client_util_strv_to_slist"
                version="3.2"
                deprecated="Use e_util_strv_to_slist() instead."
                deprecated-version="3.8">
        <doc xml:space="preserve">Convert a %NULL-terminated array of strings to a list of strings.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Newly allocated #GSList of newly allocated strings. The returned pointer should be freed with e_client_util_free_string_slist().  Note: Paired function for this is e_client_util_slist_to_strv().</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <parameter name="strv" transfer-ownership="none">
            <doc xml:space="preserve">a %NULL-terminated array of strings (const gchar *)</doc>
            <type name="utf8" c:type="const gchar* const*"/>
          </parameter>
        </parameters>
      </function>
      <function name="util_unwrap_dbus_error"
                c:identifier="e_client_util_unwrap_dbus_error"
                version="3.2"
                deprecated="This function is no longer used."
                deprecated-version="3.8">
        <doc xml:space="preserve">The function takes a @dbus_error and tries to find a match in @known_errors
for it, if it is a G_IO_ERROR, G_IO_ERROR_DBUS_ERROR. If it is anything else
then the @dbus_error is moved to @client_error.

The @fail_when_none_matched influences behaviour. If it's %TRUE, and none of
@known_errors matches, or this is not a G_IO_ERROR_DBUS_ERROR, then %FALSE
is returned and the @client_error is left without change. Otherwise, the
@fail_when_none_matched is %FALSE, the error is always processed and will
result in E_CLIENT_ERROR, E_CLIENT_ERROR_OTHER_ERROR if none of @known_error
matches.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether was @dbus_error processed into @client_error.  Note: The @dbus_error is automatically freed if returned %TRUE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="dbus_error" transfer-ownership="none">
            <doc xml:space="preserve">DBus #GError to unwrap</doc>
            <type name="GLib.Error" c:type="GError*"/>
          </parameter>
          <parameter name="client_error"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Resulting #GError; can be %NULL</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="known_errors" transfer-ownership="none">
            <doc xml:space="preserve">List of known errors against which try to match</doc>
            <type name="ClientErrorsList" c:type="const EClientErrorsList*"/>
          </parameter>
          <parameter name="known_errors_count" transfer-ownership="none">
            <doc xml:space="preserve">How many items are stored in @known_errors</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="known_errors_domain" transfer-ownership="none">
            <doc xml:space="preserve">Error domain for @known_errors</doc>
            <type name="GLib.Quark" c:type="GQuark"/>
          </parameter>
          <parameter name="fail_when_none_matched" transfer-ownership="none">
            <doc xml:space="preserve">Whether to fail when none of @known_errors matches</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="backend_died">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="backend_error">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="error_msg" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="backend_property_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="prop_name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="prop_value" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_backend_property"
                      invoker="get_backend_property"
                      version="3.2">
        <doc xml:space="preserve">Queries @client's backend for a property of name @prop_name.
The call is finished by e_client_get_backend_property_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="prop_name" transfer-ownership="none">
            <doc xml:space="preserve">property name, whose value to retrieve; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="3">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_backend_property_finish"
                      invoker="get_backend_property_finish"
                      version="3.2"
                      throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_get_backend_property().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="prop_value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Retrieved backend property value; cannot be %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_backend_property_sync"
                      invoker="get_backend_property_sync"
                      version="3.2"
                      throws="1">
        <doc xml:space="preserve">Queries @client's backend for a property of name @prop_name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="prop_name" transfer-ownership="none">
            <doc xml:space="preserve">property name, whose value to retrieve; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="prop_value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Retrieved backend property value; cannot be %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_dbus_proxy" introspectable="0">
        <return-value>
          <type name="Gio.DBusProxy" c:type="GDBusProxy*"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="open"
                      invoker="open"
                      version="3.2"
                      deprecated="Use e_book_client_connect() and e_book_client_connect_finish() or e_cal_client_connect() and e_cal_client_connect_finish() instead."
                      deprecated-version="3.8">
        <doc xml:space="preserve">Opens the @client, making it ready for queries and other operations.
The call is finished by e_client_open_finish() from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="only_if_exists" transfer-ownership="none">
            <doc xml:space="preserve">if %TRUE, fail if this book doesn't already exist, otherwise create it first</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="3">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="open_finish"
                      invoker="open_finish"
                      version="3.2"
                      deprecated="Use e_book_client_connect() and e_book_client_connect_finish() or e_cal_client_connect() and e_cal_client_connect_finish() instead."
                      deprecated-version="3.8"
                      throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_open().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="open_sync"
                      invoker="open_sync"
                      version="3.2"
                      deprecated="Use e_book_client_connect_sync() or e_cal_client_connect_sync() instead."
                      deprecated-version="3.8"
                      throws="1">
        <doc xml:space="preserve">Opens the @client, making it ready for queries and other operations.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="only_if_exists" transfer-ownership="none">
            <doc xml:space="preserve">if %TRUE, fail if this book doesn't already exist, otherwise create it first</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="opened">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="error" transfer-ownership="none">
            <type name="GLib.Error" c:type="const GError*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="refresh" invoker="refresh" version="3.2">
        <doc xml:space="preserve">Initiates refresh on the @client. Finishing the method doesn't mean
that the refresh is done, backend only notifies whether it started
refreshing or not. Use e_client_check_refresh_supported() to check
whether the backend supports this method.
The call is finished by e_client_refresh_finish() from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="2">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="refresh_finish"
                      invoker="refresh_finish"
                      version="3.2"
                      throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_refresh().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="refresh_sync"
                      invoker="refresh_sync"
                      version="3.2"
                      throws="1">
        <doc xml:space="preserve">Initiates refresh on the @client. Finishing the method doesn't mean
that the refresh is done, backend only notifies whether it started
refreshing or not. Use e_client_check_refresh_supported() to check
whether the backend supports this method.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove"
                      invoker="remove"
                      version="3.2"
                      deprecated="Use e_source_remove() instead."
                      deprecated-version="3.6">
        <doc xml:space="preserve">Removes the backing data for this #EClient. For example, with the file
backend this deletes the database file. You cannot get it back!
The call is finished by e_client_remove_finish() from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="2">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_finish"
                      invoker="remove_finish"
                      version="3.2"
                      deprecated="Use e_source_remove_finish() instead."
                      deprecated-version="3.6"
                      throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_remove().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_sync"
                      invoker="remove_sync"
                      version="3.2"
                      deprecated="Use e_source_remove_sync() instead."
                      deprecated-version="3.6"
                      throws="1">
        <doc xml:space="preserve">Removes the backing data for this #EClient. For example, with the file
backend this deletes the database file. You cannot get it back!</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="retrieve_capabilities"
                      invoker="retrieve_capabilities"
                      version="3.2"
                      deprecated="Use e_client_get_capabilities() instead."
                      deprecated-version="3.8">
        <doc xml:space="preserve">Initiates retrieval of capabilities on the @client. This is usually
required only once, after the @client is opened. The returned value
is cached and any subsequent call of e_client_get_capabilities() and
e_client_check_capability() is using the cached value.
The call is finished by e_client_retrieve_capabilities_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="2">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="retrieve_capabilities_finish"
                      invoker="retrieve_capabilities_finish"
                      version="3.2"
                      deprecated="Use e_client_get_capabilities() instead."
                      deprecated-version="3.8"
                      throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_retrieve_capabilities().
Returned value of @capabilities should be freed with g_free(),
when no longer needed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="capabilities"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Comma-separated list of capabilities of the @client</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="retrieve_capabilities_sync"
                      invoker="retrieve_capabilities_sync"
                      version="3.2"
                      deprecated="Use e_client_get_capabilities() instead."
                      deprecated-version="3.8"
                      throws="1">
        <doc xml:space="preserve">Initiates retrieval of capabilities on the @client. This is usually
required only once, after the @client is opened. The returned value
is cached and any subsequent call of e_client_get_capabilities() and
e_client_check_capability() is using the cached value. Returned value
of @capabilities should be freed with g_free(), when no longer needed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="capabilities"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Comma-separated list of capabilities of the @client</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_backend_property"
                      invoker="set_backend_property"
                      version="3.2"
                      deprecated="Clients cannot set backend properties.  Any attempt will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error."
                      deprecated-version="3.8">
        <doc xml:space="preserve">Sets @client's backend property of name @prop_name
to value @prop_value. The call is finished
by e_client_set_backend_property_finish() from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="prop_name" transfer-ownership="none">
            <doc xml:space="preserve">property name, whose value to change; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="prop_value" transfer-ownership="none">
            <doc xml:space="preserve">property value, to set; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="4">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_backend_property_finish"
                      invoker="set_backend_property_finish"
                      version="3.2"
                      deprecated="Clients cannot set backend properties.  Any attempt will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error."
                      deprecated-version="3.8"
                      throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_set_backend_property().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="set_backend_property_sync"
                      invoker="set_backend_property_sync"
                      version="3.2"
                      deprecated="Clients cannot set backend properties.  Any attempt will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error."
                      deprecated-version="3.8"
                      throws="1">
        <doc xml:space="preserve">Sets @client's backend property of name @prop_name
to value @prop_value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="prop_name" transfer-ownership="none">
            <doc xml:space="preserve">property name, whose value to change; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="prop_value" transfer-ownership="none">
            <doc xml:space="preserve">property value, to set; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="unwrap_dbus_error"
                      invoker="unwrap_dbus_error"
                      version="3.2"
                      deprecated="Use g_dbus_error_strip_remote_error() instead."
                      deprecated-version="3.8"
                      throws="1">
        <doc xml:space="preserve">Unwraps D-Bus error to local error. @dbus_error is automatically freed.
@dbus_erorr and @out_error can point to the same variable.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="dbus_error" transfer-ownership="none">
            <doc xml:space="preserve">a #GError returned bu D-Bus</doc>
            <type name="GLib.Error" c:type="GError*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="cancel_all"
              c:identifier="e_client_cancel_all"
              version="3.2"
              deprecated="The function no longer does anything."
              deprecated-version="3.8">
        <doc xml:space="preserve">Cancels all pending operations started on @client.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="check_capability"
              c:identifier="e_client_check_capability"
              version="3.2">
        <doc xml:space="preserve">Check if backend supports particular capability.
To get all capabilities use e_client_get_capabilities().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GSList of const strings of capabilities</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="capability" transfer-ownership="none">
            <doc xml:space="preserve">a capability</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="check_refresh_supported"
              c:identifier="e_client_check_refresh_supported"
              version="3.2">
        <doc xml:space="preserve">Checks whether a client supports explicit refreshing
(see e_client_refresh()).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">TRUE if the client supports refreshing, FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">A client.</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_backend_property"
              c:identifier="e_client_get_backend_property"
              version="3.2">
        <doc xml:space="preserve">Queries @client's backend for a property of name @prop_name.
The call is finished by e_client_get_backend_property_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="prop_name" transfer-ownership="none">
            <doc xml:space="preserve">property name, whose value to retrieve; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_backend_property_finish"
              c:identifier="e_client_get_backend_property_finish"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_get_backend_property().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="prop_value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Retrieved backend property value; cannot be %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_backend_property_sync"
              c:identifier="e_client_get_backend_property_sync"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Queries @client's backend for a property of name @prop_name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="prop_name" transfer-ownership="none">
            <doc xml:space="preserve">property name, whose value to retrieve; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="prop_value"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Retrieved backend property value; cannot be %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_capabilities"
              c:identifier="e_client_get_capabilities"
              version="3.2">
        <doc xml:space="preserve">Get list of strings with capabilities advertised by a backend.
This list, together with inner strings, is owned by the @client.
To check for individual capabilities use e_client_check_capability().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">#GSList of const strings of capabilities</doc>
          <type name="GLib.SList" c:type="const GSList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_source"
              c:identifier="e_client_get_source"
              version="3.2">
        <doc xml:space="preserve">Get the #ESource that this client has assigned.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The source.</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_online" c:identifier="e_client_is_online" version="3.2">
        <doc xml:space="preserve">Check if this @client is connected.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if this @client is connected, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_opened"
              c:identifier="e_client_is_opened"
              version="3.2."
              deprecated="Clients don&apos;t need to care if they&apos;re fully opened anymore.  This function always returns %TRUE."
              deprecated-version="3.8">
        <doc xml:space="preserve">Check if this @client is fully opened. This includes
everything from e_client_open() call up to the authentication,
if required by a backend. Client cannot do any other operation
during the opening phase except of authenticate or cancel it.
Every other operation results in an %E_CLIENT_ERROR_BUSY error.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">always %TRUE</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_readonly"
              c:identifier="e_client_is_readonly"
              version="3.2">
        <doc xml:space="preserve">Check if this @client is read-only.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if this @client is read-only, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open"
              c:identifier="e_client_open"
              version="3.2"
              deprecated="Use e_book_client_connect() and e_book_client_connect_finish() or e_cal_client_connect() and e_cal_client_connect_finish() instead."
              deprecated-version="3.8">
        <doc xml:space="preserve">Opens the @client, making it ready for queries and other operations.
The call is finished by e_client_open_finish() from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="only_if_exists" transfer-ownership="none">
            <doc xml:space="preserve">if %TRUE, fail if this book doesn't already exist, otherwise create it first</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_finish"
              c:identifier="e_client_open_finish"
              version="3.2"
              deprecated="Use e_book_client_connect() and e_book_client_connect_finish() or e_cal_client_connect() and e_cal_client_connect_finish() instead."
              deprecated-version="3.8"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_open().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="open_sync"
              c:identifier="e_client_open_sync"
              version="3.2"
              deprecated="Use e_book_client_connect_sync() or e_cal_client_connect_sync() instead."
              deprecated-version="3.8"
              throws="1">
        <doc xml:space="preserve">Opens the @client, making it ready for queries and other operations.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="only_if_exists" transfer-ownership="none">
            <doc xml:space="preserve">if %TRUE, fail if this book doesn't already exist, otherwise create it first</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_main_context"
              c:identifier="e_client_ref_main_context"
              version="3.8">
        <doc xml:space="preserve">Returns the #GMainContext on which event sources for @client are to
be attached.

The returned #GMainContext is referenced for thread-safety and must be
unreferenced with g_main_context_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #GMainContext</doc>
          <type name="GLib.MainContext" c:type="GMainContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="refresh" c:identifier="e_client_refresh" version="3.2">
        <doc xml:space="preserve">Initiates refresh on the @client. Finishing the method doesn't mean
that the refresh is done, backend only notifies whether it started
refreshing or not. Use e_client_check_refresh_supported() to check
whether the backend supports this method.
The call is finished by e_client_refresh_finish() from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="refresh_finish"
              c:identifier="e_client_refresh_finish"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_refresh().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="refresh_sync"
              c:identifier="e_client_refresh_sync"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Initiates refresh on the @client. Finishing the method doesn't mean
that the refresh is done, backend only notifies whether it started
refreshing or not. Use e_client_check_refresh_supported() to check
whether the backend supports this method.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove"
              c:identifier="e_client_remove"
              version="3.2"
              deprecated="Use e_source_remove() instead."
              deprecated-version="3.6">
        <doc xml:space="preserve">Removes the backing data for this #EClient. For example, with the file
backend this deletes the database file. You cannot get it back!
The call is finished by e_client_remove_finish() from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_finish"
              c:identifier="e_client_remove_finish"
              version="3.2"
              deprecated="Use e_source_remove_finish() instead."
              deprecated-version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_remove().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_sync"
              c:identifier="e_client_remove_sync"
              version="3.2"
              deprecated="Use e_source_remove_sync() instead."
              deprecated-version="3.6"
              throws="1">
        <doc xml:space="preserve">Removes the backing data for this #EClient. For example, with the file
backend this deletes the database file. You cannot get it back!</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="retrieve_capabilities"
              c:identifier="e_client_retrieve_capabilities"
              version="3.2"
              deprecated="Use e_client_get_capabilities() instead."
              deprecated-version="3.8">
        <doc xml:space="preserve">Initiates retrieval of capabilities on the @client. This is usually
required only once, after the @client is opened. The returned value
is cached and any subsequent call of e_client_get_capabilities() and
e_client_check_capability() is using the cached value.
The call is finished by e_client_retrieve_capabilities_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="retrieve_capabilities_finish"
              c:identifier="e_client_retrieve_capabilities_finish"
              version="3.2"
              deprecated="Use e_client_get_capabilities() instead."
              deprecated-version="3.8"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_retrieve_capabilities().
Returned value of @capabilities should be freed with g_free(),
when no longer needed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="capabilities"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Comma-separated list of capabilities of the @client</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="retrieve_capabilities_sync"
              c:identifier="e_client_retrieve_capabilities_sync"
              version="3.2"
              deprecated="Use e_client_get_capabilities() instead."
              deprecated-version="3.8"
              throws="1">
        <doc xml:space="preserve">Initiates retrieval of capabilities on the @client. This is usually
required only once, after the @client is opened. The returned value
is cached and any subsequent call of e_client_get_capabilities() and
e_client_check_capability() is using the cached value. Returned value
of @capabilities should be freed with g_free(), when no longer needed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="capabilities"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">Comma-separated list of capabilities of the @client</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_backend_property"
              c:identifier="e_client_set_backend_property"
              version="3.2"
              deprecated="Clients cannot set backend properties.  Any attempt will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error."
              deprecated-version="3.8">
        <doc xml:space="preserve">Sets @client's backend property of name @prop_name
to value @prop_value. The call is finished
by e_client_set_backend_property_finish() from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="prop_name" transfer-ownership="none">
            <doc xml:space="preserve">property name, whose value to change; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="prop_value" transfer-ownership="none">
            <doc xml:space="preserve">property value, to set; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_backend_property_finish"
              c:identifier="e_client_set_backend_property_finish"
              version="3.2"
              deprecated="Clients cannot set backend properties.  Any attempt will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error."
              deprecated-version="3.8"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_set_backend_property().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_backend_property_sync"
              c:identifier="e_client_set_backend_property_sync"
              version="3.2"
              deprecated="Clients cannot set backend properties.  Any attempt will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error."
              deprecated-version="3.8"
              throws="1">
        <doc xml:space="preserve">Sets @client's backend property of name @prop_name
to value @prop_value.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="prop_name" transfer-ownership="none">
            <doc xml:space="preserve">property name, whose value to change; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="prop_value" transfer-ownership="none">
            <doc xml:space="preserve">property value, to set; cannot be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unwrap_dbus_error"
              c:identifier="e_client_unwrap_dbus_error"
              version="3.2"
              deprecated="Use g_dbus_error_strip_remote_error() instead."
              deprecated-version="3.8"
              throws="1">
        <doc xml:space="preserve">Unwraps D-Bus error to local error. @dbus_error is automatically freed.
@dbus_erorr and @out_error can point to the same variable.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="dbus_error" transfer-ownership="none">
            <doc xml:space="preserve">a #GError returned bu D-Bus</doc>
            <type name="GLib.Error" c:type="GError*"/>
          </parameter>
        </parameters>
      </method>
      <property name="capabilities" transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="main-context" transfer-ownership="none">
        <type name="GLib.MainContext"/>
      </property>
      <property name="online" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="opened" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="readonly" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="source"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Source"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="ClientPrivate" c:type="EClientPrivate*"/>
      </field>
      <glib:signal name="backend-died" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="backend-error" when="first">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="backend-property-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="opened"
                   when="last"
                   deprecated="This signal is no longer emitted."
                   deprecated-version="3.8">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="GLib.Error"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="ClientClass"
            c:type="EClientClass"
            glib:is-gtype-struct-for="Client">
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_dbus_proxy" introspectable="0">
        <callback name="get_dbus_proxy" introspectable="0">
          <return-value>
            <type name="Gio.DBusProxy" c:type="GDBusProxy*"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="unwrap_dbus_error">
        <callback name="unwrap_dbus_error" throws="1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="dbus_error" transfer-ownership="none">
              <doc xml:space="preserve">a #GError returned bu D-Bus</doc>
              <type name="GLib.Error" c:type="GError*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="retrieve_capabilities">
        <callback name="retrieve_capabilities">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="3">
              <doc xml:space="preserve">callback to call when a result is ready</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="3">
              <doc xml:space="preserve">user data for the @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="retrieve_capabilities_finish">
        <callback name="retrieve_capabilities_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
            <parameter name="capabilities"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">Comma-separated list of capabilities of the @client</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="retrieve_capabilities_sync">
        <callback name="retrieve_capabilities_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="capabilities"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">Comma-separated list of capabilities of the @client</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_backend_property">
        <callback name="get_backend_property">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="prop_name" transfer-ownership="none">
              <doc xml:space="preserve">property name, whose value to retrieve; cannot be %NULL</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <doc xml:space="preserve">callback to call when a result is ready</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="4">
              <doc xml:space="preserve">user data for the @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_backend_property_finish">
        <callback name="get_backend_property_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
            <parameter name="prop_value"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">Retrieved backend property value; cannot be %NULL</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_backend_property_sync">
        <callback name="get_backend_property_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="prop_name" transfer-ownership="none">
              <doc xml:space="preserve">property name, whose value to retrieve; cannot be %NULL</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="prop_value"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">Retrieved backend property value; cannot be %NULL</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_backend_property">
        <callback name="set_backend_property">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="prop_name" transfer-ownership="none">
              <doc xml:space="preserve">property name, whose value to change; cannot be %NULL</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="prop_value" transfer-ownership="none">
              <doc xml:space="preserve">property value, to set; cannot be %NULL</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="5">
              <doc xml:space="preserve">callback to call when a result is ready</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="5">
              <doc xml:space="preserve">user data for the @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_backend_property_finish">
        <callback name="set_backend_property_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="set_backend_property_sync">
        <callback name="set_backend_property_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="prop_name" transfer-ownership="none">
              <doc xml:space="preserve">property name, whose value to change; cannot be %NULL</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="prop_value" transfer-ownership="none">
              <doc xml:space="preserve">property value, to set; cannot be %NULL</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="open">
        <callback name="open">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="only_if_exists" transfer-ownership="none">
              <doc xml:space="preserve">if %TRUE, fail if this book doesn't already exist, otherwise create it first</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <doc xml:space="preserve">callback to call when a result is ready</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="4">
              <doc xml:space="preserve">user data for the @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="open_finish">
        <callback name="open_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="open_sync">
        <callback name="open_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="only_if_exists" transfer-ownership="none">
              <doc xml:space="preserve">if %TRUE, fail if this book doesn't already exist, otherwise create it first</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove">
        <callback name="remove">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="3">
              <doc xml:space="preserve">callback to call when a result is ready</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="3">
              <doc xml:space="preserve">user data for the @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_finish">
        <callback name="remove_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_sync">
        <callback name="remove_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="refresh">
        <callback name="refresh">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="3">
              <doc xml:space="preserve">callback to call when a result is ready</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="3">
              <doc xml:space="preserve">user data for the @callback</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="refresh_finish">
        <callback name="refresh_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="refresh_sync">
        <callback name="refresh_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="opened">
        <callback name="opened">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="error" transfer-ownership="none">
              <type name="GLib.Error" c:type="const GError*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="backend_error">
        <callback name="backend_error">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="error_msg" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="backend_died">
        <callback name="backend_died">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="backend_property_changed">
        <callback name="backend_property_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="prop_name" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="prop_value" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <enumeration name="ClientError" version="3.2" c:type="EClientError">
      <doc xml:space="preserve">FIXME Document each code.

Error codes for #EClient operations.</doc>
      <member name="invalid_arg"
              value="0"
              c:identifier="E_CLIENT_ERROR_INVALID_ARG">
      </member>
      <member name="busy" value="1" c:identifier="E_CLIENT_ERROR_BUSY">
      </member>
      <member name="source_not_loaded"
              value="2"
              c:identifier="E_CLIENT_ERROR_SOURCE_NOT_LOADED">
      </member>
      <member name="source_already_loaded"
              value="3"
              c:identifier="E_CLIENT_ERROR_SOURCE_ALREADY_LOADED">
      </member>
      <member name="authentication_failed"
              value="4"
              c:identifier="E_CLIENT_ERROR_AUTHENTICATION_FAILED">
      </member>
      <member name="authentication_required"
              value="5"
              c:identifier="E_CLIENT_ERROR_AUTHENTICATION_REQUIRED">
      </member>
      <member name="repository_offline"
              value="6"
              c:identifier="E_CLIENT_ERROR_REPOSITORY_OFFLINE">
      </member>
      <member name="offline_unavailable"
              value="7"
              c:identifier="E_CLIENT_ERROR_OFFLINE_UNAVAILABLE">
      </member>
      <member name="permission_denied"
              value="8"
              c:identifier="E_CLIENT_ERROR_PERMISSION_DENIED">
      </member>
      <member name="cancelled"
              value="9"
              c:identifier="E_CLIENT_ERROR_CANCELLED">
      </member>
      <member name="could_not_cancel"
              value="10"
              c:identifier="E_CLIENT_ERROR_COULD_NOT_CANCEL">
      </member>
      <member name="not_supported"
              value="11"
              c:identifier="E_CLIENT_ERROR_NOT_SUPPORTED">
      </member>
      <member name="tls_not_available"
              value="12"
              c:identifier="E_CLIENT_ERROR_TLS_NOT_AVAILABLE">
      </member>
      <member name="unsupported_authentication_method"
              value="13"
              c:identifier="E_CLIENT_ERROR_UNSUPPORTED_AUTHENTICATION_METHOD">
      </member>
      <member name="search_size_limit_exceeded"
              value="14"
              c:identifier="E_CLIENT_ERROR_SEARCH_SIZE_LIMIT_EXCEEDED">
      </member>
      <member name="search_time_limit_exceeded"
              value="15"
              c:identifier="E_CLIENT_ERROR_SEARCH_TIME_LIMIT_EXCEEDED">
      </member>
      <member name="invalid_query"
              value="16"
              c:identifier="E_CLIENT_ERROR_INVALID_QUERY">
      </member>
      <member name="query_refused"
              value="17"
              c:identifier="E_CLIENT_ERROR_QUERY_REFUSED">
      </member>
      <member name="dbus_error"
              value="18"
              c:identifier="E_CLIENT_ERROR_DBUS_ERROR">
      </member>
      <member name="other_error"
              value="19"
              c:identifier="E_CLIENT_ERROR_OTHER_ERROR">
      </member>
      <member name="not_opened"
              value="20"
              c:identifier="E_CLIENT_ERROR_NOT_OPENED">
      </member>
      <member name="out_of_sync"
              value="21"
              c:identifier="E_CLIENT_ERROR_OUT_OF_SYNC">
      </member>
    </enumeration>
    <record name="ClientErrorsList"
            c:type="EClientErrorsList"
            version="3.2"
            deprecated="This structure is no longer used."
            deprecated-version="3.8">
      <field name="name" writable="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="err_code" writable="1">
        <type name="gint" c:type="gint"/>
      </field>
    </record>
    <record name="ClientPrivate" c:type="EClientPrivate" disguised="1">
    </record>
    <constant name="DEBUG_LOG_DOMAIN_CAL_QUERIES"
              value="CalQueries"
              c:type="E_DEBUG_LOG_DOMAIN_CAL_QUERIES"
              version="2.32">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DEBUG_LOG_DOMAIN_GLOG"
              value="GLog"
              c:type="E_DEBUG_LOG_DOMAIN_GLOG"
              version="2.32">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="DEBUG_LOG_DOMAIN_USER"
              value="USER"
              c:type="E_DEBUG_LOG_DOMAIN_USER"
              version="2.32">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <record name="Flag" c:type="EFlag" disguised="1" version="1.12">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="clear" c:identifier="e_flag_clear" version="1.12">
        <doc xml:space="preserve">Unsets @flag.  Subsequent calls to e_flag_wait() or e_flag_wait_until()
will block until @flag is set.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve">an #EFlag</doc>
            <type name="Flag" c:type="EFlag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="e_flag_free" version="1.12">
        <doc xml:space="preserve">Destroys @flag.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve">an #EFlag</doc>
            <type name="Flag" c:type="EFlag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_set" c:identifier="e_flag_is_set" version="1.12">
        <doc xml:space="preserve">Returns the state of @flag.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @flag is set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve">an #EFlag</doc>
            <type name="Flag" c:type="EFlag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="e_flag_set" version="1.12">
        <doc xml:space="preserve">Sets @flag.  All threads waiting on @flag are woken up.  Threads that
call e_flag_wait() or e_flag_wait_until() once @flag is set will not
block at all.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve">an #EFlag</doc>
            <type name="Flag" c:type="EFlag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="timed_wait"
              c:identifier="e_flag_timed_wait"
              version="1.12"
              deprecated="Use e_flag_wait_until() instead."
              deprecated-version="3.8">
        <doc xml:space="preserve">Blocks until @flag is set, or until the time specified by @abs_time.
If @flag is already set, the function returns immediately.  The return
value indicates the state of @flag after waiting.

If @abs_time is %NULL, e_flag_timed_wait() acts like e_flag_wait().

To easily calculate @abs_time, a combination of g_get_current_time() and
g_time_val_add() can be used.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @flag is now set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve">an #EFlag</doc>
            <type name="Flag" c:type="EFlag*"/>
          </instance-parameter>
          <parameter name="abs_time" transfer-ownership="none">
            <doc xml:space="preserve">a #GTimeVal, determining the final time</doc>
            <type name="GLib.TimeVal" c:type="GTimeVal*"/>
          </parameter>
        </parameters>
      </method>
      <method name="wait" c:identifier="e_flag_wait" version="1.12">
        <doc xml:space="preserve">Blocks until @flag is set.  If @flag is already set, the function returns
immediately.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve">an #EFlag</doc>
            <type name="Flag" c:type="EFlag*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="wait_until" c:identifier="e_flag_wait_until" version="3.8">
        <doc xml:space="preserve">Blocks until @flag is set, or until the time specified by @end_time.
If @flag is already set, the function returns immediately.  The return
value indicates the state of @flag after waiting.

To easily calculate @end_time, a combination of g_get_monotonic_time() and
G_TIME_SPAN_SECOND macro.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @flag is now set</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve">an #EFlag</doc>
            <type name="Flag" c:type="EFlag*"/>
          </instance-parameter>
          <parameter name="end_time" transfer-ownership="none">
            <doc xml:space="preserve">the monotonic time to wait until</doc>
            <type name="gint64" c:type="gint64"/>
          </parameter>
        </parameters>
      </method>
      <function name="new"
                c:identifier="e_flag_new"
                version="1.12"
                introspectable="0">
        <doc xml:space="preserve">Creates a new #EFlag object.  It is initially unset.</doc>
        <return-value>
          <doc xml:space="preserve">a new #EFlag</doc>
          <type name="Flag" c:type="EFlag*"/>
        </return-value>
      </function>
    </record>
    <enumeration name="MdnResponsePolicy"
                 version="3.6"
                 glib:type-name="EMdnResponsePolicy"
                 glib:get-type="e_mdn_response_policy_get_type"
                 c:type="EMdnResponsePolicy">
      <doc xml:space="preserve">Policy for responding to Message Disposition Notification requests
(i.e. a Disposition-Notification-To header) when receiving messages.
See RFC 2298 for more information about MDN requests.</doc>
      <member name="never"
              value="0"
              c:identifier="E_MDN_RESPONSE_POLICY_NEVER"
              glib:nick="never">
        <doc xml:space="preserve">Never respond to an MDN request.</doc>
      </member>
      <member name="always"
              value="1"
              c:identifier="E_MDN_RESPONSE_POLICY_ALWAYS"
              glib:nick="always">
        <doc xml:space="preserve">Always respond to an MDN request.</doc>
      </member>
      <member name="ask"
              value="2"
              c:identifier="E_MDN_RESPONSE_POLICY_ASK"
              glib:nick="ask">
        <doc xml:space="preserve">Ask the user before responding to an MDN request.</doc>
      </member>
    </enumeration>
    <record name="MemChunk" c:type="EMemChunk" disguised="1">
    </record>
    <record name="NamedParameters"
            c:type="ENamedParameters"
            version="3.8"
            glib:type-name="ENamedParameters"
            glib:get-type="e_named_parameters_get_type"
            c:symbol-prefix="named_parameters">
      <constructor name="new"
                   c:identifier="e_named_parameters_new"
                   version="3.8">
        <doc xml:space="preserve">Creates a new instance of an #ENamedParameters. This should be freed
with e_named_parameters_free(), when no longer needed. Names are
compared case insensitively.

The structure is not thread safe, if the caller requires thread safety,
then it should provide it on its own.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">newly allocated #ENamedParameters</doc>
          <type name="NamedParameters" c:type="ENamedParameters*"/>
        </return-value>
      </constructor>
      <constructor name="new_strv"
                   c:identifier="e_named_parameters_new_strv"
                   version="3.8">
        <doc xml:space="preserve">Creates a new instance of an #ENamedParameters, with initial content
being taken from @strv. This should be freed with e_named_parameters_free(),
when no longer needed. Names are compared case insensitively.

The structure is not thread safe, if the caller requires thread safety,
then it should provide it on its own.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">newly allocated #ENamedParameters</doc>
          <type name="NamedParameters" c:type="ENamedParameters*"/>
        </return-value>
        <parameters>
          <parameter name="strv" transfer-ownership="none">
            <doc xml:space="preserve">NULL-terminated string array to be used as a content of a newly created #ENamedParameters</doc>
            <type name="utf8" c:type="const gchar* const*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="assign"
              c:identifier="e_named_parameters_assign"
              version="3.8">
        <doc xml:space="preserve">Makes content of the @parameters the same as @from.
Functions clears content of @parameters if @from is %NULL.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters to assign values to</doc>
            <type name="NamedParameters" c:type="ENamedParameters*"/>
          </instance-parameter>
          <parameter name="from" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">an #ENamedParameters to get values from, or %NULL</doc>
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clear"
              c:identifier="e_named_parameters_clear"
              version="3.8">
        <doc xml:space="preserve">Removes all stored parameters from @parameters.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters</doc>
            <type name="NamedParameters" c:type="ENamedParameters*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free" c:identifier="e_named_parameters_free" version="3.8">
        <doc xml:space="preserve">Frees an instance of #ENamedParameters, previously allocated
with e_named_parameters_new(). Function does nothing, if
@parameters is %NULL.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters</doc>
            <type name="NamedParameters" c:type="ENamedParameters*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get" c:identifier="e_named_parameters_get" version="3.8">
        <doc xml:space="preserve">Returns current value of a parameter with name @name. If not such
exists, then returns %NULL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">value of a parameter named @name, or %NULL.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters</doc>
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of a parameter to get</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set" c:identifier="e_named_parameters_set" version="3.8">
        <doc xml:space="preserve">Sets parameter named @name to value @value. If @value is NULL,
then the parameter is removed. @value can be an empty string.

Note: There is a restriction on parameter names, it cannot be empty or
contain a colon character (':'), otherwise it can be pretty much anything.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters</doc>
            <type name="NamedParameters" c:type="ENamedParameters*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of a parameter to set</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">value to set, or %NULL to unset</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="test" c:identifier="e_named_parameters_test" version="3.8">
        <doc xml:space="preserve">Compares current value of parameter named @name with given @value
and returns whether they are equal, either case sensitively or
insensitively, based on @case_sensitively argument. Function
returns %FALSE, if no such parameter exists.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether parameter of given name has stored value of given value.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters</doc>
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">name of a parameter to test</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">value to test</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="case_sensitively" transfer-ownership="none">
            <doc xml:space="preserve">whether to compare case sensitively</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_strv"
              c:identifier="e_named_parameters_to_strv"
              version="3.8">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Contents of @parameters as a null-terminated strv</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters</doc>
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </instance-parameter>
        </parameters>
      </method>
    </record>
    <record name="OperationPool"
            c:type="EOperationPool"
            disguised="1"
            version="3.2">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="free" c:identifier="e_operation_pool_free" version="3.2">
        <doc xml:space="preserve">FIXME: Document me.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="pool" transfer-ownership="none">
            <type name="OperationPool" c:type="EOperationPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="push" c:identifier="e_operation_pool_push" version="3.2">
        <doc xml:space="preserve">Pushes an operation to be processed.  @opdata is passed to the function
provided in e_operation_pool_new().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="pool" transfer-ownership="none">
            <doc xml:space="preserve">an #EOperationPool</doc>
            <type name="OperationPool" c:type="EOperationPool*"/>
          </instance-parameter>
          <parameter name="opdata" transfer-ownership="none">
            <doc xml:space="preserve">user data for the operation</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="release_opid"
              c:identifier="e_operation_pool_release_opid"
              version="3.2">
        <doc xml:space="preserve">Releases @opid previously reserved by e_operation_pool_reserve_opid().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="pool" transfer-ownership="none">
            <doc xml:space="preserve">an #EOperationPool</doc>
            <type name="OperationPool" c:type="EOperationPool*"/>
          </instance-parameter>
          <parameter name="opid" transfer-ownership="none">
            <doc xml:space="preserve">an operation ID</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
        </parameters>
      </method>
      <method name="reserve_opid"
              c:identifier="e_operation_pool_reserve_opid"
              version="3.2">
        <doc xml:space="preserve">Reserves new operation ID, which is returned. This operation ID may
be released by e_operation_pool_release_opid() when the operation
is finished.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a new operation ID</doc>
          <type name="guint32" c:type="guint32"/>
        </return-value>
        <parameters>
          <instance-parameter name="pool" transfer-ownership="none">
            <doc xml:space="preserve">an #EOperationPool</doc>
            <type name="OperationPool" c:type="EOperationPool*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="new"
                c:identifier="e_operation_pool_new"
                version="3.2"
                introspectable="0">
        <doc xml:space="preserve">FIXME: Document me.</doc>
        <return-value>
          <type name="OperationPool" c:type="EOperationPool*"/>
        </return-value>
        <parameters>
          <parameter name="max_threads" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="thread_func" transfer-ownership="none" closure="2">
            <type name="GLib.Func" c:type="GFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <class name="Proxy"
           c:symbol-prefix="proxy"
           c:type="EProxy"
           version="2.24"
           parent="GObject.Object"
           glib:type-name="EProxy"
           glib:get-type="e_proxy_get_type"
           glib:type-struct="ProxyClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
function below.</doc>
      <constructor name="new" c:identifier="e_proxy_new" version="2.24">
        <return-value transfer-ownership="full">
          <type name="Proxy" c:type="EProxy*"/>
        </return-value>
      </constructor>
      <virtual-method name="changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="EProxy*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="peek_uri_for"
              c:identifier="e_proxy_peek_uri_for"
              version="2.26"
              introspectable="0">
        <return-value>
          <type c:type="SoupURI*"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="EProxy*"/>
          </instance-parameter>
          <parameter name="uri" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="require_proxy_for_uri"
              c:identifier="e_proxy_require_proxy_for_uri"
              version="2.24">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="EProxy*"/>
          </instance-parameter>
          <parameter name="uri" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="setup_proxy"
              c:identifier="e_proxy_setup_proxy"
              version="2.24">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="proxy" transfer-ownership="none">
            <type name="Proxy" c:type="EProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="ProxyPrivate" c:type="EProxyPrivate*"/>
      </field>
      <glib:signal name="changed" when="first">
        <doc xml:space="preserve">Emitted when proxy settings changes.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="ProxyClass"
            c:type="EProxyClass"
            glib:is-gtype-struct-for="Proxy">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="changed">
        <callback name="changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="proxy" transfer-ownership="none">
              <type name="Proxy" c:type="EProxy*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="ProxyPrivate" c:type="EProxyPrivate" disguised="1">
    </record>
    <constant name="SOURCE_EXTENSION_ADDRESS_BOOK"
              value="Address Book"
              c:type="E_SOURCE_EXTENSION_ADDRESS_BOOK"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceAddressBook.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_ALARMS"
              value="Alarms"
              c:type="E_SOURCE_EXTENSION_ALARMS"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceAlarms.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_AUTHENTICATION"
              value="Authentication"
              c:type="E_SOURCE_EXTENSION_AUTHENTICATION"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceAuthentication.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_AUTOCOMPLETE"
              value="Autocomplete"
              c:type="E_SOURCE_EXTENSION_AUTOCOMPLETE"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceAutocomplete.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_CALENDAR"
              value="Calendar"
              c:type="E_SOURCE_EXTENSION_CALENDAR"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceCalendar.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_COLLECTION"
              value="Collection"
              c:type="E_SOURCE_EXTENSION_COLLECTION"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceCollection.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_GOA"
              value="GNOME Online Accounts"
              c:type="E_SOURCE_EXTENSION_GOA"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceGoa.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_MAIL_ACCOUNT"
              value="Mail Account"
              c:type="E_SOURCE_EXTENSION_MAIL_ACCOUNT"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceMailAccount.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_MAIL_COMPOSITION"
              value="Mail Composition"
              c:type="E_SOURCE_EXTENSION_MAIL_COMPOSITION"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceMailComposition.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_MAIL_IDENTITY"
              value="Mail Identity"
              c:type="E_SOURCE_EXTENSION_MAIL_IDENTITY"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceMailIdentity.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_MAIL_SIGNATURE"
              value="Mail Signature"
              c:type="E_SOURCE_EXTENSION_MAIL_SIGNATURE"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceMailSignature.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_MAIL_SUBMISSION"
              value="Mail Submission"
              c:type="E_SOURCE_EXTENSION_MAIL_SUBMISSION"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceMailSubmission.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_MAIL_TRANSPORT"
              value="Mail Transport"
              c:type="E_SOURCE_EXTENSION_MAIL_TRANSPORT"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceMailTransport.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_MDN"
              value="Message Disposition Notifications"
              c:type="E_SOURCE_EXTENSION_MDN"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceMDN.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_MEMO_LIST"
              value="Memo List"
              c:type="E_SOURCE_EXTENSION_MEMO_LIST"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceMemoList.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_OFFLINE"
              value="Offline"
              c:type="E_SOURCE_EXTENSION_OFFLINE"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceOffline.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_OPENPGP"
              value="Pretty Good Privacy (OpenPGP)"
              c:type="E_SOURCE_EXTENSION_OPENPGP"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceOpenPGP.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_REFRESH"
              value="Refresh"
              c:type="E_SOURCE_EXTENSION_REFRESH"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceRefresh.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_RESOURCE"
              value="Resource"
              c:type="E_SOURCE_EXTENSION_RESOURCE"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceResource.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_REVISION_GUARDS"
              value="Revision Guards"
              c:type="E_SOURCE_EXTENSION_REVISION_GUARDS"
              version="3.8">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceRevisionGuards.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_SECURITY"
              value="Security"
              c:type="E_SOURCE_EXTENSION_SECURITY"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceSecurity.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_SMIME"
              value="Secure MIME (S/MIME)"
              c:type="E_SOURCE_EXTENSION_SMIME"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceSMIME.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_TASK_LIST"
              value="Task List"
              c:type="E_SOURCE_EXTENSION_TASK_LIST"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceTaskList.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_UOA"
              value="Ubuntu Online Accounts"
              c:type="E_SOURCE_EXTENSION_UOA"
              version="3.8">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceUoa.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_WEBDAV_BACKEND"
              value="WebDAV Backend"
              c:type="E_SOURCE_EXTENSION_WEBDAV_BACKEND"
              version="3.6">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceWebdav.  This is also used as a group name in key files.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_PARAM_SETTING"
              value="1"
              c:type="E_SOURCE_PARAM_SETTING"
              version="3.6">
      <doc xml:space="preserve">Extends #GParamFlags to indicate the #GObject property is associated
with a key file value.  Use this flag when installing #GObject properties
in #ESourceExtension subclasses.</doc>
      <type name="gint" c:type="gint"/>
    </constant>
    <class name="Source"
           c:symbol-prefix="source"
           c:type="ESource"
           version="3.6"
           parent="GObject.Object"
           glib:type-name="ESource"
           glib:get-type="e_source_get_type"
           glib:type-struct="SourceClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <implements name="Gio.Initable"/>
      <constructor name="new"
                   c:identifier="e_source_new"
                   version="3.6"
                   throws="1">
        <doc xml:space="preserve">Creates a new #ESource instance.

The #ESource::changed signal will be emitted from @main_context if given,
or else from the thread-default #GMainContext at the time this function is
called.

The only time the function should be called outside of #ESourceRegistry
is to create a so-called "scratch" #ESource for editing in a Properties
window or an account setup assistant.

FIXME: Elaborate on scratch sources.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #ESource, or %NULL on error</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <parameter name="dbus_object"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GDBusObject or %NULL</doc>
            <type name="Gio.DBusObject" c:type="GDBusObject*"/>
          </parameter>
          <parameter name="main_context"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GMainContext or %NULL</doc>
            <type name="GLib.MainContext" c:type="GMainContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_with_uid"
                   c:identifier="e_source_new_with_uid"
                   version="3.6"
                   throws="1">
        <doc xml:space="preserve">Creates a new "scratch" #ESource with a predetermined unique identifier.

The #ESource::changed signal will be emitted from @main_context if given,
or else from the thread-default #GMainContext at the time this function is
called.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new scratch #ESource, or %NULL on error</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve">a new unique identifier string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="main_context"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a #GMainContext or %NULL</doc>
            <type name="GLib.MainContext" c:type="GMainContext*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="parameter_to_key"
                c:identifier="e_source_parameter_to_key"
                version="3.6">
        <doc xml:space="preserve">Converts a #GParamSpec name (e.g. "foo-bar" or "foo_bar")
to "CamelCase" for use as a #GKeyFile key (e.g. "FooBar").

This function is made public only to aid in account migration.
Applications should not need to use this.</doc>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="param_name" transfer-ownership="none">
            <doc xml:space="preserve">a #GParamSpec name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="changed" invoker="changed" version="3.6">
        <doc xml:space="preserve">Emits the #ESource::changed signal from an idle callback in
@source's #ESource:main-context.

This function is primarily intended for use by #ESourceExtension
when emitting a #GObject::notify signal on one of its properties.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_oauth2_access_token"
                      invoker="get_oauth2_access_token"
                      version="3.8">
        <doc xml:space="preserve">Asynchronously obtains the OAuth 2.0 access token for @source along
with its expiry in seconds from the current time (or 0 if unknown).

When the operation is finished, @callback will be called.  You can then
call e_source_get_oauth2_access_token_finish() to get the result of the
operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="2">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_oauth2_access_token_finish"
                      invoker="get_oauth2_access_token_finish"
                      version="3.8"
                      throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_get_oauth2_access_token().

Free the returned access token with g_free() when finished with it.
If an error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_access_token"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">return location for the access token, or %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="out_expires_in"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">return location for the token expiry, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_oauth2_access_token_sync"
                      invoker="get_oauth2_access_token_sync"
                      version="3.8"
                      throws="1">
        <doc xml:space="preserve">Obtains the OAuth 2.0 access token for @source along with its expiry
in seconds from the current time (or 0 if unknown).

Free the returned access token with g_free() when finished with it.
If an error occurs, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="out_access_token"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">return location for the access token, or %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="out_expires_in"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">return location for the token expiry, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remote_create"
                      invoker="remote_create"
                      version="3.6">
        <doc xml:space="preserve">Asynchronously creates a new remote resource by picking out relevant
details from @scratch_source.  The @scratch_source must be an #ESource
with no #GDBusObject.  The @source must be #ESource:remote-creatable.

The details required to create the resource vary by #ECollectionBackend,
but in most cases the @scratch_source need only define the resource type
(address book, calendar, etc.), a display name for the resource, and
possibly a server-side path or ID for the resource.

When the operation is finished, @callback will be called.  You can then
call e_source_remote_create_finish() to get the result of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="scratch_source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource describing the resource to create</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="3">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remote_create_finish"
                      invoker="remote_create_finish"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_remote_create().  If
an error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remote_create_sync"
                      invoker="remote_create_sync"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve">Creates a new remote resource by picking out relevant details from
@scratch_source.  The @scratch_source must be an #ESource with no
#GDBusObject.  The @source must be #ESource:remote-creatable.

The details required to create the resource vary by #ECollectionBackend,
but in most cases the @scratch_source need only define the resource type
(address book, calendar, etc.), a display name for the resource, and
possibly a server-side path or ID for the resource.

If an error occurs, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="scratch_source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource describing the resource to create</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remote_delete"
                      invoker="remote_delete"
                      version="3.6">
        <doc xml:space="preserve">Asynchronously deletes the resource represented by @source from a remote
server.  The @source must be #ESource:remote-deletable.  This will also
delete the key file for @source and broadcast its removal to all clients,
similar to e_source_remove().

When the operation is finished, @callback will be called.  You can then
call e_source_remote_delete_finish() to get the result of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="2">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remote_delete_finish"
                      invoker="remote_delete_finish"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_remote_delete().  If
an error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remote_delete_sync"
                      invoker="remote_delete_sync"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve">Deletes the resource represented by @source from a remote server.
The @source must be #ESource:remote-deletable.  This will also delete
the key file for @source and broadcast its removal to all clients,
similar to e_source_remove_sync().

If an error occurs, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove" invoker="remove" version="3.6">
        <doc xml:space="preserve">Asynchronously requests the D-Bus service to delete the key files for
@source and all of its descendants and broadcast their removal to all
clients.  The @source must be #ESource:removable.

When the operation is finished, @callback will be called.  You can then
call e_source_remove_finish() to get the result of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="2">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_finish"
                      invoker="remove_finish"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_remove().  If an
error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE of failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="remove_sync"
                      invoker="remove_sync"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve">Requests the D-Bus service to delete the key files for @source and all of
its descendants and broadcast their removal to all clients.  The @source
must be #ESource:removable.

If an error occurs, the functon will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write" invoker="write" version="3.6">
        <doc xml:space="preserve">Asynchronously submits the current contents of @source to the D-Bus
service to be written to disk and broadcast to other clients.  The
@source must be #ESource:writable.

When the operation is finished, @callback will be called.  You can then
call e_source_write_finish() to get the result of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="2">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write_finish"
                      invoker="write_finish"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_write().  If an
error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="write_sync"
                      invoker="write_sync"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve">Submits the current contents of @source to the D-Bus service to be
written to disk and broadcast to other clients.  The @source must
be #ESource:writable.

If an error occurs, the functon will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="camel_configure_service"
              c:identifier="e_source_camel_configure_service"
              version="3.6"
              introspectable="0">
        <doc xml:space="preserve">This function essentially glues together @source and @serivce so their
configuration settings stay synchronized.  The glue itself is a shared
#CamelSettings instance.

Call this function immediately after creating a new #CamelService with
camel_session_add_service().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="service" transfer-ownership="none">
            <doc xml:space="preserve">a #CamelService</doc>
            <type c:type="CamelService*"/>
          </parameter>
        </parameters>
      </method>
      <method name="changed" c:identifier="e_source_changed" version="3.6">
        <doc xml:space="preserve">Emits the #ESource::changed signal from an idle callback in
@source's #ESource:main-context.

This function is primarily intended for use by #ESourceExtension
when emitting a #GObject::notify signal on one of its properties.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="compare_by_display_name"
              c:identifier="e_source_compare_by_display_name"
              version="3.6">
        <doc xml:space="preserve">Compares two #ESource instances by their display names.  Useful for
ordering sources in a user interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a negative value if @source1 compares before @source2, zero if they compare equal, or a positive value if @source1 compares after @source2</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="source1" transfer-ownership="none">
            <doc xml:space="preserve">the first #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="source2" transfer-ownership="none">
            <doc xml:space="preserve">the second #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dup_display_name"
              c:identifier="e_source_dup_display_name"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_get_display_name().
Use this function when accessing @source from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESource:display-name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_parent"
              c:identifier="e_source_dup_parent"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_get_parent().
Use this function when accessing @source from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESource:parent</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_uid" c:identifier="e_source_dup_uid" version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_get_uid().
Use this function when accessing @source from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESource:uid</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="e_source_equal" version="3.6">
        <doc xml:space="preserve">Checks two #ESource instances for equality.  #ESource instances are
equal if their unique identifier strings are equal.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @source1 and @source2 are equal</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source1" transfer-ownership="none">
            <doc xml:space="preserve">the first #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="source2" transfer-ownership="none">
            <doc xml:space="preserve">the second #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_display_name"
              c:identifier="e_source_get_display_name"
              version="3.6">
        <doc xml:space="preserve">Returns the display name for @source.  Use the display name to
represent the #ESource in a user interface.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the display name for @source</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_enabled"
              c:identifier="e_source_get_enabled"
              version="3.6">
        <doc xml:space="preserve">Returns %TRUE if @source is enabled.

An application should try to honor this setting if at all possible,
even if it does not provide a way to change the setting through its
user interface.  Disabled data sources should generally be hidden.

&lt;note&gt;&lt;para&gt;
  This function does not take into account @source's ancestors in the
  #ESource hierarchy, each of which have their own enabled state.  If
  any of @source's ancestors are disabled, then @source itself should
  be treated as disabled.  Use e_source_registry_check_enabled() to
  easily check for this.
&lt;/para&gt;&lt;/note&gt;</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @source is enabled</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_extension"
              c:identifier="e_source_get_extension"
              version="3.6">
        <doc xml:space="preserve">Returns an instance of some #ESourceExtension subclass which registered
itself under @extension_name.  If no such instance exists within @source,
one will be created.  It is the caller's responsibility to know which
subclass is being returned.

If you just want to test for the existence of an extension within @source
without creating it, use e_source_has_extension().

Extension instances are owned by their #ESource and should not be
referenced directly.  Instead, reference the #ESource instance and
use this function to fetch the extension instance as needed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an instance of some #ESourceExtension subclass</doc>
          <type name="SourceExtension" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="extension_name" transfer-ownership="none">
            <doc xml:space="preserve">an extension name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_oauth2_access_token"
              c:identifier="e_source_get_oauth2_access_token"
              version="3.8">
        <doc xml:space="preserve">Asynchronously obtains the OAuth 2.0 access token for @source along
with its expiry in seconds from the current time (or 0 if unknown).

When the operation is finished, @callback will be called.  You can then
call e_source_get_oauth2_access_token_finish() to get the result of the
operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_oauth2_access_token_finish"
              c:identifier="e_source_get_oauth2_access_token_finish"
              version="3.8"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_get_oauth2_access_token().

Free the returned access token with g_free() when finished with it.
If an error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_access_token"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">return location for the access token, or %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="out_expires_in"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">return location for the token expiry, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_oauth2_access_token_sync"
              c:identifier="e_source_get_oauth2_access_token_sync"
              version="3.8"
              throws="1">
        <doc xml:space="preserve">Obtains the OAuth 2.0 access token for @source along with its expiry
in seconds from the current time (or 0 if unknown).

Free the returned access token with g_free() when finished with it.
If an error occurs, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="out_access_token"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">return location for the access token, or %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="out_expires_in"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">return location for the token expiry, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_parent"
              c:identifier="e_source_get_parent"
              version="3.6">
        <doc xml:space="preserve">Returns the unique identifier string of the parent #ESource.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the UID of the parent #ESource</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remote_creatable"
              c:identifier="e_source_get_remote_creatable"
              version="3.6">
        <doc xml:space="preserve">Returns whether new resources can be created on a remote server by
calling e_source_remote_create() on @source.

Generally this is only %TRUE if @source has an #ESourceCollection
extension, which means there is an #ECollectionBackend in the D-Bus
service that can handle create requests.  If @source does not have
this capability, calls to e_source_remote_create() will fail.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @source can create remote resources</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remote_deletable"
              c:identifier="e_source_get_remote_deletable"
              version="3.6">
        <doc xml:space="preserve">Returns whether the resource represented by @source can be deleted
from a remote server by calling e_source_remote_delete().

Generally this is only %TRUE if @source is a child of an #ESource
which has an #ESourceCollection extension, which means there is an
#ECollectionBackend in the D-Bus service that can handle delete
requests.  If @source does not have this capability, calls to
e_source_remote_delete() will fail.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @source can delete remote resources</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_removable"
              c:identifier="e_source_get_removable"
              version="3.6">
        <doc xml:space="preserve">Returns whether the D-Bus service will allow @source to be removed.
If @source is not writable, calls to e_source_remove() will fail.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @source is removable</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_uid" c:identifier="e_source_get_uid" version="3.6">
        <doc xml:space="preserve">Returns the unique identifier string for @source.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the UID for @source</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_writable"
              c:identifier="e_source_get_writable"
              version="3.6">
        <doc xml:space="preserve">Returns whether the D-Bus service will accept changes to @source.
If @source is not writable, calls to e_source_write() will fail.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @source is writable</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="has_extension"
              c:identifier="e_source_has_extension"
              version="3.6">
        <doc xml:space="preserve">Checks whether @source has an #ESourceExtension with the given name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @source has such an extension, %FALSE if not</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="extension_name" transfer-ownership="none">
            <doc xml:space="preserve">an extension name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="hash" c:identifier="e_source_hash" version="3.6">
        <doc xml:space="preserve">Generates a hash value for @source.  This function is intended for
easily hashing an #ESource to add to a #GHashTable or similar data
structure.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a hash value for @source.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="mail_signature_load"
              c:identifier="e_source_mail_signature_load"
              version="3.6">
        <doc xml:space="preserve">Asynchronously loads a signature from the signature file for @source,
which is given by e_source_mail_signature_get_file().

If the signature file is executable, it will be executed and its output
captured as the email signature content.  If the signature file is not
executable, the email signature content is read directly from the file.

When the operation is finished, @callback will be called.  You can
then call e_source_mail_signature_load_finish() to get the result of
the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="io_priority" transfer-ownership="none">
            <doc xml:space="preserve">the I/O priority of the request</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="mail_signature_load_finish"
              c:identifier="e_source_mail_signature_load_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes an operation started with e_source_mail_signature_load().  The
signature file contents are placed in @contents, and @length is set to
the size of the @contents string.  The @contents string should be freed
with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="contents" transfer-ownership="none">
            <doc xml:space="preserve">return location for the signature content</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="length" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">return location for the length of the signature content, or %NULL if the length is not needed</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="mail_signature_load_sync"
              c:identifier="e_source_mail_signature_load_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Loads a signature from the signature file for @source, which is
given by e_source_mail_signature_get_file().  The signature contents
are placed in @contents, and @length is set to the size of the @contents
string.  The @contents string should be freed with g_free() when no
longer needed.

If the signature file is executable, it will be executed and its output
captured as the email signature content.  If the signature file is not
executable, the email signature content is read directly from the file.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="contents" transfer-ownership="none">
            <doc xml:space="preserve">return location for the signature content</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="length" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">return location for the length of the signature content, or %NULL if the length is not needed</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="mail_signature_replace"
              c:identifier="e_source_mail_signature_replace"
              version="3.6">
        <doc xml:space="preserve">Asynchrously replaces the signature file for @source with the given
@contents of @length bytes.  The signature file for @source is given
by e_source_mail_signature_get_file().

When the operation is finished, @callback will be called.  You can
then call e_source_mail_signature_replace_finish() to get the result
of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="contents" transfer-ownership="none">
            <doc xml:space="preserve">the signature contents</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve">the length of @contents in bytes</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="io_priority" transfer-ownership="none">
            <doc xml:space="preserve">the I/O priority of the request</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="mail_signature_replace_finish"
              c:identifier="e_source_mail_signature_replace_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes an operation started with e_source_mail_signature_replace().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="mail_signature_replace_sync"
              c:identifier="e_source_mail_signature_replace_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Replaces the signature file for @source with the given @contents
of @length bytes.  The signature file for @source is given by
e_source_mail_signature_get_file().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="contents" transfer-ownership="none">
            <doc xml:space="preserve">the signature contents</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="length" transfer-ownership="none">
            <doc xml:space="preserve">the length of @contents in bytes</doc>
            <type name="gsize" c:type="gsize"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="mail_signature_symlink"
              c:identifier="e_source_mail_signature_symlink"
              version="3.6">
        <doc xml:space="preserve">Asynchronously replaces the signature file for @source with a symbolic
link to @symlink_target, which should be an executable file that prints
a mail signature to standard output.  The signature file for @source
is given by e_source_mail_signature_get_file().

When the operation is finished, @callback will be called.  You can
then call e_source_mail_signature_symlink_finish() to get the result
of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="symlink_target" transfer-ownership="none">
            <doc xml:space="preserve">executable filename to link to</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="io_priority" transfer-ownership="none">
            <doc xml:space="preserve">the I/O priority of the request</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="mail_signature_symlink_finish"
              c:identifier="e_source_mail_signature_symlink_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes an operation started with e_source_mail_signature_symlink().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="mail_signature_symlink_sync"
              c:identifier="e_source_mail_signature_symlink_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Replaces the signature file for @source with a symbolic link to
@symlink_target, which should be an executable file that prints
a mail signature to standard output.  The signature file for
@source is given by e_source_mail_signature_get_file().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="symlink_target" transfer-ownership="none">
            <doc xml:space="preserve">executable filename to link to</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_dbus_object"
              c:identifier="e_source_ref_dbus_object"
              version="3.6">
        <doc xml:space="preserve">Returns the #GDBusObject that was passed to e_source_new().

The returned #GDBusObject is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the #GDBusObject for @source, or %NULL</doc>
          <type name="Gio.DBusObject" c:type="GDBusObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_main_context"
              c:identifier="e_source_ref_main_context"
              version="3.6">
        <doc xml:space="preserve">Returns the #GMainContext on which event sources for @source are to
be attached.

The returned #GMainContext is referenced for thread-safety and must be
unreferenced with g_main_context_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #GMainContext</doc>
          <type name="GLib.MainContext" c:type="GMainContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="refresh_add_timeout"
              c:identifier="e_source_refresh_add_timeout"
              version="3.6">
        <doc xml:space="preserve">This is a simple way to schedule a periodic data source refresh.

Adds a timeout #GSource to @context and handles all the bookkeeping
if @source's refresh #ESourceRefresh:enabled state or its refresh
#ESourceRefresh:interval-minutes value changes.  The @callback is
expected to dispatch an asynchronous job to connect to and fetch
updates from a remote server.

The returned ID can be passed to e_source_refresh_remove_timeout() to
remove the timeout from @context.  Note the ID is a private handle and
cannot be passed to g_source_remove().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a refresh timeout ID</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="context" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">a #GMainContext, or %NULL (if %NULL, the default context will be used)</doc>
            <type name="GLib.MainContext" c:type="GMainContext*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     scope="notified"
                     closure="2"
                     destroy="3">
            <doc xml:space="preserve">function to call on each timeout</doc>
            <type name="SourceRefreshFunc" c:type="ESourceRefreshFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="notify"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async">
            <doc xml:space="preserve">function to call when the timeout is removed, or %NULL</doc>
            <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
          </parameter>
        </parameters>
      </method>
      <method name="refresh_force_timeout"
              c:identifier="e_source_refresh_force_timeout"
              version="3.6">
        <doc xml:space="preserve">For all timeouts added with e_source_refresh_add_timeout(), invokes
the #ESourceRefreshFunc callback immediately and then, if the refresh
#ESourceRefresh:enabled state is TRUE, reschedules the timeout.

This function is called automatically when the #ESource switches from
disabled to enabled, but can also be useful when a network connection
becomes available or when waking up from hibernation or suspend.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="refresh_remove_timeout"
              c:identifier="e_source_refresh_remove_timeout"
              version="3.6">
        <doc xml:space="preserve">Removes a timeout #GSource added by e_source_refresh_add_timeout().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the timeout was found and removed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="refresh_timeout_id" transfer-ownership="none">
            <doc xml:space="preserve">a refresh timeout ID</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="refresh_remove_timeouts_by_data"
              c:identifier="e_source_refresh_remove_timeouts_by_data"
              version="3.6">
        <doc xml:space="preserve">Removes all timeout #GSource's added by e_source_refresh_add_timeout()
whose callback data pointer matches @user_data.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the number of timeouts found and removed</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data to match against timeout callbacks</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_create"
              c:identifier="e_source_remote_create"
              version="3.6">
        <doc xml:space="preserve">Asynchronously creates a new remote resource by picking out relevant
details from @scratch_source.  The @scratch_source must be an #ESource
with no #GDBusObject.  The @source must be #ESource:remote-creatable.

The details required to create the resource vary by #ECollectionBackend,
but in most cases the @scratch_source need only define the resource type
(address book, calendar, etc.), a display name for the resource, and
possibly a server-side path or ID for the resource.

When the operation is finished, @callback will be called.  You can then
call e_source_remote_create_finish() to get the result of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="scratch_source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource describing the resource to create</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_create_finish"
              c:identifier="e_source_remote_create_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_remote_create().  If
an error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_create_sync"
              c:identifier="e_source_remote_create_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Creates a new remote resource by picking out relevant details from
@scratch_source.  The @scratch_source must be an #ESource with no
#GDBusObject.  The @source must be #ESource:remote-creatable.

The details required to create the resource vary by #ECollectionBackend,
but in most cases the @scratch_source need only define the resource type
(address book, calendar, etc.), a display name for the resource, and
possibly a server-side path or ID for the resource.

If an error occurs, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="scratch_source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource describing the resource to create</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_delete"
              c:identifier="e_source_remote_delete"
              version="3.6">
        <doc xml:space="preserve">Asynchronously deletes the resource represented by @source from a remote
server.  The @source must be #ESource:remote-deletable.  This will also
delete the key file for @source and broadcast its removal to all clients,
similar to e_source_remove().

When the operation is finished, @callback will be called.  You can then
call e_source_remote_delete_finish() to get the result of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_delete_finish"
              c:identifier="e_source_remote_delete_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_remote_delete().  If
an error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remote_delete_sync"
              c:identifier="e_source_remote_delete_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Deletes the resource represented by @source from a remote server.
The @source must be #ESource:remote-deletable.  This will also delete
the key file for @source and broadcast its removal to all clients,
similar to e_source_remove_sync().

If an error occurs, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="e_source_remove" version="3.6">
        <doc xml:space="preserve">Asynchronously requests the D-Bus service to delete the key files for
@source and all of its descendants and broadcast their removal to all
clients.  The @source must be #ESource:removable.

When the operation is finished, @callback will be called.  You can then
call e_source_remove_finish() to get the result of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">the #ESource to be removed</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_finish"
              c:identifier="e_source_remove_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_remove().  If an
error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE of failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">the #ESource to be removed</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_sync"
              c:identifier="e_source_remove_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Requests the D-Bus service to delete the key files for @source and all of
its descendants and broadcast their removal to all clients.  The @source
must be #ESource:removable.

If an error occurs, the functon will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">the #ESource to be removed</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_display_name"
              c:identifier="e_source_set_display_name"
              version="3.6">
        <doc xml:space="preserve">Sets the display name for @source.  The @display_name argument must be a
valid UTF-8 string.  Use the display name to represent the #ESource in a
user interface.

The internal copy of @display_name is automatically stripped of leading
and trailing whitespace.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="display_name" transfer-ownership="none">
            <doc xml:space="preserve">a display name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_enabled"
              c:identifier="e_source_set_enabled"
              version="3.6">
        <doc xml:space="preserve">Enables or disables @source.

An application should try to honor this setting if at all possible,
even if it does not provide a way to change the setting through its
user interface.  Disabled data sources should generally be hidden.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="enabled" transfer-ownership="none">
            <doc xml:space="preserve">whether to enable @source</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_parent"
              c:identifier="e_source_set_parent"
              version="3.6">
        <doc xml:space="preserve">Identifies the parent of @source by its unique identifier string.
This can only be set prior to adding @source to an #ESourceRegistry.

The internal copy of #ESource:parent is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="parent" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">the UID of the parent #ESource, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="to_string" c:identifier="e_source_to_string" version="3.6">
        <doc xml:space="preserve">Outputs the current contents of @source as a key file string.
Free the returned string with g_free().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated string</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="length" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">return location for the length of the returned string, or %NULL</doc>
            <type name="gsize" c:type="gsize*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write" c:identifier="e_source_write" version="3.6">
        <doc xml:space="preserve">Asynchronously submits the current contents of @source to the D-Bus
service to be written to disk and broadcast to other clients.  The
@source must be #ESource:writable.

When the operation is finished, @callback will be called.  You can then
call e_source_write_finish() to get the result of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">a writable #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_finish"
              c:identifier="e_source_write_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_write().  If an
error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">a writable #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="write_sync"
              c:identifier="e_source_write_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Submits the current contents of @source to the D-Bus service to be
written to disk and broadcast to other clients.  The @source must
be #ESource:writable.

If an error occurs, the functon will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">a writable #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="dbus-object"
                introspectable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type/>
      </property>
      <property name="display-name"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="enabled"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="main-context"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="GLib.MainContext"/>
      </property>
      <property name="parent" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="remote-creatable" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="remote-deletable" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="removable" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="uid"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="writable" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="SourcePrivate" c:type="ESourcePrivate*"/>
      </field>
      <glib:signal name="changed" when="last" no-recurse="1">
        <doc xml:space="preserve">The ::changed signal is emitted when a property in @source or
one of its extension objects changes.  A common use for this
signal is to notify a #GtkTreeModel containing data collected
from #ESource&lt;!-- --&gt;s that it needs to update a row.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <class name="SourceAddressBook"
           c:symbol-prefix="source_address_book"
           c:type="ESourceAddressBook"
           version="3.6"
           parent="SourceBackend"
           glib:type-name="ESourceAddressBook"
           glib:get-type="e_source_address_book_get_type"
           glib:type-struct="SourceAddressBookClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <field name="parent">
        <type name="SourceBackend" c:type="ESourceBackend"/>
      </field>
      <field name="priv">
        <type name="SourceAddressBookPrivate"
              c:type="ESourceAddressBookPrivate*"/>
      </field>
    </class>
    <record name="SourceAddressBookClass"
            c:type="ESourceAddressBookClass"
            glib:is-gtype-struct-for="SourceAddressBook">
      <field name="parent_class">
        <type name="SourceBackendClass" c:type="ESourceBackendClass"/>
      </field>
    </record>
    <record name="SourceAddressBookPrivate"
            c:type="ESourceAddressBookPrivate"
            disguised="1">
    </record>
    <class name="SourceAlarms"
           c:symbol-prefix="source_alarms"
           c:type="ESourceAlarms"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceAlarms"
           glib:get-type="e_source_alarms_get_type"
           glib:type-struct="SourceAlarmsClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_last_notified"
              c:identifier="e_source_alarms_dup_last_notified"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_alarms_get_last_notified().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceAlarms:last-notified</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAlarms</doc>
            <type name="SourceAlarms" c:type="ESourceAlarms*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_include_me"
              c:identifier="e_source_alarms_get_include_me"
              version="3.6">
        <doc xml:space="preserve">Returns whether the user should be alerted about upcoming appointments
in the calendar described by the #ESource to which @extension belongs.

Alarm daemons such as evolution-alarm-notify can use this property to
decide which calendars to query for upcoming appointments.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether to show alarms for upcoming appointments</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAlarms</doc>
            <type name="SourceAlarms" c:type="ESourceAlarms*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_last_notified"
              c:identifier="e_source_alarms_get_last_notified"
              version="3.6">
        <doc xml:space="preserve">Returns an ISO 8601 formatted timestamp of when the user was last
alerted about an upcoming appointment in the calendar described by
the #ESource to which @extension belongs.  If no valid timestamp
has been set, the function will return %NULL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an ISO 8601 timestamp, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAlarms</doc>
            <type name="SourceAlarms" c:type="ESourceAlarms*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_include_me"
              c:identifier="e_source_alarms_set_include_me"
              version="3.6">
        <doc xml:space="preserve">Sets whether the user should be alerted about upcoming appointments in
the calendar described by the #ESource to which @extension belongs.

Alarm daemons such as evolution-alarm-notify can use this property to
decide which calendars to query for upcoming appointments.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAlarms</doc>
            <type name="SourceAlarms" c:type="ESourceAlarms*"/>
          </instance-parameter>
          <parameter name="include_me" transfer-ownership="none">
            <doc xml:space="preserve">whether to show alarms for upcoming appointments</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_last_notified"
              c:identifier="e_source_alarms_set_last_notified"
              version="3.6">
        <doc xml:space="preserve">Sets an ISO 8601 formatted timestamp of when the user was last
alerted about an upcoming appointment in the calendar described
by the #ESource to which @extension belongs.

If @last_notified is non-%NULL, the function will validate the
timestamp before setting the #ESourceAlarms:last-notified property.
Invalid timestamps are discarded with a runtime warning.

Generally, this function should only be called by an alarm daemon
such as evolution-alarm-notify.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAlarms</doc>
            <type name="SourceAlarms" c:type="ESourceAlarms*"/>
          </instance-parameter>
          <parameter name="last_notified"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">an ISO 8601 timestamp, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="include-me"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="last-notified"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceAlarmsPrivate" c:type="ESourceAlarmsPrivate*"/>
      </field>
    </class>
    <record name="SourceAlarmsClass"
            c:type="ESourceAlarmsClass"
            glib:is-gtype-struct-for="SourceAlarms">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceAlarmsPrivate"
            c:type="ESourceAlarmsPrivate"
            disguised="1">
    </record>
    <class name="SourceAuthentication"
           c:symbol-prefix="source_authentication"
           c:type="ESourceAuthentication"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceAuthentication"
           glib:get-type="e_source_authentication_get_type"
           glib:type-struct="SourceAuthenticationClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_host"
              c:identifier="e_source_authentication_dup_host"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_authentication_get_host().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceAuthentication:host</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_method"
              c:identifier="e_source_authentication_dup_method"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_authentication_get_method().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceAuthentication:method</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_user"
              c:identifier="e_source_authentication_dup_user"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_authentication_get_user().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceAuthentication:user</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_host"
              c:identifier="e_source_authentication_get_host"
              version="3.6">
        <doc xml:space="preserve">Returns the host name used to authenticate to a remote account.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the host name of a remote account</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_method"
              c:identifier="e_source_authentication_get_method"
              version="3.6">
        <doc xml:space="preserve">Returns the authentication method for a remote account.  There are
no pre-defined method names; backends are free to set this however
they wish.  If authentication is not required for a remote account,
the convention is to set #ESourceAuthentication:method to "none".</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the authentication method for a remote account</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_port"
              c:identifier="e_source_authentication_get_port"
              version="3.6">
        <doc xml:space="preserve">Returns the port number used to authenticate to a remote account.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the port number of a remote account</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_remember_password"
              c:identifier="e_source_authentication_get_remember_password"
              version="3.10">
        <doc xml:space="preserve">Returns whether to offer to remember the provided password by default
in password prompts.  This way, if the user unchecks the option it will
be unchecked by default in future password prompts.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether to offer to remember the password by default</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_user"
              c:identifier="e_source_authentication_get_user"
              version="3.6">
        <doc xml:space="preserve">Returns the user name used to authenticate to a remote account.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the user name of a remote account</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_connectable"
              c:identifier="e_source_authentication_ref_connectable"
              version="3.8">
        <doc xml:space="preserve">Returns a #GSocketConnectable instance constructed from @extension's
#ESourceAuthentication:host and #ESourceAuthentication:port properties,
or %NULL if the #ESourceAuthentication:host is not set.

The returned #GSocketConnectable is referenced for thread-safety and must
be unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a #GSocketConnectable, or %NULL</doc>
          <type name="Gio.SocketConnectable" c:type="GSocketConnectable*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="required"
              c:identifier="e_source_authentication_required"
              version="3.6">
        <doc xml:space="preserve">This is a convenience function which returns whether authentication
is required at all, regardless of the method used.  This relies on
the convention of setting #ESourceAuthentication:method to "none"
when authentication is &lt;emphasis&gt;not&lt;/emphasis&gt; required.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether authentication is required at all</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_host"
              c:identifier="e_source_authentication_set_host"
              version="3.6">
        <doc xml:space="preserve">Sets the host name used to authenticate to a remote account.

The internal copy of @host is automatically stripped of leading and
trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
          <parameter name="host" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">a host name, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_method"
              c:identifier="e_source_authentication_set_method"
              version="3.6">
        <doc xml:space="preserve">Sets the authentication method for a remote account.  There are no
pre-defined method names; backends are free to set this however they
wish.  If authentication is not required for a remote account, the
convention is to set the method to "none".  In keeping with that
convention, #ESourceAuthentication:method will be set to "none" if
@method is %NULL or an empty string.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
          <parameter name="method" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">authentication method, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_port"
              c:identifier="e_source_authentication_set_port"
              version="3.6">
        <doc xml:space="preserve">Sets the port number used to authenticate to a remote account.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
          <parameter name="port" transfer-ownership="none">
            <doc xml:space="preserve">a port number</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_remember_password"
              c:identifier="e_source_authentication_set_remember_password"
              version="3.10">
        <doc xml:space="preserve">Sets whether to offer to remember the provided password by default in
password prompts.  This way, if the user unchecks the option it will be
unchecked by default in future password prompts.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
          <parameter name="remember_password" transfer-ownership="none">
            <doc xml:space="preserve">whether to offer to remember the password by default</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_user"
              c:identifier="e_source_authentication_set_user"
              version="3.6">
        <doc xml:space="preserve">Sets the user name used to authenticate to a remote account.

The internal copy of @user is automatically stripped of leading and
trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
          <parameter name="user" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">a user name, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="connectable" transfer-ownership="none">
        <type name="Gio.SocketConnectable"/>
      </property>
      <property name="host"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="method"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="port"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="remember-password"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="user"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceAuthenticationPrivate"
              c:type="ESourceAuthenticationPrivate*"/>
      </field>
    </class>
    <record name="SourceAuthenticationClass"
            c:type="ESourceAuthenticationClass"
            glib:is-gtype-struct-for="SourceAuthentication">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceAuthenticationPrivate"
            c:type="ESourceAuthenticationPrivate"
            disguised="1">
    </record>
    <enumeration name="SourceAuthenticationResult"
                 version="3.6"
                 glib:type-name="ESourceAuthenticationResult"
                 glib:get-type="e_source_authentication_result_get_type"
                 c:type="ESourceAuthenticationResult">
      <doc xml:space="preserve">Status codes used by the #ESourceAuthenticator interface.</doc>
      <member name="error"
              value="0"
              c:identifier="E_SOURCE_AUTHENTICATION_ERROR"
              glib:nick="error">
        <doc xml:space="preserve">An error occurred while authenticating.</doc>
      </member>
      <member name="accepted"
              value="1"
              c:identifier="E_SOURCE_AUTHENTICATION_ACCEPTED"
              glib:nick="accepted">
        <doc xml:space="preserve">Server requesting authentication accepted password.</doc>
      </member>
      <member name="rejected"
              value="2"
              c:identifier="E_SOURCE_AUTHENTICATION_REJECTED"
              glib:nick="rejected">
        <doc xml:space="preserve">Server requesting authentication rejected password.</doc>
      </member>
    </enumeration>
    <interface name="SourceAuthenticator"
               c:symbol-prefix="source_authenticator"
               c:type="ESourceAuthenticator"
               version="3.6"
               glib:type-name="ESourceAuthenticator"
               glib:get-type="e_source_authenticator_get_type"
               glib:type-struct="SourceAuthenticatorInterface">
      <virtual-method name="get_prompt_strings"
                      invoker="get_prompt_strings"
                      version="3.6">
        <doc xml:space="preserve">Generates authentication prompt strings for @source.

For registry service clients, #ESourceRegistry calls this function as
part of e_source_registry_authenticate_sync().  In the registry service
itself, #EAuthenticationSession calls this function during initialization.
This function should rarely need to be called explicitly outside of those
two cases.

The #ESourceAuthenticatorInterface defines a default behavior for this
method which should suffice in most cases.  But implementors can still
override the method if needed for special circumstances.

Free each of the returned prompt strings with g_free().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="prompt_title"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">the title of the prompt</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="prompt_message"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">the prompt message for the user</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="prompt_description"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">the detailed description of the prompt</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_without_password"
                      invoker="get_without_password"
                      version="3.10">
        <doc xml:space="preserve">Returns whether the used authentication method can be used without
a password prompt. If so, then user is not asked for the password,
only if the authentication fails. The default implementation returns
%FALSE, which means always asks for the password (or read it from
a keyring).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether to try to authenticate without asking for the password</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="try_password" invoker="try_password" version="3.6">
        <doc xml:space="preserve">Asyncrhonously attempts to authenticate using @password.

The password is passed in a #GString container so its content is not
accidentally revealed in a stack trace.

When the operation is finished, @callback will be called.  You can then
call e_source_authenticator_try_password_finish() to get the result of the
operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </instance-parameter>
          <parameter name="password" transfer-ownership="none">
            <doc xml:space="preserve">a user-provided password</doc>
            <type name="GLib.String" c:type="const GString*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none" closure="3">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="try_password_finish"
                      invoker="try_password_finish"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_authenticator_try_password().

If an error occurred, the function sets @error and returns
#E_SOURCE_AUTHENTICATION_ERROR.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the authentication result</doc>
          <type name="SourceAuthenticationResult"
                c:type="ESourceAuthenticationResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="try_password_sync"
                      invoker="try_password_sync"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve">Attempts to authenticate using @password.

The password is passed in a #GString container so its content is not
accidentally revealed in a stack trace.

If an error occurs, the function sets @error and returns
#E_SOURCE_AUTHENTICATION_ERROR.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the authentication result</doc>
          <type name="SourceAuthenticationResult"
                c:type="ESourceAuthenticationResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </instance-parameter>
          <parameter name="password" transfer-ownership="none">
            <doc xml:space="preserve">a user-provided password</doc>
            <type name="GLib.String" c:type="const GString*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_prompt_strings"
              c:identifier="e_source_authenticator_get_prompt_strings"
              version="3.6">
        <doc xml:space="preserve">Generates authentication prompt strings for @source.

For registry service clients, #ESourceRegistry calls this function as
part of e_source_registry_authenticate_sync().  In the registry service
itself, #EAuthenticationSession calls this function during initialization.
This function should rarely need to be called explicitly outside of those
two cases.

The #ESourceAuthenticatorInterface defines a default behavior for this
method which should suffice in most cases.  But implementors can still
override the method if needed for special circumstances.

Free each of the returned prompt strings with g_free().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthenticator</doc>
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="prompt_title"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">the title of the prompt</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="prompt_message"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">the prompt message for the user</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="prompt_description"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">the detailed description of the prompt</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_without_password"
              c:identifier="e_source_authenticator_get_without_password"
              version="3.10">
        <doc xml:space="preserve">Returns whether the used authentication method can be used without
a password prompt. If so, then user is not asked for the password,
only if the authentication fails. The default implementation returns
%FALSE, which means always asks for the password (or read it from
a keyring).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether to try to authenticate without asking for the password</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthenticator</doc>
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="try_password"
              c:identifier="e_source_authenticator_try_password"
              version="3.6">
        <doc xml:space="preserve">Asyncrhonously attempts to authenticate using @password.

The password is passed in a #GString container so its content is not
accidentally revealed in a stack trace.

When the operation is finished, @callback will be called.  You can then
call e_source_authenticator_try_password_finish() to get the result of the
operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthenticator</doc>
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </instance-parameter>
          <parameter name="password" transfer-ownership="none">
            <doc xml:space="preserve">a user-provided password</doc>
            <type name="GLib.String" c:type="const GString*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="try_password_finish"
              c:identifier="e_source_authenticator_try_password_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_authenticator_try_password().

If an error occurred, the function sets @error and returns
#E_SOURCE_AUTHENTICATION_ERROR.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the authentication result</doc>
          <type name="SourceAuthenticationResult"
                c:type="ESourceAuthenticationResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthenticator</doc>
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="try_password_sync"
              c:identifier="e_source_authenticator_try_password_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Attempts to authenticate using @password.

The password is passed in a #GString container so its content is not
accidentally revealed in a stack trace.

If an error occurs, the function sets @error and returns
#E_SOURCE_AUTHENTICATION_ERROR.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the authentication result</doc>
          <type name="SourceAuthenticationResult"
                c:type="ESourceAuthenticationResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="auth" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthenticator</doc>
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </instance-parameter>
          <parameter name="password" transfer-ownership="none">
            <doc xml:space="preserve">a user-provided password</doc>
            <type name="GLib.String" c:type="const GString*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="SourceAuthenticatorInterface"
            c:type="ESourceAuthenticatorInterface"
            glib:is-gtype-struct-for="SourceAuthenticator"
            version="3.6">
      <field name="parent_interface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_prompt_strings">
        <callback name="get_prompt_strings">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="auth" transfer-ownership="none">
              <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve">an #ESource</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="prompt_title"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">the title of the prompt</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
            <parameter name="prompt_message"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">the prompt message for the user</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
            <parameter name="prompt_description"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve">the detailed description of the prompt</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_without_password">
        <callback name="get_without_password">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">whether to try to authenticate without asking for the password</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="auth" transfer-ownership="none">
              <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="try_password_sync">
        <callback name="try_password_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the authentication result</doc>
            <type name="SourceAuthenticationResult"
                  c:type="ESourceAuthenticationResult"/>
          </return-value>
          <parameters>
            <parameter name="auth" transfer-ownership="none">
              <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
            </parameter>
            <parameter name="password" transfer-ownership="none">
              <doc xml:space="preserve">a user-provided password</doc>
              <type name="GLib.String" c:type="const GString*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="try_password">
        <callback name="try_password">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="auth" transfer-ownership="none">
              <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
            </parameter>
            <parameter name="password" transfer-ownership="none">
              <doc xml:space="preserve">a user-provided password</doc>
              <type name="GLib.String" c:type="const GString*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="4">
              <doc xml:space="preserve">data to pass to the callback function</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="try_password_finish">
        <callback name="try_password_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">the authentication result</doc>
            <type name="SourceAuthenticationResult"
                  c:type="ESourceAuthenticationResult"/>
          </return-value>
          <parameters>
            <parameter name="auth" transfer-ownership="none">
              <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="SourceAutocomplete"
           c:symbol-prefix="source_autocomplete"
           c:type="ESourceAutocomplete"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceAutocomplete"
           glib:get-type="e_source_autocomplete_get_type"
           glib:type-struct="SourceAutocompleteClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="get_include_me"
              c:identifier="e_source_autocomplete_get_include_me"
              version="3.6">
        <doc xml:space="preserve">Returns whether the address book described by the #ESource to which
@extension belongs should be queried when the user inputs a partial
contact name or email address.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether to use the autocomplete feature</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAutocomplete</doc>
            <type name="SourceAutocomplete" c:type="ESourceAutocomplete*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_include_me"
              c:identifier="e_source_autocomplete_set_include_me"
              version="3.6">
        <doc xml:space="preserve">Sets whether the address book described by the #ESource to which
@extension belongs should be queried when the user inputs a partial
contact name or email address.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAutocomplete</doc>
            <type name="SourceAutocomplete" c:type="ESourceAutocomplete*"/>
          </instance-parameter>
          <parameter name="include_me" transfer-ownership="none">
            <doc xml:space="preserve">whether to use the autocomplete feature</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="include-me"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceAutocompletePrivate"
              c:type="ESourceAutocompletePrivate*"/>
      </field>
    </class>
    <record name="SourceAutocompleteClass"
            c:type="ESourceAutocompleteClass"
            glib:is-gtype-struct-for="SourceAutocomplete">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceAutocompletePrivate"
            c:type="ESourceAutocompletePrivate"
            disguised="1">
    </record>
    <class name="SourceBackend"
           c:symbol-prefix="source_backend"
           c:type="ESourceBackend"
           version="3.6"
           parent="SourceExtension"
           abstract="1"
           glib:type-name="ESourceBackend"
           glib:get-type="e_source_backend_get_type"
           glib:type-struct="SourceBackendClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_backend_name"
              c:identifier="e_source_backend_dup_backend_name"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_backend_get_backend_name().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceBackend:backend-name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceBackend</doc>
            <type name="SourceBackend" c:type="ESourceBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_backend_name"
              c:identifier="e_source_backend_get_backend_name"
              version="3.6">
        <doc xml:space="preserve">Returns the backend name for @extension.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the backend name for @extension</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceBackend</doc>
            <type name="SourceBackend" c:type="ESourceBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_backend_name"
              c:identifier="e_source_backend_set_backend_name"
              version="3.6">
        <doc xml:space="preserve">Sets the backend name for @extension.

The internal copy of @backend_name is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceBackend</doc>
            <type name="SourceBackend" c:type="ESourceBackend*"/>
          </instance-parameter>
          <parameter name="backend_name"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a backend name, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="backend-name"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceBackendPrivate" c:type="ESourceBackendPrivate*"/>
      </field>
    </class>
    <record name="SourceBackendClass"
            c:type="ESourceBackendClass"
            glib:is-gtype-struct-for="SourceBackend">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceBackendPrivate"
            c:type="ESourceBackendPrivate"
            disguised="1">
    </record>
    <class name="SourceCalendar"
           c:symbol-prefix="source_calendar"
           c:type="ESourceCalendar"
           version="3.6"
           parent="SourceSelectable"
           glib:type-name="ESourceCalendar"
           glib:get-type="e_source_calendar_get_type"
           glib:type-struct="SourceCalendarClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <field name="parent">
        <type name="SourceSelectable" c:type="ESourceSelectable"/>
      </field>
      <field name="priv">
        <type name="SourceCalendarPrivate" c:type="ESourceCalendarPrivate*"/>
      </field>
    </class>
    <record name="SourceCalendarClass"
            c:type="ESourceCalendarClass"
            glib:is-gtype-struct-for="SourceCalendar">
      <field name="parent_class">
        <type name="SourceSelectableClass" c:type="ESourceSelectableClass"/>
      </field>
    </record>
    <record name="SourceCalendarPrivate"
            c:type="ESourceCalendarPrivate"
            disguised="1">
    </record>
    <class name="SourceCamel"
           c:symbol-prefix="source_camel"
           c:type="ESourceCamel"
           version="3.6"
           parent="SourceExtension"
           abstract="1"
           glib:type-name="ESourceCamel"
           glib:get-type="e_source_camel_get_type"
           glib:type-struct="SourceCamelClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <function name="generate_subtype"
                c:identifier="e_source_camel_generate_subtype"
                version="3.6">
        <doc xml:space="preserve">Generates a custom #ESourceCamel subtype for @protocol.  Instances of the
new subtype will contain a #CamelSettings instance of type @settings_type.

This function is called as part of e_source_camel_register_types() and
should not be called explicitly, except by some groupware packages that
need to share package-specific settings across their mail, calendar and
address book components.  In that case the groupware package may choose
to subclass #CamelSettings rather than #ESourceExtension since libcamel
is the lowest common denominator across all components.  This function
provides a way for the calendar and address book components of such a
package to generate an #ESourceCamel subtype for its #CamelSettings
subtype without having to load all available #CamelProvider modules.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GType of the generated #ESourceCamel subtype</doc>
          <type name="GType" c:type="GType"/>
        </return-value>
        <parameters>
          <parameter name="protocol" transfer-ownership="none">
            <doc xml:space="preserve">a #CamelProvider protocol</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="settings_type" transfer-ownership="none">
            <doc xml:space="preserve">a subtype of #CamelSettings</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_extension_name"
                c:identifier="e_source_camel_get_extension_name"
                version="3.6">
        <doc xml:space="preserve">Returns the extension name for the #ESourceCamel subtype for @protocol.
The extension name can then be passed to e_source_get_extension() to
obtain an instance of the #ESourceCamel subtype.

For example, given a protocol named "imap" the function would return
"Imap Backend".</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #ESourceCamel extension name for @protocol</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="protocol" transfer-ownership="none">
            <doc xml:space="preserve">a #CamelProvider protocol</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_type_name"
                c:identifier="e_source_camel_get_type_name"
                version="3.6">
        <doc xml:space="preserve">Returns the #GType name of the registered #ESourceCamel subtype for
@protocol.

For example, given a protocol named "imap" the function would return
"ESourceCamelImap".</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #ESourceCamel type name for @protocol</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="protocol" transfer-ownership="none">
            <doc xml:space="preserve">a #CamelProvider protocol</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="register_types"
                c:identifier="e_source_camel_register_types"
                version="3.6">
        <doc xml:space="preserve">Creates and registers subclasses of #ESourceCamel for each available
#CamelProvider.  This function should be called once during application
or library initialization.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </function>
      <method name="get_settings"
              c:identifier="e_source_camel_get_settings"
              version="3.6"
              introspectable="0">
        <doc xml:space="preserve">Returns @extension's #ESourceCamel:settings instance, pre-configured
from the #ESource to which @extension belongs.  Changes to the #ESource
will automatically propagate to the #ESourceCamel:settings instance and
vice versa.

This is essentially the glue that binds #ESource to #CamelService.
See e_source_camel_configure_service().</doc>
        <return-value>
          <doc xml:space="preserve">a configured #CamelSettings instance</doc>
          <type c:type="CamelSettings*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCamel</doc>
            <type name="SourceCamel" c:type="ESourceCamel*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="settings" introspectable="0" transfer-ownership="none">
        <type/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceCamelPrivate" c:type="ESourceCamelPrivate*"/>
      </field>
    </class>
    <record name="SourceCamelClass"
            c:type="ESourceCamelClass"
            glib:is-gtype-struct-for="SourceCamel">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
      <field name="settings_type">
        <type name="GType" c:type="GType"/>
      </field>
    </record>
    <record name="SourceCamelPrivate"
            c:type="ESourceCamelPrivate"
            disguised="1">
    </record>
    <record name="SourceClass"
            c:type="ESourceClass"
            glib:is-gtype-struct-for="Source">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="changed">
        <callback name="changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_sync">
        <callback name="remove_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove">
        <callback name="remove">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="3">
              <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="3">
              <doc xml:space="preserve">data to pass to the callback function</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remove_finish">
        <callback name="remove_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE of failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write_sync">
        <callback name="write_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write">
        <callback name="write">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="3">
              <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="3">
              <doc xml:space="preserve">data to pass to the callback function</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="write_finish">
        <callback name="write_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remote_create_sync">
        <callback name="remote_create_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="scratch_source" transfer-ownership="none">
              <doc xml:space="preserve">an #ESource describing the resource to create</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remote_create">
        <callback name="remote_create">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="scratch_source" transfer-ownership="none">
              <doc xml:space="preserve">an #ESource describing the resource to create</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="4">
              <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="4">
              <doc xml:space="preserve">data to pass to the callback function</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remote_create_finish">
        <callback name="remote_create_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remote_delete_sync">
        <callback name="remote_delete_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remote_delete">
        <callback name="remote_delete">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="3">
              <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="3">
              <doc xml:space="preserve">data to pass to the callback function</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="remote_delete_finish">
        <callback name="remote_delete_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_oauth2_access_token_sync">
        <callback name="get_oauth2_access_token_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="out_access_token"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">return location for the access token, or %NULL</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
            <parameter name="out_expires_in"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">return location for the token expiry, or %NULL</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_oauth2_access_token">
        <callback name="get_oauth2_access_token">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="callback"
                       transfer-ownership="none"
                       allow-none="1"
                       scope="async"
                       closure="3">
              <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
              <type name="Gio.AsyncReadyCallback"
                    c:type="GAsyncReadyCallback"/>
            </parameter>
            <parameter name="user_data" transfer-ownership="none" closure="3">
              <doc xml:space="preserve">data to pass to the callback function</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_oauth2_access_token_finish">
        <callback name="get_oauth2_access_token_finish" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
            <parameter name="out_access_token"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">return location for the access token, or %NULL</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
            <parameter name="out_expires_in"
                       transfer-ownership="none"
                       allow-none="1">
              <doc xml:space="preserve">return location for the token expiry, or %NULL</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved">
        <array zero-terminated="0" c:type="gpointer" fixed-size="7">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="SourceCollection"
           c:symbol-prefix="source_collection"
           c:type="ESourceCollection"
           version="3.6"
           parent="SourceBackend"
           glib:type-name="ESourceCollection"
           glib:get-type="e_source_collection_get_type"
           glib:type-struct="SourceCollectionClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_identity"
              c:identifier="e_source_collection_dup_identity"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_collection_get_identity().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceCollection:identity</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCollection</doc>
            <type name="SourceCollection" c:type="ESourceCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_calendar_enabled"
              c:identifier="e_source_collection_get_calendar_enabled"
              version="3.6">
        <doc xml:space="preserve">Returns whether calendar sources within the collection should be
enabled.

An #ECollectionBackend running within the registry D-Bus service will
automatically synchronize any calendar sources it maintains with the
#ESourceCollection:calendar-enabled property.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether calendar sources should be enabled</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCollection</doc>
            <type name="SourceCollection" c:type="ESourceCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_contacts_enabled"
              c:identifier="e_source_collection_get_contacts_enabled"
              version="3.6">
        <doc xml:space="preserve">Returns whether address book sources within the collection should be
enabled.

An #ECollectionBackend running within the registry D-Bus service will
automatically synchronize any address book sources it maintains with
the #ESourceCollection:contacts-enabled property.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether address book sources should be enabled</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCollection</doc>
            <type name="SourceCollection" c:type="ESourceCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_identity"
              c:identifier="e_source_collection_get_identity"
              version="3.6">
        <doc xml:space="preserve">Returns the string used to uniquely identify the user account at
the service provider.  Often this is an email address or user name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the collection identity</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCollection</doc>
            <type name="SourceCollection" c:type="ESourceCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mail_enabled"
              c:identifier="e_source_collection_get_mail_enabled"
              version="3.6">
        <doc xml:space="preserve">Returns whether mail sources within the collection should be enabled.

An #ECollectionBackend running within the registry D-Bus service will
automatically synchronize any mail sources it maintains with the
#ESourceCollection:mail-enabled property.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether mail sources should be enabled</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCollection</doc>
            <type name="SourceCollection" c:type="ESourceCollection*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_calendar_enabled"
              c:identifier="e_source_collection_set_calendar_enabled"
              version="3.6">
        <doc xml:space="preserve">Sets whether calendar sources within the collection should be enabled.

An #ECollectionBackend running within the registry D-Bus service will
automatically synchronize any calendar sources it maintains with the
#ESourceCollection:calendar-enabled property.

Calling this function from a registry service client has no effect until
the change is submitted to the registry service through e_source_write(),
but there should rarely be any need for clients to call this.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCollection</doc>
            <type name="SourceCollection" c:type="ESourceCollection*"/>
          </instance-parameter>
          <parameter name="calendar_enabled" transfer-ownership="none">
            <doc xml:space="preserve">whether calendar sources should be enabled</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_contacts_enabled"
              c:identifier="e_source_collection_set_contacts_enabled"
              version="3.6">
        <doc xml:space="preserve">Sets whether address book sources within the collection should be enabled.

An #ECollectionBackend running within the registry D-Bus service will
automatically synchronize any address book sources it maintains with
the #ESourceCollection:contacts-enabled property.

Calling this function from a registry service client has no effect until
the change is submitted to the registry service through e_source_write(),
but there should rarely be any need for clients to call this.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCollection</doc>
            <type name="SourceCollection" c:type="ESourceCollection*"/>
          </instance-parameter>
          <parameter name="contacts_enabled" transfer-ownership="none">
            <doc xml:space="preserve">whether address book sources should be enabled</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_identity"
              c:identifier="e_source_collection_set_identity"
              version="3.6">
        <doc xml:space="preserve">Sets the string used to uniquely identify the user account at the
service provider.  Often this is an email address or user name.

The internal copy of @identity is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is
set instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCollection</doc>
            <type name="SourceCollection" c:type="ESourceCollection*"/>
          </instance-parameter>
          <parameter name="identity" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">the collection identity, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_mail_enabled"
              c:identifier="e_source_collection_set_mail_enabled"
              version="3.6">
        <doc xml:space="preserve">Sets whether mail sources within the collection should be enabled.

An #ECollectionBackend running within the registry D-Bus service will
automatically synchronize any mail sources it maintains with the
#ESourceCollection:mail-enabled property.

Calling this function from a registry service client has no effect until
the changes is submitted to the registry service through e_source_write(),
but there should rarely be any need for clients to call this.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCollection</doc>
            <type name="SourceCollection" c:type="ESourceCollection*"/>
          </instance-parameter>
          <parameter name="mail_enabled" transfer-ownership="none">
            <doc xml:space="preserve">whether mail sources should be enabled</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="calendar-enabled"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="contacts-enabled"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="identity"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="mail-enabled"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent">
        <type name="SourceBackend" c:type="ESourceBackend"/>
      </field>
      <field name="priv">
        <type name="SourceCollectionPrivate"
              c:type="ESourceCollectionPrivate*"/>
      </field>
    </class>
    <record name="SourceCollectionClass"
            c:type="ESourceCollectionClass"
            glib:is-gtype-struct-for="SourceCollection">
      <field name="parent_class">
        <type name="SourceBackendClass" c:type="ESourceBackendClass"/>
      </field>
    </record>
    <record name="SourceCollectionPrivate"
            c:type="ESourceCollectionPrivate"
            disguised="1">
    </record>
    <class name="SourceExtension"
           c:symbol-prefix="source_extension"
           c:type="ESourceExtension"
           version="3.6"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="ESourceExtension"
           glib:get-type="e_source_extension_get_type"
           glib:type-struct="SourceExtensionClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="get_source"
              c:identifier="e_source_extension_get_source"
              version="3.6"
              deprecated="Use e_source_extension_ref_source() instead."
              deprecated-version="3.8">
        <doc xml:space="preserve">Returns the #ESource instance to which @extension belongs.

Note this function is not thread-safe.  The returned #ESource could
be finalized by another thread while the caller is still using it.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #ESource instance</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceExtension</doc>
            <type name="SourceExtension" c:type="ESourceExtension*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_source"
              c:identifier="e_source_extension_ref_source"
              version="3.8"
              introspectable="0">
        <doc xml:space="preserve">Returns the #ESource instance to which the @extension belongs.

The returned #ESource is referenced for thread-safety.  Unreference
the #ESource with g_object_unref() when finished with it.</doc>
        <return-value>
          <doc xml:space="preserve">the #ESource instance</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceExtension</doc>
            <type name="SourceExtension" c:type="ESourceExtension*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="source"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Source"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="SourceExtensionPrivate" c:type="ESourceExtensionPrivate*"/>
      </field>
    </class>
    <record name="SourceExtensionClass"
            c:type="ESourceExtensionClass"
            glib:is-gtype-struct-for="SourceExtension">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="name">
        <type name="utf8" c:type="const gchar*"/>
      </field>
    </record>
    <record name="SourceExtensionPrivate"
            c:type="ESourceExtensionPrivate"
            disguised="1">
    </record>
    <class name="SourceGoa"
           c:symbol-prefix="source_goa"
           c:type="ESourceGoa"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceGoa"
           glib:get-type="e_source_goa_get_type"
           glib:type-struct="SourceGoaClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_account_id"
              c:identifier="e_source_goa_dup_account_id"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_goa_get_account_id().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceGoa:account-id</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceGoa</doc>
            <type name="SourceGoa" c:type="ESourceGoa*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_calendar_url"
              c:identifier="e_source_goa_dup_calendar_url"
              version="3.8">
        <doc xml:space="preserve">Thread-safe variation of e_source_goa_get_calendar_url().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceGoa:calendar-url</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceGoa</doc>
            <type name="SourceGoa" c:type="ESourceGoa*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_contacts_url"
              c:identifier="e_source_goa_dup_contacts_url"
              version="3.8">
        <doc xml:space="preserve">Thread-safe variation of e_source_goa_get_contacts_url().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceGoa:contacts-url</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceGoa</doc>
            <type name="SourceGoa" c:type="ESourceGoa*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_account_id"
              c:identifier="e_source_goa_get_account_id"
              version="3.6">
        <doc xml:space="preserve">Returns the identifier string of the GNOME Online Account associated
with the #ESource to which @extension belongs.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the associated GNOME Online Account ID</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceGoa</doc>
            <type name="SourceGoa" c:type="ESourceGoa*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_calendar_url"
              c:identifier="e_source_goa_get_calendar_url"
              version="3.8">
        <doc xml:space="preserve">Returns the calendar URL string of the GNOME Online Account associated
with the #ESource to which @extension belongs. Can be %NULL or an empty
string for accounts not supporting this property.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the associated GNOME Online Account calendar URL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceGoa</doc>
            <type name="SourceGoa" c:type="ESourceGoa*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_contacts_url"
              c:identifier="e_source_goa_get_contacts_url"
              version="3.8">
        <doc xml:space="preserve">Returns the contacts URL string of the GNOME Online Account associated
with the #ESource to which @extension belongs. Can be %NULL or an empty
string for accounts not supporting this property.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the associated GNOME Online Account contacts URL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceGoa</doc>
            <type name="SourceGoa" c:type="ESourceGoa*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_account_id"
              c:identifier="e_source_goa_set_account_id"
              version="3.6">
        <doc xml:space="preserve">Sets the identifier string of the GNOME Online Account associated
with the #ESource to which @extension belongs.

The internal copy of @account_id is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceGoa</doc>
            <type name="SourceGoa" c:type="ESourceGoa*"/>
          </instance-parameter>
          <parameter name="account_id"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the associated GNOME Online Account ID, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_calendar_url"
              c:identifier="e_source_goa_set_calendar_url"
              version="3.8">
        <doc xml:space="preserve">Sets the calendar URL of the GNOME Online Account associated
with the #ESource to which @extension belongs.

The internal copy of @calendar_url is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceGoa</doc>
            <type name="SourceGoa" c:type="ESourceGoa*"/>
          </instance-parameter>
          <parameter name="calendar_url"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the associated GNOME Online Account calendar URL, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_contacts_url"
              c:identifier="e_source_goa_set_contacts_url"
              version="3.8">
        <doc xml:space="preserve">Sets the contacts URL of the GNOME Online Account associated
with the #ESource to which @extension belongs.

The internal copy of @contacts_url is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceGoa</doc>
            <type name="SourceGoa" c:type="ESourceGoa*"/>
          </instance-parameter>
          <parameter name="contacts_url"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the associated GNOME Online Account contacts URL, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="account-id"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="calendar-url"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="contacts-url"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceGoaPrivate" c:type="ESourceGoaPrivate*"/>
      </field>
    </class>
    <record name="SourceGoaClass"
            c:type="ESourceGoaClass"
            glib:is-gtype-struct-for="SourceGoa">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceGoaPrivate" c:type="ESourceGoaPrivate" disguised="1">
    </record>
    <class name="SourceMDN"
           c:symbol-prefix="source_mdn"
           c:type="ESourceMDN"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceMDN"
           glib:get-type="e_source_mdn_get_type"
           glib:type-struct="SourceMDNClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="get_response_policy"
              c:identifier="e_source_mdn_get_response_policy"
              version="3.6">
        <doc xml:space="preserve">Returns the policy for this mail account on responding to Message
Disposition Notification requests when receiving mail messages.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #EMdnResponsePolicy for this account</doc>
          <type name="MdnResponsePolicy" c:type="EMdnResponsePolicy"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMDN</doc>
            <type name="SourceMDN" c:type="ESourceMDN*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_response_policy"
              c:identifier="e_source_mdn_set_response_policy"
              version="3.6">
        <doc xml:space="preserve">Sets the policy for this mail account on responding to Message
Disposition Notification requests when receiving mail messages.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMDN</doc>
            <type name="SourceMDN" c:type="ESourceMDN*"/>
          </instance-parameter>
          <parameter name="response_policy" transfer-ownership="none">
            <doc xml:space="preserve">the #EMdnResponsePolicy</doc>
            <type name="MdnResponsePolicy" c:type="EMdnResponsePolicy"/>
          </parameter>
        </parameters>
      </method>
      <property name="response-policy"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="MdnResponsePolicy"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceMDNPrivate" c:type="ESourceMDNPrivate*"/>
      </field>
    </class>
    <record name="SourceMDNClass"
            c:type="ESourceMDNClass"
            glib:is-gtype-struct-for="SourceMDN">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceMDNPrivate" c:type="ESourceMDNPrivate" disguised="1">
    </record>
    <class name="SourceMailAccount"
           c:symbol-prefix="source_mail_account"
           c:type="ESourceMailAccount"
           version="3.6"
           parent="SourceBackend"
           glib:type-name="ESourceMailAccount"
           glib:get-type="e_source_mail_account_get_type"
           glib:type-struct="SourceMailAccountClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_identity_uid"
              c:identifier="e_source_mail_account_dup_identity_uid"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_account_get_identity_uid().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailAccount:identity-uid</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailAccount</doc>
            <type name="SourceMailAccount" c:type="ESourceMailAccount*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_identity_uid"
              c:identifier="e_source_mail_account_get_identity_uid"
              version="3.6">
        <doc xml:space="preserve">Returns the #ESource:uid of the #ESource that describes the mail
identity to be used for this account.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the mail identity #ESource:uid</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailAccount</doc>
            <type name="SourceMailAccount" c:type="ESourceMailAccount*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_identity_uid"
              c:identifier="e_source_mail_account_set_identity_uid"
              version="3.6">
        <doc xml:space="preserve">Sets the #ESource:uid of the #ESource that describes the mail
identity to be used for this account.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailAccount</doc>
            <type name="SourceMailAccount" c:type="ESourceMailAccount*"/>
          </instance-parameter>
          <parameter name="identity_uid"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the mail identity #ESource:uid, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="identity-uid"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceBackend" c:type="ESourceBackend"/>
      </field>
      <field name="priv">
        <type name="SourceMailAccountPrivate"
              c:type="ESourceMailAccountPrivate*"/>
      </field>
    </class>
    <record name="SourceMailAccountClass"
            c:type="ESourceMailAccountClass"
            glib:is-gtype-struct-for="SourceMailAccount">
      <field name="parent_class">
        <type name="SourceBackendClass" c:type="ESourceBackendClass"/>
      </field>
    </record>
    <record name="SourceMailAccountPrivate"
            c:type="ESourceMailAccountPrivate"
            disguised="1">
    </record>
    <class name="SourceMailComposition"
           c:symbol-prefix="source_mail_composition"
           c:type="ESourceMailComposition"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceMailComposition"
           glib:get-type="e_source_mail_composition_get_type"
           glib:type-struct="SourceMailCompositionClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_bcc"
              c:identifier="e_source_mail_composition_dup_bcc"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_composition_get_bcc().
Use this function when accessing @extension from multiple threads.

The returned string array should be freed with g_strfreev() when no
longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailComposition:bcc</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_cc"
              c:identifier="e_source_mail_composition_dup_cc"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_composition_get_cc().
Use this function when accessing @extension from multiple threads.

The returned string array should be freed with g_strfreev() when no
longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailComposition:cc</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_drafts_folder"
              c:identifier="e_source_mail_composition_dup_drafts_folder"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_composition_get_drafts_folder().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailComposition:drafts-folder</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_templates_folder"
              c:identifier="e_source_mail_composition_dup_templates_folder"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_composition_get_templates_folder().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailComposition:templates-folder</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_bcc"
              c:identifier="e_source_mail_composition_get_bcc"
              version="3.6">
        <doc xml:space="preserve">Returns a %NULL-terminated string array of recipients which should
automatically be added to the blind carbon-copy (Bcc) list when
composing a new mail message.  The recipient strings should be of
the form "Full Name &amp;lt;email-address&amp;gt;".  The returned array is
owned by @extension and should not be modified or freed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a %NULL-terminated string array of Bcc recipients</doc>
          <array c:type="const gchar* const*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_cc"
              c:identifier="e_source_mail_composition_get_cc"
              version="3.6">
        <doc xml:space="preserve">Returns a %NULL-terminated string array of recipients which should
automatically be added to the carbon-copy (Cc) list when composing a
new mail message.  The recipient strings should be of the form "Full
Name &lt;email-address&gt;".  The returned array is owned by @extension and
should not be modified or freed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a %NULL-terminated string array of Cc recipients</doc>
          <array c:type="const gchar* const*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_drafts_folder"
              c:identifier="e_source_mail_composition_get_drafts_folder"
              version="3.6">
        <doc xml:space="preserve">Returns a string identifying the preferred folder for draft messages.
The format of the identifier string is defined by the client application.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an identifier for the preferred drafts folder</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_sign_imip"
              c:identifier="e_source_mail_composition_get_sign_imip"
              version="3.6">
        <doc xml:space="preserve">Returns whether outgoing iMIP messages such as meeting requests should
also be signed.  This is primarily intended as a workaround for certain
versions of Microsoft Outlook which can't handle signed iMIP messages.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether outgoing iMIP messages should be signed</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_templates_folder"
              c:identifier="e_source_mail_composition_get_templates_folder"
              version="3.6">
        <doc xml:space="preserve">Returns a string identifying the preferred folder for message templates.
The format of the identifier string is defined by the client application.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an identifier for the preferred templates folder</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_bcc"
              c:identifier="e_source_mail_composition_set_bcc"
              version="3.6">
        <doc xml:space="preserve">Sets the recipients which should automatically be added to the blind
carbon-copy (Bcc) list when composing a new mail message.  The recipient
strings should be of the form "Full Name &amp;lt;email-address&amp;gt;".</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
          <parameter name="bcc" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">a %NULL-terminated string array of Bcc recipients</doc>
            <type name="utf8" c:type="const gchar* const*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_cc"
              c:identifier="e_source_mail_composition_set_cc"
              version="3.6">
        <doc xml:space="preserve">Sets the recipients which should automatically be added to the carbon
copy (Cc) list when composing a new mail message.  The recipient strings
should be of the form "Full Name &amp;lt;email-address&amp;gt;".</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
          <parameter name="cc" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">a %NULL-terminated string array of Cc recipients</doc>
            <type name="utf8" c:type="const gchar* const*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_drafts_folder"
              c:identifier="e_source_mail_composition_set_drafts_folder"
              version="3.6">
        <doc xml:space="preserve">Sets the preferred folder for draft messages by an identifier string.
The format of the identifier string is defined by the client application.

The internal copy of @drafts_folder is automatically stripped of
leading and trailing whitespace.  If the resulting string is empty,
%NULL is set instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
          <parameter name="drafts_folder"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">an identifier for the preferred drafts folder, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sign_imip"
              c:identifier="e_source_mail_composition_set_sign_imip"
              version="3.6">
        <doc xml:space="preserve">Sets whether outgoing iMIP messages such as meeting requests should
also be signed.  This is primarily intended as a workaround for certain
versions of Microsoft Outlook which can't handle signed iMIP messages.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
          <parameter name="sign_imip" transfer-ownership="none">
            <doc xml:space="preserve">whether outgoing iMIP messages should be signed</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_templates_folder"
              c:identifier="e_source_mail_composition_set_templates_folder"
              version="3.6">
        <doc xml:space="preserve">Sets the preferred folder for message templates by an identifier string.
The format of the identifier string is defined by the client application.

The internal copy of @templates_folder is automatically stripped of
leading and trailing whitespace.  If the resulting string is empty,
%NULL is set instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailComposition</doc>
            <type name="SourceMailComposition"
                  c:type="ESourceMailComposition*"/>
          </instance-parameter>
          <parameter name="templates_folder"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">an identifier for the preferred templates folder, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="bcc"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="cc" writable="1" construct="1" transfer-ownership="none">
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="drafts-folder"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="sign-imip"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="templates-folder"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceMailCompositionPrivate"
              c:type="ESourceMailCompositionPrivate*"/>
      </field>
    </class>
    <record name="SourceMailCompositionClass"
            c:type="ESourceMailCompositionClass"
            glib:is-gtype-struct-for="SourceMailComposition">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceMailCompositionPrivate"
            c:type="ESourceMailCompositionPrivate"
            disguised="1">
    </record>
    <class name="SourceMailIdentity"
           c:symbol-prefix="source_mail_identity"
           c:type="ESourceMailIdentity"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceMailIdentity"
           glib:get-type="e_source_mail_identity_get_type"
           glib:type-struct="SourceMailIdentityClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_address"
              c:identifier="e_source_mail_identity_dup_address"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_identity_get_address().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailIdentity:address</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_name"
              c:identifier="e_source_mail_identity_dup_name"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_identity_get_name().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailIdentity:name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_organization"
              c:identifier="e_source_mail_identity_dup_organization"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_identity_dup_organization().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailIdentity:organization</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_reply_to"
              c:identifier="e_source_mail_identity_dup_reply_to"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_identity_get_reply_to().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailIdentity:reply-to</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_signature_uid"
              c:identifier="e_source_mail_identity_dup_signature_uid"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_identity_get_signature_uid().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailIdentity:signature-uid</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_address"
              c:identifier="e_source_mail_identity_get_address"
              version="3.6">
        <doc xml:space="preserve">Returns the email address for this identity from which to send messages.
This may be an empty string but will never be %NULL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the sender's email address</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name"
              c:identifier="e_source_mail_identity_get_name"
              version="3.6">
        <doc xml:space="preserve">Returns the sender's name for this identity.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the sender's name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_organization"
              c:identifier="e_source_mail_identity_get_organization"
              version="3.6">
        <doc xml:space="preserve">Returns the sender's organization for this identity.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the sender's organization</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_reply_to"
              c:identifier="e_source_mail_identity_get_reply_to"
              version="3.6">
        <doc xml:space="preserve">Returns the email address for this identity to which recipients should
send replies.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the sender's reply-to address</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_signature_uid"
              c:identifier="e_source_mail_identity_get_signature_uid"
              version="3.6">
        <doc xml:space="preserve">Returns the #ESource:uid of an #ESource describing a mail signature.

If the user does not want to use a signature for this identity, the
convention is to set the #ESourceMailIdentity:signature-uid property
to "none".</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the sender's signature ID, or "none"</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_address"
              c:identifier="e_source_mail_identity_set_address"
              version="3.6">
        <doc xml:space="preserve">Sets the email address for this identity from which to send messages.

The internal copy of @address is automatically stripped of leading and
trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
          <parameter name="address" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">the sender's email address, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name"
              c:identifier="e_source_mail_identity_set_name"
              version="3.6">
        <doc xml:space="preserve">Sets the sender's name for this identity.

The internal copy of @name is automatically stripped of leading and
trailing whitespace.  If @name is %NULL or the resulting string is
empty, the result of g_get_real_name() is set instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">the sender's name, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_organization"
              c:identifier="e_source_mail_identity_set_organization"
              version="3.6">
        <doc xml:space="preserve">Sets the sender's organization for this identity.

The internal copy of @organization is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
          <parameter name="organization"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the sender's organization, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_reply_to"
              c:identifier="e_source_mail_identity_set_reply_to"
              version="3.6">
        <doc xml:space="preserve">Sets the email address for this identity to which recipients should
send replies.

The internal copy of @reply_to is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is
set instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
          <parameter name="reply_to" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">the sender's reply-to address, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_signature_uid"
              c:identifier="e_source_mail_identity_set_signature_uid"
              version="3.6">
        <doc xml:space="preserve">Sets the #ESource:uid of an #ESource describing a mail signature.

If the user does not want to use a signature for this identity, the
convention is to set the #ESourceMailIdentity:signature-uid property
to "none".  In keeping with that convention, the property will be set
to "none" if @signature is %NULL or an empty string.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailIdentity</doc>
            <type name="SourceMailIdentity" c:type="ESourceMailIdentity*"/>
          </instance-parameter>
          <parameter name="signature_uid"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the sender's signature ID, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="address"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="name"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="organization"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="reply-to"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="signature-uid"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceMailIdentityPrivate"
              c:type="ESourceMailIdentityPrivate*"/>
      </field>
    </class>
    <record name="SourceMailIdentityClass"
            c:type="ESourceMailIdentityClass"
            glib:is-gtype-struct-for="SourceMailIdentity">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceMailIdentityPrivate"
            c:type="ESourceMailIdentityPrivate"
            disguised="1">
    </record>
    <class name="SourceMailSignature"
           c:symbol-prefix="source_mail_signature"
           c:type="ESourceMailSignature"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceMailSignature"
           glib:get-type="e_source_mail_signature_get_type"
           glib:type-struct="SourceMailSignatureClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
function below.</doc>
      <method name="dup_mime_type"
              c:identifier="e_source_mail_signature_dup_mime_type"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_signature_get_mime_type().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailSignature:mime-type</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSignature</doc>
            <type name="SourceMailSignature" c:type="ESourceMailSignature*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_file"
              c:identifier="e_source_mail_signature_get_file"
              version="3.6">
        <doc xml:space="preserve">Returns a #GFile instance pointing to the signature file for @extension.
The signature file may be a regular file containing the static signature
content, or it may be a symbolic link to an executable file that produces
the signature content.

e_source_mail_signature_load() uses this to load the signature content.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">a #GFile</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSignature</doc>
            <type name="SourceMailSignature" c:type="ESourceMailSignature*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_mime_type"
              c:identifier="e_source_mail_signature_get_mime_type"
              version="3.6">
        <doc xml:space="preserve">Returns the MIME type of the signature content for @extension, or %NULL
if it has not yet been determined.

e_source_mail_signature_load() sets this automatically if the MIME type
has not yet been determined.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the MIME type of the signature content, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSignature</doc>
            <type name="SourceMailSignature" c:type="ESourceMailSignature*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_mime_type"
              c:identifier="e_source_mail_signature_set_mime_type"
              version="3.6">
        <doc xml:space="preserve">Sets the MIME type of the signature content for @extension.

e_source_mail_signature_load() sets this automatically if the MIME type
has not yet been determined.

The internal copy of @mime_type is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is
set instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSignature</doc>
            <type name="SourceMailSignature" c:type="ESourceMailSignature*"/>
          </instance-parameter>
          <parameter name="mime_type" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">a MIME type, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="file" transfer-ownership="none">
        <type name="Gio.File"/>
      </property>
      <property name="mime-type"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceMailSignaturePrivate"
              c:type="ESourceMailSignaturePrivate*"/>
      </field>
    </class>
    <record name="SourceMailSignatureClass"
            c:type="ESourceMailSignatureClass"
            glib:is-gtype-struct-for="SourceMailSignature">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceMailSignaturePrivate"
            c:type="ESourceMailSignaturePrivate"
            disguised="1">
    </record>
    <class name="SourceMailSubmission"
           c:symbol-prefix="source_mail_submission"
           c:type="ESourceMailSubmission"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceMailSubmission"
           glib:get-type="e_source_mail_submission_get_type"
           glib:type-struct="SourceMailSubmissionClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
function below.</doc>
      <method name="dup_sent_folder"
              c:identifier="e_source_mail_submission_dup_sent_folder"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_submission_get_sent_folder().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailSubmission:sent-folder</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSubmission</doc>
            <type name="SourceMailSubmission" c:type="ESourceMailSubmission*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_transport_uid"
              c:identifier="e_source_mail_submission_dup_transport_uid"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_submission_get_transport_uid().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceMailSubmission:transport-uid</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSubmission</doc>
            <type name="SourceMailSubmission" c:type="ESourceMailSubmission*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_replies_to_origin_folder"
              c:identifier="e_source_mail_submission_get_replies_to_origin_folder"
              version="3.8">
        <doc xml:space="preserve">Returns whether save replies in the folder of the message
being replied to, instead of the Sent folder.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether save replies in the folder of the message being replied to</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSubmission</doc>
            <type name="SourceMailSubmission" c:type="ESourceMailSubmission*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_sent_folder"
              c:identifier="e_source_mail_submission_get_sent_folder"
              version="3.6">
        <doc xml:space="preserve">Returns a string identifying the preferred folder for sent messages.
The format of the identifier string is defined by the client application.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an identifier for the preferred sent folder</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSubmission</doc>
            <type name="SourceMailSubmission" c:type="ESourceMailSubmission*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_transport_uid"
              c:identifier="e_source_mail_submission_get_transport_uid"
              version="3.6">
        <doc xml:space="preserve">Returns the #ESource:uid of the #ESource that describes the mail
transport to be used for outgoing messages.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the mail transport #ESource:uid</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSubmission</doc>
            <type name="SourceMailSubmission" c:type="ESourceMailSubmission*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_replies_to_origin_folder"
              c:identifier="e_source_mail_submission_set_replies_to_origin_folder"
              version="3.8">
        <doc xml:space="preserve">Sets whether save replies in the folder of the message
being replied to, instead of the Sent folder.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSubmission</doc>
            <type name="SourceMailSubmission" c:type="ESourceMailSubmission*"/>
          </instance-parameter>
          <parameter name="replies_to_origin_folder" transfer-ownership="none">
            <doc xml:space="preserve">new value</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sent_folder"
              c:identifier="e_source_mail_submission_set_sent_folder"
              version="3.6">
        <doc xml:space="preserve">Sets the preferred folder for sent messages by an identifier string.
The format of the identifier string is defined by the client application.

The internal copy of @sent_folder is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSubmission</doc>
            <type name="SourceMailSubmission" c:type="ESourceMailSubmission*"/>
          </instance-parameter>
          <parameter name="sent_folder"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">an identifier for the preferred sent folder, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_transport_uid"
              c:identifier="e_source_mail_submission_set_transport_uid"
              version="3.6">
        <doc xml:space="preserve">Sets the #ESource:uid of the #ESource that describes the mail
transport to be used for outgoing messages.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceMailSubmission</doc>
            <type name="SourceMailSubmission" c:type="ESourceMailSubmission*"/>
          </instance-parameter>
          <parameter name="transport_uid"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the mail transport #ESource:uid, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="replies-to-origin-folder"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="sent-folder"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="transport-uid"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceMailSubmissionPrivate"
              c:type="ESourceMailSubmissionPrivate*"/>
      </field>
    </class>
    <record name="SourceMailSubmissionClass"
            c:type="ESourceMailSubmissionClass"
            glib:is-gtype-struct-for="SourceMailSubmission">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceMailSubmissionPrivate"
            c:type="ESourceMailSubmissionPrivate"
            disguised="1">
    </record>
    <class name="SourceMailTransport"
           c:symbol-prefix="source_mail_transport"
           c:type="ESourceMailTransport"
           version="3.6"
           parent="SourceBackend"
           glib:type-name="ESourceMailTransport"
           glib:get-type="e_source_mail_transport_get_type"
           glib:type-struct="SourceMailTransportClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <field name="parent">
        <type name="SourceBackend" c:type="ESourceBackend"/>
      </field>
      <field name="priv">
        <type name="SourceMailTransportPrivate"
              c:type="ESourceMailTransportPrivate*"/>
      </field>
    </class>
    <record name="SourceMailTransportClass"
            c:type="ESourceMailTransportClass"
            glib:is-gtype-struct-for="SourceMailTransport">
      <field name="parent_class">
        <type name="SourceBackendClass" c:type="ESourceBackendClass"/>
      </field>
    </record>
    <record name="SourceMailTransportPrivate"
            c:type="ESourceMailTransportPrivate"
            disguised="1">
    </record>
    <class name="SourceMemoList"
           c:symbol-prefix="source_memo_list"
           c:type="ESourceMemoList"
           version="3.6"
           parent="SourceSelectable"
           glib:type-name="ESourceMemoList"
           glib:get-type="e_source_memo_list_get_type"
           glib:type-struct="SourceMemoListClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <field name="parent">
        <type name="SourceSelectable" c:type="ESourceSelectable"/>
      </field>
      <field name="priv">
        <type name="SourceMemoListPrivate" c:type="ESourceMemoListPrivate*"/>
      </field>
    </class>
    <record name="SourceMemoListClass"
            c:type="ESourceMemoListClass"
            glib:is-gtype-struct-for="SourceMemoList">
      <field name="parent_class">
        <type name="SourceSelectableClass" c:type="ESourceSelectableClass"/>
      </field>
    </record>
    <record name="SourceMemoListPrivate"
            c:type="ESourceMemoListPrivate"
            disguised="1">
    </record>
    <class name="SourceOffline"
           c:symbol-prefix="source_offline"
           c:type="ESourceOffline"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceOffline"
           glib:get-type="e_source_offline_get_type"
           glib:type-struct="SourceOfflineClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="get_stay_synchronized"
              c:identifier="e_source_offline_get_stay_synchronized"
              version="3.6">
        <doc xml:space="preserve">Returns whether data from a remote server should be cached locally
for viewing while offline.  Backends are responsible for implementing
such caching.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether data should be cached for offline</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOffline</doc>
            <type name="SourceOffline" c:type="ESourceOffline*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_stay_synchronized"
              c:identifier="e_source_offline_set_stay_synchronized"
              version="3.6">
        <doc xml:space="preserve">Sets whether data from a remote server should be cached locally for
viewing while offline.  Backends are responsible for implementing
such caching.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOffline</doc>
            <type name="SourceOffline" c:type="ESourceOffline*"/>
          </instance-parameter>
          <parameter name="stay_synchronized" transfer-ownership="none">
            <doc xml:space="preserve">whether data should be cached for offline</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="stay-synchronized"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceOfflinePrivate" c:type="ESourceOfflinePrivate*"/>
      </field>
    </class>
    <record name="SourceOfflineClass"
            c:type="ESourceOfflineClass"
            glib:is-gtype-struct-for="SourceOffline">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceOfflinePrivate"
            c:type="ESourceOfflinePrivate"
            disguised="1">
    </record>
    <class name="SourceOpenPGP"
           c:symbol-prefix="source_openpgp"
           c:type="ESourceOpenPGP"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceOpenPGP"
           glib:get-type="e_source_openpgp_get_type"
           glib:type-struct="SourceOpenPGPClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_key_id"
              c:identifier="e_source_openpgp_dup_key_id"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_openpgp_get_key_id().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceOpenPGP:key-id</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_signing_algorithm"
              c:identifier="e_source_openpgp_dup_signing_algorithm"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_openpgp_get_signing_algorithm().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceOpenPGP:signing-algorithm</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_always_trust"
              c:identifier="e_source_openpgp_get_always_trust"
              version="3.6">
        <doc xml:space="preserve">Returns whether to skip key validation and assume that used keys are
always fully trusted.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether used keys are always fully trusted</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_encrypt_to_self"
              c:identifier="e_source_openpgp_get_encrypt_to_self"
              version="3.6">
        <doc xml:space="preserve">Returns whether to "encrypt-to-self" when sending encrypted messages.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether to "encrypt-to-self"</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_key_id"
              c:identifier="e_source_openpgp_get_key_id"
              version="3.6">
        <doc xml:space="preserve">Returns the OpenPGP key ID used to sign and encrypt messages.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the key ID used to sign and encrypt messages</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_sign_by_default"
              c:identifier="e_source_openpgp_get_sign_by_default"
              version="3.6">
        <doc xml:space="preserve">Returns whether to digitally sign outgoing messages by default using
OpenPGP-compliant software such as GNU Privacy Guard (GnuPG).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether to sign outgoing messages by default</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_signing_algorithm"
              c:identifier="e_source_openpgp_get_signing_algorithm"
              version="3.6">
        <doc xml:space="preserve">Returns the name of the hash algorithm used to digitally sign outgoing
messages.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the signing algorithm for outgoing messages</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_always_trust"
              c:identifier="e_source_openpgp_set_always_trust"
              version="3.6">
        <doc xml:space="preserve">Sets whether to skip key validation and assume that used keys are
always fully trusted.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
          <parameter name="always_trust" transfer-ownership="none">
            <doc xml:space="preserve">whether used keys are always fully trusted</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_encrypt_to_self"
              c:identifier="e_source_openpgp_set_encrypt_to_self"
              version="3.6">
        <doc xml:space="preserve">Sets whether to "encrypt-to-self" when sending encrypted messages.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
          <parameter name="encrypt_to_self" transfer-ownership="none">
            <doc xml:space="preserve">whether to "encrypt-to-self"</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_key_id"
              c:identifier="e_source_openpgp_set_key_id"
              version="3.6">
        <doc xml:space="preserve">Sets the OpenPGP key ID used to sign and encrypt messages.

The internal copy of @key_id is automatically stripped of leading and
trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
          <parameter name="key_id" transfer-ownership="none">
            <doc xml:space="preserve">the key ID used to sign and encrypt messages</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sign_by_default"
              c:identifier="e_source_openpgp_set_sign_by_default"
              version="3.6">
        <doc xml:space="preserve">Sets whether to digitally sign outgoing messages by default using
OpenPGP-compliant software such as GNU Privacy Guard (GnuPG).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
          <parameter name="sign_by_default" transfer-ownership="none">
            <doc xml:space="preserve">whether to sign outgoing messages by default</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_signing_algorithm"
              c:identifier="e_source_openpgp_set_signing_algorithm"
              version="3.6">
        <doc xml:space="preserve">Sets the name of the hash algorithm used to digitally sign outgoing
messages.

The internal copy of @signing_algorithm is automatically stripped of
leading and trailing whitespace.  If the resulting string is empty,
%NULL is set instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceOpenPGP</doc>
            <type name="SourceOpenPGP" c:type="ESourceOpenPGP*"/>
          </instance-parameter>
          <parameter name="signing_algorithm" transfer-ownership="none">
            <doc xml:space="preserve">the signing algorithm for outgoing messages</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="always-trust"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="encrypt-to-self"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="key-id"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="sign-by-default"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="signing-algorithm"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceOpenPGPPrivate" c:type="ESourceOpenPGPPrivate*"/>
      </field>
    </class>
    <record name="SourceOpenPGPClass"
            c:type="ESourceOpenPGPClass"
            glib:is-gtype-struct-for="SourceOpenPGP">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceOpenPGPPrivate"
            c:type="ESourceOpenPGPPrivate"
            disguised="1">
    </record>
    <record name="SourcePrivate" c:type="ESourcePrivate" disguised="1">
    </record>
    <class name="SourceRefresh"
           c:symbol-prefix="source_refresh"
           c:type="ESourceRefresh"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceRefresh"
           glib:get-type="e_source_refresh_get_type"
           glib:type-struct="SourceRefreshClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="get_enabled"
              c:identifier="e_source_refresh_get_enabled"
              version="3.6">
        <doc xml:space="preserve">Returns whether to periodically fetch updates from a remote server.

The refresh interval is determined by the #ESourceRefresh:interval-minutes
property.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether periodic refresh is enabled</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRefresh</doc>
            <type name="SourceRefresh" c:type="ESourceRefresh*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_interval_minutes"
              c:identifier="e_source_refresh_get_interval_minutes"
              version="3.6">
        <doc xml:space="preserve">Returns the interval for fetching updates from a remote server.

Note this value is only effective when the #ESourceRefresh:enabled
property is %TRUE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the interval in minutes</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRefresh</doc>
            <type name="SourceRefresh" c:type="ESourceRefresh*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_enabled"
              c:identifier="e_source_refresh_set_enabled"
              version="3.6">
        <doc xml:space="preserve">Sets whether to periodically fetch updates from a remote server.

The refresh interval is determined by the #ESourceRefresh:interval-minutes
property.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRefresh</doc>
            <type name="SourceRefresh" c:type="ESourceRefresh*"/>
          </instance-parameter>
          <parameter name="enabled" transfer-ownership="none">
            <doc xml:space="preserve">whether to enable periodic refresh</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_interval_minutes"
              c:identifier="e_source_refresh_set_interval_minutes"
              version="3.6">
        <doc xml:space="preserve">Sets the interval for fetching updates from a remote server.

Note this value is only effective when the #ESourceRefresh:enabled
property is %TRUE.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRefresh</doc>
            <type name="SourceRefresh" c:type="ESourceRefresh*"/>
          </instance-parameter>
          <parameter name="interval_minutes" transfer-ownership="none">
            <doc xml:space="preserve">the interval in minutes</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <property name="enabled"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="interval-minutes"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceRefreshPrivate" c:type="ESourceRefreshPrivate*"/>
      </field>
    </class>
    <record name="SourceRefreshClass"
            c:type="ESourceRefreshClass"
            glib:is-gtype-struct-for="SourceRefresh">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <callback name="SourceRefreshFunc"
              c:type="ESourceRefreshFunc"
              version="3.6">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="source" transfer-ownership="none">
          <doc xml:space="preserve">an #ESource</doc>
          <type name="Source" c:type="ESource*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="1">
          <doc xml:space="preserve">user data provided to the callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <record name="SourceRefreshPrivate"
            c:type="ESourceRefreshPrivate"
            disguised="1">
    </record>
    <class name="SourceRegistry"
           c:symbol-prefix="source_registry"
           c:type="ESourceRegistry"
           version="3.6"
           parent="GObject.Object"
           glib:type-name="ESourceRegistry"
           glib:get-type="e_source_registry_get_type"
           glib:type-struct="SourceRegistryClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <implements name="Gio.AsyncInitable"/>
      <implements name="Gio.Initable"/>
      <constructor name="new_finish"
                   c:identifier="e_source_registry_new_finish"
                   version="3.6"
                   throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_registry_new_finish().
If an error occurs in connecting to the D-Bus service, the function
sets @error and returns %NULL.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #ESourceRegistry, or %NULL</doc>
          <type name="SourceRegistry" c:type="ESourceRegistry*"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_sync"
                   c:identifier="e_source_registry_new_sync"
                   version="3.6"
                   throws="1">
        <doc xml:space="preserve">Creates a new #ESourceRegistry front-end for the registry D-Bus service.
If an error occurs in connecting to the D-Bus service, the function sets
@error and returns %NULL.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #ESourceRegistry, or %NULL</doc>
          <type name="SourceRegistry" c:type="ESourceRegistry*"/>
        </return-value>
        <parameters>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="free_display_tree"
                c:identifier="e_source_registry_free_display_tree"
                version="3.6">
        <doc xml:space="preserve">Convenience function to free a #GNode tree of registered
sources created by e_source_registry_build_display_tree().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="display_tree" transfer-ownership="none">
            <doc xml:space="preserve">a tree of sources, arranged for display</doc>
            <type name="GLib.Node" c:type="GNode*"/>
          </parameter>
        </parameters>
      </function>
      <function name="new" c:identifier="e_source_registry_new" version="3.6">
        <doc xml:space="preserve">Asynchronously creates a new #ESourceRegistry front-end for the registry
D-Bus service.

When the operation is finished, @callback will be called.  You can then
call e_source_registry_new_finish() to get the result of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="2">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="source_added">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="source_changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="source_disabled">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="source_enabled">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="source_removed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="authenticate"
              c:identifier="e_source_registry_authenticate"
              version="3.6">
        <doc xml:space="preserve">Asynchronously authenticates @source, using @auth to handle the
authentication attempts.  The operation loops until authentication
is successful or the user aborts further authentication attempts.

Note that @source need not have a #GDBusObject, which means this
function can test authentication on a scratch #ESource.

When the operation is finished, @callback will be called.  You can then
call e_source_registry_authenticate_finish() to get the result of the
operation.

Only backend implementations and data source editors should call this
function.  The intent is for basic client applications to not have to
deal with authentication at all.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="auth" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthenticator</doc>
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="authenticate_finish"
              c:identifier="e_source_registry_authenticate_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_registry_authenticate().
If an error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="authenticate_sync"
              c:identifier="e_source_registry_authenticate_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Authenticates @source, using @auth to handle the authentication
attempts.  The operation loops until authentication is successful or
the user aborts further authentication attempts.  If an error occurs,
the function will set @error and return %FALSE.

Note that @source need not have a #GDBusObject, which means this
function can test authentication on a scratch #ESource.

Only backend implementations and data source editors should call this
function.  The intent is for basic client applications to not have to
deal with authentication at all.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="auth" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceAuthenticator</doc>
            <type name="SourceAuthenticator" c:type="ESourceAuthenticator*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="build_display_tree"
              c:identifier="e_source_registry_build_display_tree"
              version="3.6"
              introspectable="0">
        <doc xml:space="preserve">Returns a single #GNode tree of registered sources that can be used to
populate a #GtkTreeModel.  (The root #GNode is just an empty placeholder.)

Similar to e_source_registry_list_sources(), an @extension_name can be
given to restrict the tree to sources having that extension name.  Parents
of matched sources are included in the tree regardless of whether they have
an extension named @extension_name.

Disabled leaf nodes are automatically excluded from the #GNode tree.

The sources returned in the tree are referenced for thread-safety.
They must each be unreferenced with g_object_unref() when finished
with them.  Free the returned tree itself with g_node_destroy().
For convenience, e_source_registry_free_display_tree() does all
that in one step.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a tree of sources, arranged for display</doc>
          <type name="GLib.Node" c:type="GNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="extension_name"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">an extension name, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="check_enabled"
              c:identifier="e_source_registry_check_enabled"
              version="3.8">
        <doc xml:space="preserve">Determines whether @source is "effectively" enabled by examining its
own #ESource:enabled property as well as those of its ancestors in the
#ESource hierarchy.  If all examined #ESource:enabled properties are
%TRUE, then the function returns %TRUE.  If any are %FALSE, then the
function returns %FALSE.

Use this function instead of e_source_get_enabled() to determine
things like whether to display an #ESource in a user interface or
whether to act on the data set described by the #ESource.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether @source is "effectively" enabled</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="commit_source"
              c:identifier="e_source_registry_commit_source"
              version="3.6">
        <doc xml:space="preserve">See e_source_registry_commit_source_sync() for details.

When the operation is finished, @callback will be called.  You can then
call e_source_registry_commit_source_finish() to get the result of the
operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource with changes to commit</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="commit_source_finish"
              c:identifier="e_source_registry_commit_source_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_registry_commit_source().

If an error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="commit_source_sync"
              c:identifier="e_source_registry_commit_source_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">This is a convenience function intended for use with graphical
#ESource editors.  Call this function when the user is finished
making changes to @source.

If @source has a #GDBusObject, its contents are submitted to the D-Bus
service through e_source_write_sync().

If @source does NOT have a #GDBusObject (implying it's a scratch
#ESource), its contents are submitted to the D-Bus service through
either e_source_remote_create_sync() if @source is to be a collection
member, or e_source_registry_create_sources_sync() if @source to be an
independent data source.

If an error occurs, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource with changes to commit</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_sources"
              c:identifier="e_source_registry_create_sources"
              version="3.6">
        <doc xml:space="preserve">Asynchronously requests the D-Bus service create new key files for each
#ESource in @list_of_sources.  Each list element must be a scratch
#ESource with no #GDBusObject.

When the operation is finished, @callback will be called.  You can then
call e_source_registry_create_sources_finish() to get the result of the
operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="list_of_sources" transfer-ownership="none">
            <doc xml:space="preserve">a list of #ESource instances with no #GDBusObject</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="Source"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_sources_finish"
              c:identifier="e_source_registry_create_sources_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_registry_create_sources().

If an error occurred, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_sources_sync"
              c:identifier="e_source_registry_create_sources_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve">Requests the D-Bus service create new key files for each #ESource in
@list_of_sources.  Each list element must be a scratch #ESource with
no #GDBusObject.

If an error occurs, the function will set @error and return %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="list_of_sources" transfer-ownership="none">
            <doc xml:space="preserve">a list of #ESource instances with no #GDBusObject</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="Source"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="debug_dump"
              c:identifier="e_source_registry_debug_dump"
              version="3.6">
        <doc xml:space="preserve">Handy debugging function that uses e_source_registry_build_display_tree()
to print a tree of registered sources to standard output.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="extension_name"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">an extension name, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dup_unique_display_name"
              c:identifier="e_source_registry_dup_unique_display_name"
              version="3.8">
        <doc xml:space="preserve">Compares @source's #ESource:display-name against other sources having
an #ESourceExtension named @extension_name, if given, or else against
all other sources in the @registry.

If @sources's #ESource:display-name is unique among these other sources,
the function will return the #ESource:display-name verbatim.  Otherwise
the function will construct a string that includes the @sources's own
#ESource:display-name as well as those of its ancestors.

The function's return value is intended to be used in messages shown to
the user to help clarify which source is being referred to.  It assumes
@source's #ESource:display-name is at least unique among its siblings.

Free the returned string with g_free() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a unique display name for @source</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="extension_name"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">an extension name, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_extension"
              c:identifier="e_source_registry_find_extension"
              version="3.6">
        <doc xml:space="preserve">Examines @source and its ancestors and returns the "deepest" #ESource
having an #ESourceExtension with the given @extension_name.  If neither
@source nor any of its ancestors have such an extension, the function
returns %NULL.

This function is useful in cases when an #ESourceExtension is meant to
apply to both the #ESource it belongs to and the #ESource's descendants.

A common example is the #ESourceCollection extension, where descendants
of an #ESource having an #ESourceCollection extension are implied to be
members of that collection.  In that example, this function can be used
to test whether @source is a member of a collection.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.

Note the function returns the #ESource containing the #ESourceExtension
instead of the #ESourceExtension itself because extension instances are
not to be referenced directly (see e_source_get_extension()).</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #ESource, or %NULL if no match was found</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="extension_name" transfer-ownership="none">
            <doc xml:space="preserve">the extension name to find</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_enabled"
              c:identifier="e_source_registry_list_enabled"
              version="3.10">
        <doc xml:space="preserve">Similar to e_source_registry_list_sources(), but returns only enabled
sources according to e_source_registry_check_enabled().

The sources returned in the list are referenced for thread-safety.
They must each be unreferenced with g_object_unref() when finished
with them.  Free the returned list itself with g_list_free().

An easy way to free the list properly in one step is as follows:

|[
  g_list_free_full (list, g_object_unref);
]|</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a sorted list of sources</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Source"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="extension_name"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">an extension name, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_sources"
              c:identifier="e_source_registry_list_sources"
              version="3.6">
        <doc xml:space="preserve">Returns a list of registered sources, sorted by display name.  If
@extension_name is given, restrict the list to sources having that
extension name.

The sources returned in the list are referenced for thread-safety.
They must each be unreferenced with g_object_unref() when finished
with them.  Free the returned list itself with g_list_free().

An easy way to free the list properly in one step is as follows:

|[
  g_list_free_full (list, g_object_unref);
]|</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a sorted list of sources</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Source"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="extension_name"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">an extension name, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_builtin_address_book"
              c:identifier="e_source_registry_ref_builtin_address_book"
              version="3.6">
        <doc xml:space="preserve">Returns the built-in address book #ESource.

This #ESource is always present and makes for a safe fallback.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the built-in address book #ESource</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_builtin_calendar"
              c:identifier="e_source_registry_ref_builtin_calendar"
              version="3.6">
        <doc xml:space="preserve">Returns the built-in calendar #ESource.

This #ESource is always present and makes for a safe fallback.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the built-in calendar #ESource</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_builtin_mail_account"
              c:identifier="e_source_registry_ref_builtin_mail_account"
              version="3.6">
        <doc xml:space="preserve">Returns the built-in mail account #ESource.

This #ESource is always present and makes for a safe fallback.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the built-in mail account #ESource</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_builtin_memo_list"
              c:identifier="e_source_registry_ref_builtin_memo_list"
              version="3.6">
        <doc xml:space="preserve">Returns the built-in memo list #ESource.

This #ESource is always present and makes for a safe fallback.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the built-in memo list #ESource</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_builtin_task_list"
              c:identifier="e_source_registry_ref_builtin_task_list"
              version="3.6">
        <doc xml:space="preserve">Returns the built-in task list #ESource.

This #ESource is always present and makes for a safe fallback.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the built-in task list #ESource</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_default_address_book"
              c:identifier="e_source_registry_ref_default_address_book"
              version="3.6">
        <doc xml:space="preserve">Returns the #ESource most recently passed to
e_source_registry_set_default_address_book() either in this session
or a previous session, or else falls back to the built-in address book.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the default address book #ESource</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_default_calendar"
              c:identifier="e_source_registry_ref_default_calendar"
              version="3.6">
        <doc xml:space="preserve">Returns the #ESource most recently passed to
e_source_registry_set_default_calendar() either in this session
or a previous session, or else falls back to the built-in calendar.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the default calendar #ESource</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_default_for_extension_name"
              c:identifier="e_source_registry_ref_default_for_extension_name"
              version="3.6">
        <doc xml:space="preserve">This is a convenience function to return a default #ESource based on
@extension_name.  This only works with a subset of extension names.

If @extension_name is #E_SOURCE_EXTENSION_ADDRESS_BOOK, the function
returns the current default address book, or else falls back to the
built-in address book.

If @extension_name is #E_SOURCE_EXTENSION_CALENDAR, the function returns
the current default calendar, or else falls back to the built-in calendar.

If @extension_name is #E_SOURCE_EXTENSION_MAIL_ACCOUNT, the function
returns the current default mail account, or else falls back to the
built-in mail account.

If @extension_name is #E_SOURCE_EXTENSION_MAIL_IDENTITY, the function
returns the current default mail identity, or else falls back to the
mail identity named by the current default mail account.

If @extension_name is #E_SOURCE_EXTENSION_MEMO_LIST, the function returns
the current default memo list, or else falls back to the built-in memo list.

If @extension_name is #E_SOURCE_EXTENSION_TASK_LIST, the function returns
the current default task list, or else falls back to the built-in task list.

For all other values of @extension_name, the function returns %NULL.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the default #ESource based on @extension_name</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="extension_name" transfer-ownership="none">
            <doc xml:space="preserve">an extension_name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_default_mail_account"
              c:identifier="e_source_registry_ref_default_mail_account"
              version="3.6">
        <doc xml:space="preserve">Returns the #ESource most recently passed to
e_source_registry_set_default_mail_account() either in this session
or a previous session, or else falls back to the built-in mail account.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the default mail account #ESource</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_default_mail_identity"
              c:identifier="e_source_registry_ref_default_mail_identity"
              version="3.6">
        <doc xml:space="preserve">Returns the #ESource most recently passed to
e_source_registry_set_default_mail_identity() either in this session
or a previous session, or else falls back to the mail identity named
by the default mail account.  If even that fails it returns any mail
identity from @registry, or %NULL if there are none.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the default mail identity #ESource, or %NULL</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_default_memo_list"
              c:identifier="e_source_registry_ref_default_memo_list"
              version="3.6">
        <doc xml:space="preserve">Returns the #ESource most recently passed to
e_source_registry_set_default_memo_list() either in this session
or a previous session, or else falls back to the built-in memo list.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the default memo list #ESource</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_default_task_list"
              c:identifier="e_source_registry_ref_default_task_list"
              version="3.6">
        <doc xml:space="preserve">Returns the #ESource most recently passed to
e_source_registry_set_default_task_list() either in this session
or a previous session, or else falls back to the built-in task list.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the default task list #ESource</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_source"
              c:identifier="e_source_registry_ref_source"
              version="3.6">
        <doc xml:space="preserve">Looks up an #ESource in @registry by its unique identifier string.

The returned #ESource is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #ESource, or %NULL if no match was found</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve">a unique identifier string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_default_address_book"
              c:identifier="e_source_registry_set_default_address_book"
              version="3.6">
        <doc xml:space="preserve">Sets @default_source as the default address book.  If @default_source
is %NULL, the default address book is reset to the built-in address book.
This setting will persist across sessions until changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="default_source"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">an address book #ESource, or %NULL</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_default_calendar"
              c:identifier="e_source_registry_set_default_calendar"
              version="3.6">
        <doc xml:space="preserve">Sets @default_source as the default calendar.  If @default_source
is %NULL, the default calendar is reset to the built-in calendar.
This setting will persist across sessions until changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="default_source"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a calendar #ESource, or %NULL</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_default_for_extension_name"
              c:identifier="e_source_registry_set_default_for_extension_name"
              version="3.6">
        <doc xml:space="preserve">This is a convenience function to set a default #ESource based on
@extension_name.  This only works with a subset of extension names.

If @extension_name is #E_SOURCE_EXTENSION_ADDRESS_BOOK, the function
sets @default_source as the default address book.  If @default_source
is %NULL, the default address book is reset to the built-in address book.

If @extension_name is #E_SOURCE_EXTENSION_CALENDAR, the function sets
@default_source as the default calendar.  If @default_source is %NULL,
the default calendar is reset to the built-in calendar.

If @extension_name is #E_SOURCE_EXTENSION_MAIL_ACCOUNT, the function
sets @default_source as the default mail account.  If @default_source
is %NULL, the default mail account is reset to the built-in mail account.

If @extension_name is #E_SOURCE_EXTENSION_MAIL_IDENTITY, the function
sets @default_source as the default mail identity.  If @default_source
is %NULL, the next request for the default mail identity will return
the mail identity named by the default mail account.

If @extension_name is #E_SOURCE_EXTENSION_MEMO_LIST, the function sets
@default_source as the default memo list.  If @default_source is %NULL,
the default memo list is reset to the built-in memo list.

If @extension_name is #E_SOURCE_EXTENSION_TASK_LIST, the function sets
@default_source as the default task list.  If @default_source is %NULL,
the default task list is reset to the built-in task list.

For all other values of @extension_name, the function does nothing.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="extension_name" transfer-ownership="none">
            <doc xml:space="preserve">an extension name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="default_source"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">an #ESource, or %NULL</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_default_mail_account"
              c:identifier="e_source_registry_set_default_mail_account"
              version="3.6">
        <doc xml:space="preserve">Sets @default_source as the default mail account.  If @default_source
is %NULL, the default mail account is reset to the built-in mail account.
This setting will persist across sessions until changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="default_source"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a mail account #ESource, or %NULL</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_default_mail_identity"
              c:identifier="e_source_registry_set_default_mail_identity"
              version="3.6">
        <doc xml:space="preserve">Sets @default_source as the default mail identity.  If @default_source
is %NULL, the next request for the default mail identity will use the
fallbacks described in e_source_registry_ref_default_mail_identity().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="default_source"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a mail identity #ESource, or %NULL</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_default_memo_list"
              c:identifier="e_source_registry_set_default_memo_list"
              version="3.6">
        <doc xml:space="preserve">Sets @default_source as the default memo list.  If @default_source
is %NULL, the default memo list is reset to the built-in memo list.
This setting will persist across sessions until changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="default_source"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a memo list #ESource, or %NULL</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_default_task_list"
              c:identifier="e_source_registry_set_default_task_list"
              version="3.6">
        <doc xml:space="preserve">Sets @default_source as the default task list.  If @default_source
is %NULL, the default task list is reset to the built-in task list.
This setting will persist across sessions until changed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </instance-parameter>
          <parameter name="default_source"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">a task list #ESource, or %NULL</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <property name="default-address-book"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The default address book #ESource.</doc>
        <type name="Source"/>
      </property>
      <property name="default-calendar" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">The default calendar #ESource.</doc>
        <type name="Source"/>
      </property>
      <property name="default-mail-account"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The default mail account #ESource.</doc>
        <type name="Source"/>
      </property>
      <property name="default-mail-identity"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The default mail identity #ESource.</doc>
        <type name="Source"/>
      </property>
      <property name="default-memo-list"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The default memo list #ESource.</doc>
        <type name="Source"/>
      </property>
      <property name="default-task-list"
                writable="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The default task list #ESource.</doc>
        <type name="Source"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="SourceRegistryPrivate" c:type="ESourceRegistryPrivate*"/>
      </field>
      <glib:signal name="source-added" when="last">
        <doc xml:space="preserve">Emitted when an #ESource is added to @registry.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">the newly-added #ESource</doc>
            <type name="Source"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="source-changed" when="last">
        <doc xml:space="preserve">Emitted when an #ESource registered with @registry emits
its #ESource::changed signal.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">the #ESource that changed</doc>
            <type name="Source"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="source-disabled" when="last">
        <doc xml:space="preserve">Emitted when an #ESource #ESource:enabled property becomes %FALSE.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">the #ESource that got disabled</doc>
            <type name="Source"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="source-enabled" when="last">
        <doc xml:space="preserve">Emitted when an #ESource #ESource:enabled property becomes %TRUE.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">the #ESource that got enabled</doc>
            <type name="Source"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="source-removed" when="last">
        <doc xml:space="preserve">Emitted when an #ESource is removed from @registry.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">the #ESource that got removed</doc>
            <type name="Source"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="SourceRegistryClass"
            c:type="ESourceRegistryClass"
            glib:is-gtype-struct-for="SourceRegistry">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="source_added">
        <callback name="source_added">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="registry" transfer-ownership="none">
              <type name="SourceRegistry" c:type="ESourceRegistry*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="source_changed">
        <callback name="source_changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="registry" transfer-ownership="none">
              <type name="SourceRegistry" c:type="ESourceRegistry*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="source_removed">
        <callback name="source_removed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="registry" transfer-ownership="none">
              <type name="SourceRegistry" c:type="ESourceRegistry*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="source_enabled">
        <callback name="source_enabled">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="registry" transfer-ownership="none">
              <type name="SourceRegistry" c:type="ESourceRegistry*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="source_disabled">
        <callback name="source_disabled">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="registry" transfer-ownership="none">
              <type name="SourceRegistry" c:type="ESourceRegistry*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="SourceRegistryPrivate"
            c:type="ESourceRegistryPrivate"
            disguised="1">
    </record>
    <class name="SourceResource"
           c:symbol-prefix="source_resource"
           c:type="ESourceResource"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceResource"
           glib:get-type="e_source_resource_get_type"
           glib:type-struct="SourceResourceClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_identity"
              c:identifier="e_source_resource_dup_identity"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_resource_get_identity().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceResource:identity</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceResource</doc>
            <type name="SourceResource" c:type="ESourceResource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_identity"
              c:identifier="e_source_resource_get_identity"
              version="3.6">
        <doc xml:space="preserve">Returns the server-assigned identity of the remote resource associated
with the #ESource to which @extension belongs.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the identity of a remote resource</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceResource</doc>
            <type name="SourceResource" c:type="ESourceResource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_identity"
              c:identifier="e_source_resource_set_identity"
              version="3.6">
        <doc xml:space="preserve">Sets the server-assigned identity of the remote resource associated with
the #ESource to which @extension belongs.

The internal copy of @identity is automatically stripped of leading and
trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceResource</doc>
            <type name="SourceResource" c:type="ESourceResource*"/>
          </instance-parameter>
          <parameter name="identity" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">the identity of a remote resource</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="identity"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceResourcePrivate" c:type="ESourceResourcePrivate*"/>
      </field>
    </class>
    <record name="SourceResourceClass"
            c:type="ESourceResourceClass"
            glib:is-gtype-struct-for="SourceResource">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceResourcePrivate"
            c:type="ESourceResourcePrivate"
            disguised="1">
    </record>
    <class name="SourceRevisionGuards"
           c:symbol-prefix="source_revision_guards"
           c:type="ESourceRevisionGuards"
           version="3.8"
           parent="SourceExtension"
           glib:type-name="ESourceRevisionGuards"
           glib:get-type="e_source_revision_guards_get_type"
           glib:type-struct="SourceRevisionGuardsClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="get_enabled"
              c:identifier="e_source_revision_guards_get_enabled"
              version="3.8">
        <doc xml:space="preserve">Checks whether revision guards for the given #ESource are enabled.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the revision guards are enabled.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">An #ESourceRevisionGuards</doc>
            <type name="SourceRevisionGuards" c:type="ESourceRevisionGuards*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_enabled"
              c:identifier="e_source_revision_guards_set_enabled"
              version="3.8">
        <doc xml:space="preserve">Enables or disables the revision guards for a given #ESource.

Revision guards are disabled by default.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">An #ESourceRevisionGuards</doc>
            <type name="SourceRevisionGuards" c:type="ESourceRevisionGuards*"/>
          </instance-parameter>
          <parameter name="enabled" transfer-ownership="none">
            <doc xml:space="preserve">Whether to enable or disable the revision guards.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="enabled"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceRevisionGuardsPrivate"
              c:type="ESourceRevisionGuardsPrivate*"/>
      </field>
    </class>
    <record name="SourceRevisionGuardsClass"
            c:type="ESourceRevisionGuardsClass"
            glib:is-gtype-struct-for="SourceRevisionGuards">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceRevisionGuardsPrivate"
            c:type="ESourceRevisionGuardsPrivate"
            disguised="1">
    </record>
    <class name="SourceSMIME"
           c:symbol-prefix="source_smime"
           c:type="ESourceSMIME"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceSMIME"
           glib:get-type="e_source_smime_get_type"
           glib:type-struct="SourceSMIMEClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_encryption_certificate"
              c:identifier="e_source_smime_dup_encryption_certificate"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_smime_get_encryption_certificate().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceSMIME:encryption-certificate</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_signing_algorithm"
              c:identifier="e_source_smime_dup_signing_algorithm"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_smime_get_signing_algorithm().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceSMIME:signing-algorithm</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_signing_certificate"
              c:identifier="e_source_smime_dup_signing_certificate"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_smime_get_signing_certificate().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceSMIME:signing-certificate</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_encrypt_by_default"
              c:identifier="e_source_smime_get_encrypt_by_default"
              version="3.6">
        <doc xml:space="preserve">Returns whether to encrypt outgoing messages by default using S/MIME
software such as Mozilla Network Security Services (NSS).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether to encrypt outgoing messages by default</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_encrypt_to_self"
              c:identifier="e_source_smime_get_encrypt_to_self"
              version="3.6">
        <doc xml:space="preserve">Returns whether to "encrypt-to-self" when sending encrypted messages.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether to "encrypt-to-self"</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_encryption_certificate"
              c:identifier="e_source_smime_get_encryption_certificate"
              version="3.6">
        <doc xml:space="preserve">Returns the S/MIME certificate name used to encrypt messages.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the certificate name used to encrypt messages</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_sign_by_default"
              c:identifier="e_source_smime_get_sign_by_default"
              version="3.6">
        <doc xml:space="preserve">Returns whether to digitally sign outgoing messages by default using
S/MIME software such as Mozilla Network Security Services (NSS).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether to sign outgoing messages by default</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_signing_algorithm"
              c:identifier="e_source_smime_get_signing_algorithm"
              version="3.6">
        <doc xml:space="preserve">Returns the name of the hash algorithm used to digitally sign outgoing
messages.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the signing algorithm for outgoing messages</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_signing_certificate"
              c:identifier="e_source_smime_get_signing_certificate"
              version="3.6">
        <doc xml:space="preserve">Returns the S/MIME certificate name used to sign messages.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the certificate name used to sign messages</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_encrypt_by_default"
              c:identifier="e_source_smime_set_encrypt_by_default"
              version="3.6">
        <doc xml:space="preserve">Sets whether to encrypt outgoing messages by default using S/MIME
software such as Mozilla Network Security Services (NSS).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
          <parameter name="encrypt_by_default" transfer-ownership="none">
            <doc xml:space="preserve">whether to encrypt outgoing messages by default</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_encrypt_to_self"
              c:identifier="e_source_smime_set_encrypt_to_self"
              version="3.6">
        <doc xml:space="preserve">Sets whether to "encrypt-to-self" when sending encrypted messages.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
          <parameter name="encrypt_to_self" transfer-ownership="none">
            <doc xml:space="preserve">whether to "encrypt-to-self"</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_encryption_certificate"
              c:identifier="e_source_smime_set_encryption_certificate"
              version="3.6">
        <doc xml:space="preserve">Sets the certificate name used to encrypt messages.

The internal copy of @encryption_certificate is automatically stripped
of leading and trailing whitespace.  If the resulting string is empty,
%NULL is set instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
          <parameter name="encryption_certificate"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the certificate name used to encrypt messages, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sign_by_default"
              c:identifier="e_source_smime_set_sign_by_default"
              version="3.6">
        <doc xml:space="preserve">Sets whether to digitally sign outgoing messages by default using
S/MIME software such as Mozilla Network Security Services (NSS).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
          <parameter name="sign_by_default" transfer-ownership="none">
            <doc xml:space="preserve">whether to sign outgoing messages by default</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_signing_algorithm"
              c:identifier="e_source_smime_set_signing_algorithm"
              version="3.6">
        <doc xml:space="preserve">Sets the name of the hash algorithm used to digitally sign outgoing
messages.

The internal copy of @signing_algorithm is automatically stripped of
leading and trailing whitespace.  If the resulting string is empty,
%NULL is set instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
          <parameter name="signing_algorithm"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the signing algorithm for outgoing messages, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_signing_certificate"
              c:identifier="e_source_smime_set_signing_certificate"
              version="3.6">
        <doc xml:space="preserve">Sets the S/MIME certificate name used to sign messages.

The internal copy of @signing_certificate is automatically stripped
of leading and trailing whitespace.  If the resulting string is empty,
%NULL is set instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSMIME</doc>
            <type name="SourceSMIME" c:type="ESourceSMIME*"/>
          </instance-parameter>
          <parameter name="signing_certificate"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the certificate name used to sign messages, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="encrypt-by-default"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="encrypt-to-self"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="encryption-certificate"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="sign-by-default"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="signing-algorithm"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="signing-certificate"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceSMIMEPrivate" c:type="ESourceSMIMEPrivate*"/>
      </field>
    </class>
    <record name="SourceSMIMEClass"
            c:type="ESourceSMIMEClass"
            glib:is-gtype-struct-for="SourceSMIME">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceSMIMEPrivate"
            c:type="ESourceSMIMEPrivate"
            disguised="1">
    </record>
    <class name="SourceSecurity"
           c:symbol-prefix="source_security"
           c:type="ESourceSecurity"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceSecurity"
           glib:get-type="e_source_security_get_type"
           glib:type-struct="SourceSecurityClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_method"
              c:identifier="e_source_security_dup_method"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_security_get_method().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceSecurity:method</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSecurity</doc>
            <type name="SourceSecurity" c:type="ESourceSecurity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_method"
              c:identifier="e_source_security_get_method"
              version="3.6">
        <doc xml:space="preserve">Returns the method used to establish a secure network connection to a
remote account.  There are no pre-defined method names; backends are
free to set this however they wish.  If a secure connection is not
desired, the convention is to set #ESourceSecurity:method to "none".</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the method used to establish a secure network connection</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSecurity</doc>
            <type name="SourceSecurity" c:type="ESourceSecurity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_secure"
              c:identifier="e_source_security_get_secure"
              version="3.6">
        <doc xml:space="preserve">This is a convenience function which returns whether a secure network
connection is desired, regardless of the method used.  This relies on
the convention of setting #ESourceSecurity:method to "none" when a
secure network connection is &lt;emphasis&gt;not&lt;/emphasis&gt; desired.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether a secure network connection is desired</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSecurity</doc>
            <type name="SourceSecurity" c:type="ESourceSecurity*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_method"
              c:identifier="e_source_security_set_method"
              version="3.6">
        <doc xml:space="preserve">Sets the method used to establish a secure network connection to a
remote account.  There are no pre-defined method names; backends are
free to set this however they wish.  If a secure connection is not
desired, the convention is to set #ESourceSecurity:method to "none".
In keeping with that convention, #ESourceSecurity:method will be set
to "none" if @method is %NULL or an empty string.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSecurity</doc>
            <type name="SourceSecurity" c:type="ESourceSecurity*"/>
          </instance-parameter>
          <parameter name="method" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">security method, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_secure"
              c:identifier="e_source_security_set_secure"
              version="3.6">
        <doc xml:space="preserve">This function provides a simpler way to set #ESourceSecurity:method
when using a secure network connection is a yes or no option and the
exact method name is unimportant.  If @secure is %FALSE, the
#ESourceSecurity:method property is set to "none".  If @secure is
%TRUE, the function assumes the backend will use Transport Layer
Security and sets the #ESourceSecurity:method property to "tls".</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSecurity</doc>
            <type name="SourceSecurity" c:type="ESourceSecurity*"/>
          </instance-parameter>
          <parameter name="secure" transfer-ownership="none">
            <doc xml:space="preserve">whether a secure network connection is desired</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="method"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="secure" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceSecurityPrivate" c:type="ESourceSecurityPrivate*"/>
      </field>
    </class>
    <record name="SourceSecurityClass"
            c:type="ESourceSecurityClass"
            glib:is-gtype-struct-for="SourceSecurity">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceSecurityPrivate"
            c:type="ESourceSecurityPrivate"
            disguised="1">
    </record>
    <class name="SourceSelectable"
           c:symbol-prefix="source_selectable"
           c:type="ESourceSelectable"
           version="3.6"
           parent="SourceBackend"
           abstract="1"
           glib:type-name="ESourceSelectable"
           glib:get-type="e_source_selectable_get_type"
           glib:type-struct="SourceSelectableClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_color"
              c:identifier="e_source_selectable_dup_color"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_selectable_get_color().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceSelectable:color</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSelectable</doc>
            <type name="SourceSelectable" c:type="ESourceSelectable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_color"
              c:identifier="e_source_selectable_get_color"
              version="3.6">
        <doc xml:space="preserve">Returns the color specification for the #ESource to which @extension
belongs.  A colored block is often displayed next to the data source's
display name in user interfaces.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the color specification for the #ESource</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSelectable</doc>
            <type name="SourceSelectable" c:type="ESourceSelectable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_selected"
              c:identifier="e_source_selectable_get_selected"
              version="3.6">
        <doc xml:space="preserve">Returns the selected state of the #ESource to which @extension belongs.
The selected state is often represented as a checkbox next to the data
source's display name in user interfaces.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the selected state for the #ESource</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSelectable</doc>
            <type name="SourceSelectable" c:type="ESourceSelectable*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_color"
              c:identifier="e_source_selectable_set_color"
              version="3.6">
        <doc xml:space="preserve">Sets the color specification for the #ESource to which @extension
belongs.  A colored block is often displayed next to the data source's
display name in user interfaces.

The internal copy of @color is automatically stripped of leading and
trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSelectable</doc>
            <type name="SourceSelectable" c:type="ESourceSelectable*"/>
          </instance-parameter>
          <parameter name="color" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">a color specification, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_selected"
              c:identifier="e_source_selectable_set_selected"
              version="3.6">
        <doc xml:space="preserve">Sets the selected state for the #ESource to which @extension belongs.
The selected state is often represented as a checkbox next to the data
source's display name in user interfaces.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceSelectable</doc>
            <type name="SourceSelectable" c:type="ESourceSelectable*"/>
          </instance-parameter>
          <parameter name="selected" transfer-ownership="none">
            <doc xml:space="preserve">selected state</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="color"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="selected"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent">
        <type name="SourceBackend" c:type="ESourceBackend"/>
      </field>
      <field name="priv">
        <type name="SourceSelectablePrivate"
              c:type="ESourceSelectablePrivate*"/>
      </field>
    </class>
    <record name="SourceSelectableClass"
            c:type="ESourceSelectableClass"
            glib:is-gtype-struct-for="SourceSelectable">
      <field name="parent_class">
        <type name="SourceBackendClass" c:type="ESourceBackendClass"/>
      </field>
    </record>
    <record name="SourceSelectablePrivate"
            c:type="ESourceSelectablePrivate"
            disguised="1">
    </record>
    <class name="SourceTaskList"
           c:symbol-prefix="source_task_list"
           c:type="ESourceTaskList"
           version="3.6"
           parent="SourceSelectable"
           glib:type-name="ESourceTaskList"
           glib:get-type="e_source_task_list_get_type"
           glib:type-struct="SourceTaskListClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <field name="parent">
        <type name="SourceSelectable" c:type="ESourceSelectable"/>
      </field>
      <field name="priv">
        <type name="SourceTaskListPrivate" c:type="ESourceTaskListPrivate*"/>
      </field>
    </class>
    <record name="SourceTaskListClass"
            c:type="ESourceTaskListClass"
            glib:is-gtype-struct-for="SourceTaskList">
      <field name="parent_class">
        <type name="SourceSelectableClass" c:type="ESourceSelectableClass"/>
      </field>
    </record>
    <record name="SourceTaskListPrivate"
            c:type="ESourceTaskListPrivate"
            disguised="1">
    </record>
    <class name="SourceUoa"
           c:symbol-prefix="source_uoa"
           c:type="ESourceUoa"
           version="3.8"
           parent="SourceExtension"
           glib:type-name="ESourceUoa"
           glib:get-type="e_source_uoa_get_type"
           glib:type-struct="SourceUoaClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="get_account_id"
              c:identifier="e_source_uoa_get_account_id"
              version="3.8">
        <doc xml:space="preserve">Returns the numeric identifier of the Ubuntu Online Account associated
with the #ESource to which @extension belongs.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the associated Ubuntu Online Account ID</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceUoa</doc>
            <type name="SourceUoa" c:type="ESourceUoa*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_account_id"
              c:identifier="e_source_uoa_set_account_id"
              version="3.8">
        <doc xml:space="preserve">Sets the numeric identifier of the Ubuntu Online Account associated
with the #ESource to which @extension belongs.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceUoa</doc>
            <type name="SourceUoa" c:type="ESourceUoa*"/>
          </instance-parameter>
          <parameter name="account_id" transfer-ownership="none">
            <doc xml:space="preserve">the associated Ubuntu Online Account ID</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <property name="account-id"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceUoaPrivate" c:type="ESourceUoaPrivate*"/>
      </field>
    </class>
    <record name="SourceUoaClass"
            c:type="ESourceUoaClass"
            glib:is-gtype-struct-for="SourceUoa">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceUoaPrivate" c:type="ESourceUoaPrivate" disguised="1">
    </record>
    <class name="SourceWebdav"
           c:symbol-prefix="source_webdav"
           c:type="ESourceWebdav"
           version="3.6"
           parent="SourceExtension"
           glib:type-name="ESourceWebdav"
           glib:get-type="e_source_webdav_get_type"
           glib:type-struct="SourceWebdavClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_display_name"
              c:identifier="e_source_webdav_dup_display_name"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_webdav_get_display_name().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated copy of #ESourceWebdav:display-name</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_email_address"
              c:identifier="e_source_webdav_dup_email_address"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_webdav_get_email_address().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the newly-allocated copy of #ESourceWebdav:email-address</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_resource_path"
              c:identifier="e_source_webdav_dup_resource_path"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_webdav_get_resource_path().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the newly-allocated copy of #ESourceWebdav:resource-path</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_resource_query"
              c:identifier="e_source_webdav_dup_resource_query"
              version="3.6">
        <doc xml:space="preserve">Thread-safe variation of e_source_webdav_get_resource_query().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the newly-allocated copy of #ESourceWebdav:resource-query</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_soup_uri"
              c:identifier="e_source_webdav_dup_soup_uri"
              version="3.6"
              introspectable="0">
        <doc xml:space="preserve">This is a convenience function which returns a newly-allocated
#SoupURI, its contents assembled from the #ESourceAuthentication
extension, the #ESourceSecurity extension, and @extension itself.
Free the returned #SoupURI with soup_uri_free().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated #SoupURI</doc>
          <type c:type="SoupURI*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_ssl_trust"
              c:identifier="e_source_webdav_dup_ssl_trust"
              version="3.8">
        <doc xml:space="preserve">Thread-safe variation of e_source_webdav_get_ssl_trust().
Use this function when accessing @extension from multiple threads.

The returned string should be freed with g_free() when no longer needed.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">the newly-allocated copy of #ESourceWebdav:ssl-trust</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_avoid_ifmatch"
              c:identifier="e_source_webdav_get_avoid_ifmatch"
              version="3.6">
        <doc xml:space="preserve">This setting works around a
&lt;ulink url="https://issues.apache.org/bugzilla/show_bug.cgi?id=38034"&gt;
bug&lt;/ulink&gt; in older Apache mod_dav versions.

&lt;note&gt;
  &lt;para&gt;
    We may deprecate this once Apache 2.2.8 or newer becomes
    sufficiently ubiquitous, or we figure out a way to detect
    and work around the bug automatically.
  &lt;/para&gt;
&lt;/note&gt;</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether the WebDAV server is known to exhibit the bug</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_calendar_auto_schedule"
              c:identifier="e_source_webdav_get_calendar_auto_schedule"
              version="3.6">
        <doc xml:space="preserve">FIXME Document me!</doc>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_display_name"
              c:identifier="e_source_webdav_get_display_name"
              version="3.6">
        <doc xml:space="preserve">Returns the last known display name of a WebDAV resource, which may
differ from the #ESource:display-name property of the #ESource to which
@extension belongs.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the display name of the WebDAV resource</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_email_address"
              c:identifier="e_source_webdav_get_email_address"
              version="3.6">
        <doc xml:space="preserve">Returns the user's email address which can be passed to a CalDAV server
if the user wishes to receive scheduling messages.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the user's email address</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ignore_invalid_cert"
              c:identifier="e_source_webdav_get_ignore_invalid_cert"
              version="3.6"
              deprecated="The trust prompt APIs replace this."
              deprecated-version="3.8">
        <doc xml:space="preserve">Returns %TRUE if invalid SSL certificates should be ignored.

This option allows SSL certificates to be accepted even if they have
signed by an unrecognized Certificate Authority.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether invalid SSL certificates should be ignored</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_resource_path"
              c:identifier="e_source_webdav_get_resource_path"
              version="3.6">
        <doc xml:space="preserve">Returns the absolute path to a resource on a WebDAV server.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the absolute path to a WebDAV resource</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_resource_query"
              c:identifier="e_source_webdav_get_resource_query"
              version="3.6">
        <doc xml:space="preserve">Returns the URI query required to access a resource on a WebDAV server.

This is typically used when the #ESourceWebdav:resource-path points not
to the resource itself but to a web program that generates the resource
content on-the-fly.  The #ESourceWebdav:resource-query holds the input
values for the program.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the query to access a WebDAV resource</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ssl_trust"
              c:identifier="e_source_webdav_get_ssl_trust"
              version="3.8">
        <doc xml:space="preserve">Returns an SSL certificate trust for the @extension.
The value encodes three parameters, divided by a pipe '|',
the first is users preference, can be one of "reject", "accept",
"temporary-reject" and "temporary-accept". The second is a host
name for which the trust was set. Finally the last is a SHA1
hash of the certificate. This is not meant to be changed by a caller,
it is supposed to be manipulated with e_source_webdav_prepare_ssl_trust_prompt()
and e_source_webdav_store_ssl_trust_prompt().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an SSL certificate trust for the @extension</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="prepare_ssl_trust_prompt"
              c:identifier="e_source_webdav_prepare_ssl_trust_prompt"
              version="3.8"
              introspectable="0">
        <doc xml:space="preserve">Checks @messages&lt;!-- --&gt;'s certificate against currently stored trust
response and either returns what to do immediately, or returns
#E_TRUST_PROMPT_RESPONSE_UNKNOWN and populates @parameters with necessary
values for a trust prompt.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">What to do with SSL connection, where #E_TRUST_PROMPT_RESPONSE_UNKNOWN means 'ask a user, with populated parameters'.  Note: The #E_TRUST_PROMPT_RESPONSE_REJECT is returned on any errors, like the @message not being with the #SOUP_STATUS_SSL_FAILED status code, no certificate being stored in the @message and so on.</doc>
          <type name="TrustPromptResponse" c:type="ETrustPromptResponse"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">a #SoupMessage with #SOUP_STATUS_SSL_FAILED status code</doc>
            <type c:type="SoupMessage*"/>
          </parameter>
          <parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry, to use for parent lookups</doc>
            <type name="gpointer" c:type="_ESourceRegistry*"/>
          </parameter>
          <parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters to be populated</doc>
            <type name="gpointer" c:type="_ENamedParameters*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepare_ssl_trust_prompt_with_parent"
              c:identifier="e_source_webdav_prepare_ssl_trust_prompt_with_parent"
              version="3.8"
              introspectable="0">
        <doc xml:space="preserve">The same as e_source_webdav_prepare_ssl_trust_prompt(), only takes
@parent_source directly, instead of an #ESourceRegistry.

See e_source_webdav_prepare_ssl_trust_prompt() for more details.</doc>
        <return-value transfer-ownership="none">
          <type name="TrustPromptResponse" c:type="ETrustPromptResponse"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">a #SoupMessage with #SOUP_STATUS_SSL_FAILED status code</doc>
            <type c:type="SoupMessage*"/>
          </parameter>
          <parameter name="parent_source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource, parent of the @extension&lt;!-- --&gt;'s source</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters to be populated</doc>
            <type name="gpointer" c:type="_ENamedParameters*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_avoid_ifmatch"
              c:identifier="e_source_webdav_set_avoid_ifmatch"
              version="3.6">
        <doc xml:space="preserve">This setting works around a
&lt;ulink url="https://issues.apache.org/bugzilla/show_bug.cgi?id=38034"&gt;
bug&lt;/ulink&gt; in older Apache mod_dav versions.

&lt;note&gt;
  &lt;para&gt;
    We may deprecate this once Apache 2.2.8 or newer becomes
    sufficiently ubiquitous, or we figure out a way to detect
    and work around the bug automatically.
  &lt;/para&gt;
&lt;/note&gt;</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="avoid_ifmatch" transfer-ownership="none">
            <doc xml:space="preserve">whether the WebDAV server is known to exhibit the bug</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_calendar_auto_schedule"
              c:identifier="e_source_webdav_set_calendar_auto_schedule"
              version="3.6">
        <doc xml:space="preserve">FIXME Document me!</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="calendar_auto_schedule" transfer-ownership="none">
            <doc xml:space="preserve">whether the server supports the "calendar-auto-schedule" feature of CalDAV</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_display_name"
              c:identifier="e_source_webdav_set_display_name"
              version="3.6">
        <doc xml:space="preserve">Updates the last known display name of a WebDAV resource, which may
differ from the #ESource:display-name property of the #ESource to which
@extension belongs.

The internal copy of @display_name is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="display_name"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the display name of the WebDAV resource, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_email_address"
              c:identifier="e_source_webdav_set_email_address"
              version="3.6">
        <doc xml:space="preserve">Sets the user's email address which can be passed to a CalDAV server if
the user wishes to receive scheduling messages.

The internal copy of @email_address is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="email_address"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the user's email address, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ignore_invalid_cert"
              c:identifier="e_source_webdav_set_ignore_invalid_cert"
              version="3.6"
              deprecated="The trust prompt APIs replace this."
              deprecated-version="3.8">
        <doc xml:space="preserve">Sets whether invalid SSL certificates should be ignored.

This option allows SSL certificates to be accepted even if they have
signed by an unrecognized Certificate Authority.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="ignore_invalid_cert" transfer-ownership="none">
            <doc xml:space="preserve">whether invalid SSL certificates should be ignored</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_resource_path"
              c:identifier="e_source_webdav_set_resource_path"
              version="3.6">
        <doc xml:space="preserve">Sets the absolute path to a resource on a WebDAV server.

The internal copy of @resource_path is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="resource_path"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the absolute path to a WebDAV resource, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_resource_query"
              c:identifier="e_source_webdav_set_resource_query"
              version="3.6">
        <doc xml:space="preserve">Sets the URI query required to access a resource on a WebDAV server.

This is typically used when the #ESourceWebdav:resource-path points not
to the resource itself but to a web program that generates the resource
content on-the-fly.  The #ESourceWebdav:resource-query holds the input
values for the program.

The internal copy of @resource_query is automatically stripped of leading
and trailing whitespace.  If the resulting string is empty, %NULL is set
instead.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="resource_query"
                     transfer-ownership="none"
                     allow-none="1">
            <doc xml:space="preserve">the query to access a WebDAV resource, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_soup_uri"
              c:identifier="e_source_webdav_set_soup_uri"
              version="3.6"
              introspectable="0">
        <doc xml:space="preserve">This is a convenience function which propagates the components of
@uri to the #ESourceAuthentication extension, the #ESourceSecurity
extension, and @extension itself.  (The "fragment" component of
@uri is ignored.)</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="soup_uri" transfer-ownership="none">
            <doc xml:space="preserve">a #SoupURI</doc>
            <type c:type="SoupURI*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ssl_trust"
              c:identifier="e_source_webdav_set_ssl_trust"
              version="3.8">
        <doc xml:space="preserve">Sets the SSL certificate trust. See e_source_webdav_get_ssl_trust()
for more infomation about its content and how to use it.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="ssl_trust" transfer-ownership="none" allow-none="1">
            <doc xml:space="preserve">the ssl_trust to store, or %NULL to unset</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="store_ssl_trust_prompt"
              c:identifier="e_source_webdav_store_ssl_trust_prompt"
              version="3.8"
              introspectable="0">
        <doc xml:space="preserve">Stores user's response from a trust prompt, thus it is re-used the next
time it'll be needed. An #E_TRUST_PROMPT_RESPONSE_UNKNOWN is treated as
a temporary reject, which means the user will be asked again.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
          <parameter name="message" transfer-ownership="none">
            <doc xml:space="preserve">a #SoupMessage with #SOUP_STATUS_SSL_FAILED status code</doc>
            <type c:type="SoupMessage*"/>
          </parameter>
          <parameter name="response" transfer-ownership="none">
            <doc xml:space="preserve">user's response from a trust prompt</doc>
            <type name="TrustPromptResponse" c:type="ETrustPromptResponse"/>
          </parameter>
        </parameters>
      </method>
      <method name="unset_temporary_ssl_trust"
              c:identifier="e_source_webdav_unset_temporary_ssl_trust"
              version="3.8">
        <doc xml:space="preserve">Unsets temporary trust set on this @extension, but keeps
it as is for other values.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceWebdav</doc>
            <type name="SourceWebdav" c:type="ESourceWebdav*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="avoid-ifmatch"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="calendar-auto-schedule"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="display-name"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="email-address"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="ignore-invalid-cert"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="resource-path"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="resource-query"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="soup-uri"
                introspectable="0"
                writable="1"
                transfer-ownership="none">
        <type/>
      </property>
      <property name="ssl-trust"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceWebdavPrivate" c:type="ESourceWebdavPrivate*"/>
      </field>
    </class>
    <record name="SourceWebdavClass"
            c:type="ESourceWebdavClass"
            glib:is-gtype-struct-for="SourceWebdav">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceWebdavPrivate"
            c:type="ESourceWebdavPrivate"
            disguised="1">
    </record>
    <enumeration name="TimeParseStatus" c:type="ETimeParseStatus">
      <member name="ok" value="0" c:identifier="E_TIME_PARSE_OK">
        <doc xml:space="preserve">The time string was parsed successfully.</doc>
      </member>
      <member name="none" value="1" c:identifier="E_TIME_PARSE_NONE">
        <doc xml:space="preserve">The time string was empty.</doc>
      </member>
      <member name="invalid" value="2" c:identifier="E_TIME_PARSE_INVALID">
        <doc xml:space="preserve">The time string was not formatted correctly.</doc>
      </member>
    </enumeration>
    <enumeration name="TrustPromptResponse"
                 version="3.8"
                 glib:type-name="ETrustPromptResponse"
                 glib:get-type="e_trust_prompt_response_get_type"
                 c:type="ETrustPromptResponse">
      <doc xml:space="preserve">XXX Document me!</doc>
      <member name="unknown"
              value="-1"
              c:identifier="E_TRUST_PROMPT_RESPONSE_UNKNOWN"
              glib:nick="unknown">
      </member>
      <member name="reject"
              value="0"
              c:identifier="E_TRUST_PROMPT_RESPONSE_REJECT"
              glib:nick="reject">
      </member>
      <member name="accept"
              value="1"
              c:identifier="E_TRUST_PROMPT_RESPONSE_ACCEPT"
              glib:nick="accept">
      </member>
      <member name="accept_temporarily"
              value="2"
              c:identifier="E_TRUST_PROMPT_RESPONSE_ACCEPT_TEMPORARILY"
              glib:nick="accept-temporarily">
      </member>
      <member name="reject_temporarily"
              value="3"
              c:identifier="E_TRUST_PROMPT_RESPONSE_REJECT_TEMPORARILY"
              glib:nick="reject-temporarily">
      </member>
    </enumeration>
    <record name="XmlHash" c:type="EXmlHash" disguised="1">
      <doc xml:space="preserve">A hash table representation of an XML file.</doc>
    </record>
    <callback name="XmlHashFunc" c:type="EXmlHashFunc">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="key" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="2">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <callback name="XmlHashRemoveFunc" c:type="EXmlHashRemoveFunc">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="key" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="value" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="2">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="XmlHashStatus" c:type="EXmlHashStatus">
      <member name="same" value="0" c:identifier="E_XMLHASH_STATUS_SAME">
        <doc xml:space="preserve">The compared values are the same.</doc>
      </member>
      <member name="different"
              value="1"
              c:identifier="E_XMLHASH_STATUS_DIFFERENT">
        <doc xml:space="preserve">The compared values are different.</doc>
      </member>
      <member name="not_found"
              value="2"
              c:identifier="E_XMLHASH_STATUS_NOT_FOUND">
        <doc xml:space="preserve">The key to compare against was not found.</doc>
      </member>
    </enumeration>
    <enumeration name="XmlHashType" c:type="EXmlHashType">
      <member name="object_uid"
              value="0"
              c:identifier="E_XML_HASH_TYPE_OBJECT_UID">
        <doc xml:space="preserve">Use the object UID as the hash key.</doc>
      </member>
      <member name="property"
              value="1"
              c:identifier="E_XML_HASH_TYPE_PROPERTY">
        <doc xml:space="preserve">Use the property name as the hash key.</doc>
      </member>
    </enumeration>
    <record name="_CancellableLocksBase" c:type="_ECancellableLocksBase">
      <field name="cond_mutex" writable="1">
        <type name="GLib.Mutex" c:type="GMutex"/>
      </field>
      <field name="cond" writable="1">
        <type name="GLib.Cond" c:type="GCond"/>
      </field>
    </record>
    <function name="async_closure_callback"
              c:identifier="e_async_closure_callback"
              moved-to="AsyncClosure.callback"
              version="3.6">
      <doc xml:space="preserve">Pass this function as the #GAsyncReadyCallback argument of an asynchronous
function, and the #EAsyncClosure as the data argument.

This causes e_async_closure_wait() to terminate and return @result.</doc>
      <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 #GObject or %NULL, it is not used by the function at all</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </parameter>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve">a #GAsyncResult</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
        <parameter name="closure" transfer-ownership="none">
          <doc xml:space="preserve">an #EAsyncClosure</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="binding_transform_enum_nick_to_value"
              c:identifier="e_binding_transform_enum_nick_to_value"
              version="3.4">
      <doc xml:space="preserve">Transforms an enumeration nickname to its corresponding value.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the enum nickname has a corresponding value</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="binding" transfer-ownership="none">
          <doc xml:space="preserve">a #GBinding</doc>
          <type name="GObject.Binding" c:type="GBinding*"/>
        </parameter>
        <parameter name="source_value" transfer-ownership="none">
          <doc xml:space="preserve">a #GValue of type #G_TYPE_STRING</doc>
          <type name="GObject.Value" c:type="const GValue*"/>
        </parameter>
        <parameter name="target_value" transfer-ownership="none">
          <doc xml:space="preserve">a #GValue whose type is derived from #G_TYPE_ENUM</doc>
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="not_used" transfer-ownership="none">
          <doc xml:space="preserve">not used</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="binding_transform_enum_value_to_nick"
              c:identifier="e_binding_transform_enum_value_to_nick"
              version="3.4">
      <doc xml:space="preserve">Transforms an enumeration value to its corresponding nickname.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the enum value has a corresponding nickname</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="binding" transfer-ownership="none">
          <doc xml:space="preserve">a #GBinding</doc>
          <type name="GObject.Binding" c:type="GBinding*"/>
        </parameter>
        <parameter name="source_value" transfer-ownership="none">
          <doc xml:space="preserve">a #GValue whose type is derived from #G_TYPE_ENUM</doc>
          <type name="GObject.Value" c:type="const GValue*"/>
        </parameter>
        <parameter name="target_value" transfer-ownership="none">
          <doc xml:space="preserve">a #GValue of type #G_TYPE_STRING</doc>
          <type name="GObject.Value" c:type="GValue*"/>
        </parameter>
        <parameter name="not_used" transfer-ownership="none">
          <doc xml:space="preserve">not used</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="categories_add" c:identifier="e_categories_add">
      <doc xml:space="preserve">Adds a new category, with its corresponding icon, to the
configuration database.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="category" transfer-ownership="none">
          <doc xml:space="preserve">name of category to add.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="unused" transfer-ownership="none">
          <doc xml:space="preserve">DEPRECATED! associated color. DEPRECATED!</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="icon_file" transfer-ownership="none">
          <doc xml:space="preserve">full path of the icon associated to the category.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="searchable" transfer-ownership="none">
          <doc xml:space="preserve">whether the category can be used for searching in the GUI.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
      </parameters>
    </function>
    <function name="categories_exist" c:identifier="e_categories_exist">
      <doc xml:space="preserve">Checks whether the given category is available in the configuration.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the category is available, %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="category" transfer-ownership="none">
          <doc xml:space="preserve">category to be searched.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="categories_get_icon_file_for"
              c:identifier="e_categories_get_icon_file_for">
      <doc xml:space="preserve">Gets the icon file associated with the given category.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">icon file name.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="category" transfer-ownership="none">
          <doc xml:space="preserve">category to retrieve the icon file for.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="categories_get_list" c:identifier="e_categories_get_list">
      <doc xml:space="preserve">Returns a sorted list of all the category names currently configured.</doc>
      <return-value transfer-ownership="container">
        <doc xml:space="preserve">a sorted GList containing the names of the categories.The list should be freed using g_list_free(), but the names of the categories should not be touched at all, they are internal strings.</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="utf8"/>
        </type>
      </return-value>
    </function>
    <function name="categories_is_searchable"
              c:identifier="e_categories_is_searchable">
      <doc xml:space="preserve">Gets whether the given calendar is to be used for searches in the GUI.

Return value; %TRUE% if the category is searchable, %FALSE% if not.</doc>
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="category" transfer-ownership="none">
          <doc xml:space="preserve">category name.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="categories_register_change_listener"
              c:identifier="e_categories_register_change_listener"
              version="2.24">
      <doc xml:space="preserve">Registers callback to be called on change of any category.
Pair listener and user_data is used to distinguish between listeners.
Listeners can be unregistered with @e_categories_unregister_change_listener.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="listener"
                   transfer-ownership="none"
                   scope="async"
                   closure="1">
          <doc xml:space="preserve">the callback to be called on any category change.</doc>
          <type name="GObject.Callback" c:type="GCallback"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <doc xml:space="preserve">used data passed to the @listener when called.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="categories_remove" c:identifier="e_categories_remove">
      <doc xml:space="preserve">Removes the given category from the configuration.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="category" transfer-ownership="none">
          <doc xml:space="preserve">category to be removed.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="categories_set_icon_file_for"
              c:identifier="e_categories_set_icon_file_for">
      <doc xml:space="preserve">Sets the icon file associated with the given category.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="category" transfer-ownership="none">
          <doc xml:space="preserve">category to set the icon file for.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="icon_file" transfer-ownership="none">
          <doc xml:space="preserve">icon file.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="categories_unregister_change_listener"
              c:identifier="e_categories_unregister_change_listener"
              version="2.24">
      <doc xml:space="preserve">Removes previously registered callback from the list of listeners on changes.
If it was not registered, then does nothing.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="listener"
                   transfer-ownership="none"
                   scope="async"
                   closure="1">
          <doc xml:space="preserve">Callback to be removed.</doc>
          <type name="GObject.Callback" c:type="GCallback"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <doc xml:space="preserve">User data as passed with call to @e_categories_register_change_listener.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="data_server_util_get_dbus_call_timeout"
              c:identifier="e_data_server_util_get_dbus_call_timeout"
              version="3.0"
              deprecated="This value is not used anywhere."
              deprecated-version="3.8">
      <doc xml:space="preserve">Returns the value set by e_data_server_util_set_dbus_call_timeout().</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the D-Bus call timeout in milliseconds</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
    </function>
    <function name="data_server_util_set_dbus_call_timeout"
              c:identifier="e_data_server_util_set_dbus_call_timeout"
              version="3.0"
              deprecated="This value is not used anywhere."
              deprecated-version="3.8">
      <doc xml:space="preserve">Sets default timeout, in milliseconds, for calls of g_dbus_proxy_call()
family functions.

-1 means the default value as set by D-Bus itself.
G_MAXINT means no timeout at all.

Default value is set also by configure option --with-dbus-call-timeout=ms
and -1 is used when not set.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="timeout_msec" transfer-ownership="none">
          <doc xml:space="preserve">default timeout for D-Bus calls in miliseconds</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_log"
              c:identifier="e_debug_log"
              version="2.32"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="is_milestone" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="domain" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="format" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="arg3" transfer-ownership="none">
          <varargs>
          </varargs>
        </parameter>
      </parameters>
    </function>
    <function name="debug_log_clear"
              c:identifier="e_debug_log_clear"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
    <function name="debug_log_disable_domains"
              c:identifier="e_debug_log_disable_domains"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="domains" transfer-ownership="none">
          <type name="utf8" c:type="const gchar**"/>
        </parameter>
        <parameter name="n_domains" transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_log_dump"
              c:identifier="e_debug_log_dump"
              version="2.32"
              throws="1">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_log_dump_to_dated_file"
              c:identifier="e_debug_log_dump_to_dated_file"
              version="2.32"
              throws="1">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
    </function>
    <function name="debug_log_enable_domains"
              c:identifier="e_debug_log_enable_domains"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="domains" transfer-ownership="none">
          <type name="utf8" c:type="const gchar**"/>
        </parameter>
        <parameter name="n_domains" transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_log_get_max_lines"
              c:identifier="e_debug_log_get_max_lines"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </return-value>
    </function>
    <function name="debug_log_is_domain_enabled"
              c:identifier="e_debug_log_is_domain_enabled"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="domain" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_log_load_configuration"
              c:identifier="e_debug_log_load_configuration"
              version="2.32"
              throws="1">
      <return-value transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_log_set_max_lines"
              c:identifier="e_debug_log_set_max_lines"
              version="2.32">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="num_lines" transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="debug_logv"
              c:identifier="e_debug_logv"
              version="2.32"
              introspectable="0">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="is_milestone" transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="domain" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="format" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="args" transfer-ownership="none">
          <type name="va_list" c:type="va_list"/>
        </parameter>
      </parameters>
    </function>
    <function name="enum_from_string"
              c:identifier="e_enum_from_string"
              version="3.8">
      <doc xml:space="preserve">Fetches the appropriate enumeration value for @string in the given
enum type @type and stores the result in @enum_value</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the string was a valid name or nick for the given @type, %FALSE if the conversion failed.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="enum_type" transfer-ownership="none">
          <doc xml:space="preserve">The enum type</doc>
          <type name="GType" c:type="GType"/>
        </parameter>
        <parameter name="string" transfer-ownership="none">
          <doc xml:space="preserve">The string containing the enum value or nick</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="enum_value" transfer-ownership="none">
          <doc xml:space="preserve">A return location to store the result</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="enum_to_string"
              c:identifier="e_enum_to_string"
              version="3.8">
      <doc xml:space="preserve">Converts an enum value to a string using strings from the GType system.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the string representing @eval</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="enum_type" transfer-ownership="none">
          <doc xml:space="preserve">An enum type</doc>
          <type name="GType" c:type="GType"/>
        </parameter>
        <parameter name="enum_value" transfer-ownership="none">
          <doc xml:space="preserve">The enum value to convert</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="file_recursive_delete"
              c:identifier="e_file_recursive_delete"
              version="3.6">
      <doc xml:space="preserve">Asynchronously deletes @file.  If @file is a directory, its contents
are deleted recursively before @file itself is deleted.  The recursive
delete operation will stop on the first error.

If @cancellable is not %NULL, then the operation can be cancelled
by triggering the cancellable object before the operation finishes.

When the operation is finished, @callback will be called.  You can then
call e_file_recursive_delete_finish() to get the result of the operation.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="file" transfer-ownership="none">
          <doc xml:space="preserve">a #GFile to delete</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="io_priority" transfer-ownership="none">
          <doc xml:space="preserve">the I/O priority of the request</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
          <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
        <parameter name="callback"
                   transfer-ownership="none"
                   allow-none="1"
                   scope="async"
                   closure="4">
          <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request is satisfied</doc>
          <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <doc xml:space="preserve">data to pass to the callback function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="file_recursive_delete_finish"
              c:identifier="e_file_recursive_delete_finish"
              version="3.6"
              throws="1">
      <doc xml:space="preserve">Finishes the operation started with e_file_recursive_delete().

If the operation was cancelled, the error #G_IO_ERROR_CANCELLED will be
returned.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the file was deleted, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="file" transfer-ownership="none">
          <doc xml:space="preserve">a #GFile to delete</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve">a #GAsyncResult</doc>
          <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
        </parameter>
      </parameters>
    </function>
    <function name="file_recursive_delete_sync"
              c:identifier="e_file_recursive_delete_sync"
              version="3.6"
              throws="1">
      <doc xml:space="preserve">Deletes @file.  If @file is a directory, its contents are deleted
recursively before @file itself is deleted.  The recursive delete
operation will stop on the first error.

If @cancellable is not %NULL, then the operation can be cancelled
by triggering the cancellable object from another thread.  If the
operation was cancelled, the error #G_IO_ERROR_CANCELLED will be
returned.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE if the file was deleted, %FALSE otherwise</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="file" transfer-ownership="none">
          <doc xml:space="preserve">a #GFile to delete</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </parameter>
        <parameter name="cancellable" transfer-ownership="none" allow-none="1">
          <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <function name="filename_make_safe" c:identifier="e_filename_make_safe">
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="string" transfer-ownership="none">
          <type name="utf8" c:type="gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="filename_mkdir_encoded"
              c:identifier="e_filename_mkdir_encoded"
              version="3.4">
      <doc xml:space="preserve">Creates a local path constructed from @basepath / @fileprefix + "-" + @filename,
and makes sure the path @basepath exists. If creation of
the path fails, then NULL is returned.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">Full local path like g_build_filename() except that @fileprefix and @filename are encoded to create a proper file elements for a file system. Free returned pointer with g_free().</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="basepath" transfer-ownership="none">
          <doc xml:space="preserve">base path of a file name; this is left unchanged</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fileprefix" transfer-ownership="none">
          <doc xml:space="preserve">prefix for the filename; this is encoded</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve">file name to use; this is encoded; can be %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="fileindex" transfer-ownership="none">
          <doc xml:space="preserve">used when @filename is NULL, then the filename is generated as "file" + fileindex</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="get_user_cache_dir"
              c:identifier="e_get_user_cache_dir"
              version="2.32">
      <doc xml:space="preserve">Returns a base directory in which to store user-specific,
non-essential cached data for Evolution or Evolution-Data-Server.

The returned string is owned by libedataserver and must not be
modified or freed.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">base directory for user-specific, non-essential data</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
    </function>
    <function name="get_user_config_dir"
              c:identifier="e_get_user_config_dir"
              version="2.32">
      <doc xml:space="preserve">Returns a base directory in which to store user-specific configuration
information for Evolution or Evolution-Data-Server.

The returned string is owned by libedataserver and must not be
modified or freed.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">base directory for user-specific configuration information</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
    </function>
    <function name="get_user_data_dir"
              c:identifier="e_get_user_data_dir"
              version="2.32">
      <doc xml:space="preserve">Returns a base directory in which to store user-specific data for
Evolution or Evolution-Data-Server.

The returned string is owned by libedataserver and must not be
modified or freed.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">base directory for user-specific data</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
    </function>
    <function name="localtime_with_offset"
              c:identifier="e_localtime_with_offset">
      <doc xml:space="preserve">Converts the calendar time time representation @tt to a broken-down
time representation, store in @tm, and provides the offset in
seconds from UTC time, stored in @offset.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="tt" transfer-ownership="none">
          <doc xml:space="preserve">The #time_t to convert.</doc>
          <type name="glong" c:type="time_t"/>
        </parameter>
        <parameter name="tm" transfer-ownership="none">
          <doc xml:space="preserve">The #tm to store the result in.</doc>
          <type name="gpointer" c:type="tm*"/>
        </parameter>
        <parameter name="offset" transfer-ownership="none">
          <doc xml:space="preserve">The #int to store the offset in.</doc>
          <type name="gint" c:type="gint*"/>
        </parameter>
      </parameters>
    </function>
    <function name="memchunk_alloc" c:identifier="e_memchunk_alloc">
      <doc xml:space="preserve">Allocate a new atom size block of memory from an #EMemChunk.
Free the returned atom with e_memchunk_free().</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">an allocated block of memory</doc>
        <type name="gpointer" c:type="gpointer"/>
      </return-value>
      <parameters>
        <parameter name="memchunk" transfer-ownership="none">
          <doc xml:space="preserve">an #EMemChunk</doc>
          <type name="MemChunk" c:type="EMemChunk*"/>
        </parameter>
      </parameters>
    </function>
    <function name="memchunk_alloc0" c:identifier="e_memchunk_alloc0">
      <doc xml:space="preserve">Allocate a new atom size block of memory from an #EMemChunk,
and fill the memory with zeros.  Free the returned atom with
e_memchunk_free().</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">an allocated block of memory</doc>
        <type name="gpointer" c:type="gpointer"/>
      </return-value>
      <parameters>
        <parameter name="memchunk" transfer-ownership="none">
          <doc xml:space="preserve">an #EMemChunk</doc>
          <type name="MemChunk" c:type="EMemChunk*"/>
        </parameter>
      </parameters>
    </function>
    <function name="memchunk_clean" c:identifier="e_memchunk_clean">
      <doc xml:space="preserve">Scan all empty blocks and check for blocks which can be free'd
back to the system.

This routine may take a while to run if there are many allocated
memory blocks (if the total number of allocations is many times
greater than atomcount).</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="memchunk" transfer-ownership="none">
          <doc xml:space="preserve">an #EMemChunk</doc>
          <type name="MemChunk" c:type="EMemChunk*"/>
        </parameter>
      </parameters>
    </function>
    <function name="memchunk_destroy" c:identifier="e_memchunk_destroy">
      <doc xml:space="preserve">Free the memchunk header, and all associated memory.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="memchunk" transfer-ownership="none">
          <doc xml:space="preserve">an #EMemChunk</doc>
          <type name="MemChunk" c:type="EMemChunk*"/>
        </parameter>
      </parameters>
    </function>
    <function name="memchunk_empty" c:identifier="e_memchunk_empty">
      <doc xml:space="preserve">Clean out the memchunk buffers.  Marks all allocated memory as free blocks,
but does not give it back to the system.  Can be used if the memchunk
is to be used repeatedly.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="memchunk" transfer-ownership="none">
          <doc xml:space="preserve">an #EMemChunk</doc>
          <type name="MemChunk" c:type="EMemChunk*"/>
        </parameter>
      </parameters>
    </function>
    <function name="memchunk_free" c:identifier="e_memchunk_free">
      <doc xml:space="preserve">Free a single atom back to the free pool of atoms in the given
memchunk.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="memchunk" transfer-ownership="none">
          <doc xml:space="preserve">an #EMemChunk</doc>
          <type name="MemChunk" c:type="EMemChunk*"/>
        </parameter>
        <parameter name="mem" transfer-ownership="none">
          <doc xml:space="preserve">address of atom to free</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="memchunk_new"
              c:identifier="e_memchunk_new"
              introspectable="0">
      <doc xml:space="preserve">Create a new #EMemChunk header.  Memchunks are an efficient way to
allocate and deallocate identical sized blocks of memory quickly, and
space efficiently.

e_memchunks are effectively the same as gmemchunks, only faster (much),
and they use less memory overhead for housekeeping.</doc>
      <return-value>
        <doc xml:space="preserve">a new #EMemChunk</doc>
        <type name="MemChunk" c:type="EMemChunk*"/>
      </return-value>
      <parameters>
        <parameter name="atomcount" transfer-ownership="none">
          <doc xml:space="preserve">the number of atoms stored in a single malloc'd block of memory</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="atomsize" transfer-ownership="none">
          <doc xml:space="preserve">the size of each allocation</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="mktime_utc" c:identifier="e_mktime_utc">
      <doc xml:space="preserve">Like mktime(3), but assumes UTC instead of local timezone.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The calendar time representation of @tm.</doc>
        <type name="glong" c:type="time_t"/>
      </return-value>
      <parameters>
        <parameter name="tm" transfer-ownership="none">
          <doc xml:space="preserve">The #tm to convert to a calendar time representation.</doc>
          <type name="gpointer" c:type="tm*"/>
        </parameter>
      </parameters>
    </function>
    <function name="operation_pool_new"
              c:identifier="e_operation_pool_new"
              moved-to="OperationPool.new"
              version="3.2"
              introspectable="0">
      <doc xml:space="preserve">FIXME: Document me.</doc>
      <return-value>
        <type name="OperationPool" c:type="EOperationPool*"/>
      </return-value>
      <parameters>
        <parameter name="max_threads" transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="thread_func" transfer-ownership="none" closure="2">
          <type name="GLib.Func" c:type="GFunc"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="queue_transfer"
              c:identifier="e_queue_transfer"
              version="3.8">
      <doc xml:space="preserve">Transfers the contents of @src_queue to the tail of @dst_queue.
When the operation is complete, @src_queue will be empty.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="src_queue" transfer-ownership="none">
          <doc xml:space="preserve">a source #GQueue</doc>
          <type name="GLib.Queue" c:type="GQueue*"/>
        </parameter>
        <parameter name="dst_queue" transfer-ownership="none">
          <doc xml:space="preserve">a destination #GQueue</doc>
          <type name="GLib.Queue" c:type="GQueue*"/>
        </parameter>
      </parameters>
    </function>
    <function name="strftime" c:identifier="e_strftime">
      <doc xml:space="preserve">This function is a wrapper around the strftime (3) function, which
converts the &amp;percnt;l and &amp;percnt;k (12h and 24h) format variables
if necessary.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The number of characters placed in @s.</doc>
        <type name="gsize" c:type="gsize"/>
      </return-value>
      <parameters>
        <parameter name="string" transfer-ownership="none">
          <doc xml:space="preserve">The string array to store the result in.</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="max" transfer-ownership="none">
          <doc xml:space="preserve">The size of array @s.</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="fmt" transfer-ownership="none">
          <doc xml:space="preserve">The formatting to use on @tm.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="tm" transfer-ownership="none">
          <doc xml:space="preserve">The time value to format.</doc>
          <type name="gpointer" c:type="const tm*"/>
        </parameter>
      </parameters>
    </function>
    <function name="time_format_date_and_time"
              c:identifier="e_time_format_date_and_time">
      <doc xml:space="preserve">Creates a string representation of the time value @date_tm and
stores it in @buffer.  @buffer_size should be at least 64 to be
safe. If @show_midnight is %FALSE, and the time is midnight, then
only the date is stored in @buffer. If @show_zero_seconds is
%FALSE, then if the time has zero seconds only the hour and minute
of the time are stored in @buffer.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="date_tm" transfer-ownership="none">
          <doc xml:space="preserve">The #tm to convert to a string.</doc>
          <type name="gpointer" c:type="tm*"/>
        </parameter>
        <parameter name="use_24_hour_format" transfer-ownership="none">
          <doc xml:space="preserve">A #gboolean.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="show_midnight" transfer-ownership="none">
          <doc xml:space="preserve">A #gboolean.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="show_zero_seconds" transfer-ownership="none">
          <doc xml:space="preserve">A #gboolean.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="buffer" transfer-ownership="none">
          <doc xml:space="preserve">A #char buffer to store the time string in.</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="buffer_size" transfer-ownership="none">
          <doc xml:space="preserve">The length of @buffer.</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="time_format_time" c:identifier="e_time_format_time">
      <doc xml:space="preserve">Creates a string representation of a time value in @date_tm and
stores it in @buffer. @buffer_size should be at least 64.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="date_tm" transfer-ownership="none">
          <doc xml:space="preserve">The #tm to convert to a string.</doc>
          <type name="gpointer" c:type="tm*"/>
        </parameter>
        <parameter name="use_24_hour_format" transfer-ownership="none">
          <doc xml:space="preserve">A #gboolean.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="show_zero_seconds" transfer-ownership="none">
          <doc xml:space="preserve">A #gboolean.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="buffer" transfer-ownership="none">
          <doc xml:space="preserve">The #char buffer to store the result in.</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="buffer_size" transfer-ownership="none">
          <doc xml:space="preserve">The length of @buffer.</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
      </parameters>
    </function>
    <function name="time_get_d_fmt_with_4digit_year"
              c:identifier="e_time_get_d_fmt_with_4digit_year"
              version="2.22">
      <doc xml:space="preserve">Retrieves a date format string with a 4-digit year (D_FMT on systems with
nl_langinfo() available).  Free the returned string with g_free().</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a newly-allocated date format string</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="time_parse_date" c:identifier="e_time_parse_date">
      <doc xml:space="preserve">Takes in a date string entered by the user and tries to convert it to
a struct #tm.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">An #ETimeParseStatus result code indicating whether @value was an empty string, a valid date, or an invalid date.</doc>
        <type name="TimeParseStatus" c:type="ETimeParseStatus"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">A date string.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve">Return value for the parsed date.</doc>
          <type name="gpointer" c:type="tm*"/>
        </parameter>
      </parameters>
    </function>
    <function name="time_parse_date_and_time"
              c:identifier="e_time_parse_date_and_time">
      <doc xml:space="preserve">Parses a string @value containing a date and a time and stores the
result in @result. The date in @value is expected to be in a format
like "Wed 3/13/00 14:20:00", though gettext() is used to support the
appropriate local formats. There is also some leniency on the
format of the string, e.g. the weekday can be skipped or 12-hour
formats with am/pm can be used.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">E_TIME_PARSE_OK if the string was successfully parsed, E_TIME_PARSE_NONE if the string was empty, or E_TIME_PARSE_INVALID if the string could not be parsed.</doc>
        <type name="TimeParseStatus" c:type="ETimeParseStatus"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">the string to parse a date and time from</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve">a #tm to store the result in</doc>
          <type name="gpointer" c:type="tm*"/>
        </parameter>
      </parameters>
    </function>
    <function name="time_parse_date_and_time_ex"
              c:identifier="e_time_parse_date_and_time_ex"
              version="2.22">
      <doc xml:space="preserve">Parses a string @value containing a date and a time and stores the
result in @result. The date in @value is expected to be in a format
like "Wed 3/13/00 14:20:00", though gettext() is used to support the
appropriate local formats. There is also some leniency on the
format of the string, e.g. the weekday can be skipped or 12-hour
formats with am/pm can be used.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">E_TIME_PARSE_OK if the string was successfully parsed, E_TIME_PARSE_NONE if the string was empty, or E_TIME_PARSE_INVALID if the string could not be parsed.</doc>
        <type name="TimeParseStatus" c:type="ETimeParseStatus"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">The string to parse a date and time from.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve">A #tm to store the result in.</doc>
          <type name="gpointer" c:type="tm*"/>
        </parameter>
        <parameter name="two_digit_year" transfer-ownership="none">
          <doc xml:space="preserve">set to TRUE, is parsing with two-digit year, else FALSE, but only when not NULL.</doc>
          <type name="gboolean" c:type="gboolean*"/>
        </parameter>
      </parameters>
    </function>
    <function name="time_parse_date_ex"
              c:identifier="e_time_parse_date_ex"
              version="2.22">
      <doc xml:space="preserve">Takes in a date string entered by the user and tries to convert it to
a struct #tm.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">An #ETimeParseStatus result code indicating whether @value was an empty string, a valid date, or an invalid date.</doc>
        <type name="TimeParseStatus" c:type="ETimeParseStatus"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">A date string.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve">Return value for the parsed date.</doc>
          <type name="gpointer" c:type="tm*"/>
        </parameter>
        <parameter name="two_digit_year" transfer-ownership="none">
          <doc xml:space="preserve">set to TRUE, is parsing with two-digit year, else FALSE, but only when not NULL.</doc>
          <type name="gboolean" c:type="gboolean*"/>
        </parameter>
      </parameters>
    </function>
    <function name="time_parse_time" c:identifier="e_time_parse_time">
      <doc xml:space="preserve">Parses @value, a string containing a time. @value is expected to be
in a format like "14:20:00". gettext() is used to
support the appropriate local formats and slightly
different formats, such as 12-hour formats with am/pm,
are accepted as well.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">An #ETimeParseStatus result code indicating whether @value was an empty string, a valid date, or an invalid date.</doc>
        <type name="TimeParseStatus" c:type="ETimeParseStatus"/>
      </return-value>
      <parameters>
        <parameter name="value" transfer-ownership="none">
          <doc xml:space="preserve">The string to parse a time from.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="result" transfer-ownership="none">
          <doc xml:space="preserve">A #tm to store the result in.</doc>
          <type name="gpointer" c:type="tm*"/>
        </parameter>
      </parameters>
    </function>
    <function name="uid_new" c:identifier="e_uid_new">
      <doc xml:space="preserve">Generate a new unique string for use e.g. in account lists.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">The newly generated UID.  The caller should free the string when it's done with it.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
    </function>
    <function name="utf8_strftime" c:identifier="e_utf8_strftime">
      <doc xml:space="preserve">The UTF-8 equivalent of e_strftime ().</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">The number of characters placed in @s.</doc>
        <type name="gsize" c:type="gsize"/>
      </return-value>
      <parameters>
        <parameter name="string" transfer-ownership="none">
          <doc xml:space="preserve">The string array to store the result in.</doc>
          <type name="utf8" c:type="gchar*"/>
        </parameter>
        <parameter name="max" transfer-ownership="none">
          <doc xml:space="preserve">The size of array @s.</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
        <parameter name="fmt" transfer-ownership="none">
          <doc xml:space="preserve">The formatting to use on @tm.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="tm" transfer-ownership="none">
          <doc xml:space="preserve">The time value to format.</doc>
          <type name="gpointer" c:type="const tm*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_copy_object_slist"
              c:identifier="e_util_copy_object_slist"
              version="3.4"
              deprecated="Use g_slist_copy_deep() instead, and optionally g_slist_concat() to concatenate the copied list to another #GSList."
              deprecated-version="3.8">
      <doc xml:space="preserve">Copies #GSList of #GObject&lt;!-- --&gt;s at the end of @copy_to.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">New head of @copy_to. Returned pointer can be freed with e_util_free_object_slist().</doc>
        <type name="GLib.SList" c:type="GSList*">
          <type name="GObject.Object"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="copy_to" transfer-ownership="none" allow-none="1">
          <doc xml:space="preserve">Where to copy; can be %NULL</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="GObject.Object"/>
          </type>
        </parameter>
        <parameter name="objects" transfer-ownership="none">
          <doc xml:space="preserve">#GSList of #GObject&lt;!-- --&gt;s to be copied</doc>
          <type name="GLib.SList" c:type="const GSList*">
            <type name="GObject.Object"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="util_copy_string_slist"
              c:identifier="e_util_copy_string_slist"
              version="3.4"
              deprecated="Use g_slist_copy_deep() instead, and optionally g_slist_concat() to concatenate the copied list to another #GSList."
              deprecated-version="3.8">
      <doc xml:space="preserve">Copies #GSList of strings at the end of @copy_to.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">New head of @copy_to. Returned pointer can be freed with e_util_free_string_slist().</doc>
        <type name="GLib.SList" c:type="GSList*">
          <type name="utf8"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="copy_to" transfer-ownership="none" allow-none="1">
          <doc xml:space="preserve">Where to copy; can be %NULL</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="utf8"/>
          </type>
        </parameter>
        <parameter name="strings" transfer-ownership="none">
          <doc xml:space="preserve">#GSList of strings to be copied</doc>
          <type name="GLib.SList" c:type="const GSList*">
            <type name="utf8"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="util_ensure_gdbus_string"
              c:identifier="e_util_ensure_gdbus_string"
              version="3.0">
      <doc xml:space="preserve">If @str is a valid UTF-8 string, the function returns @str and does
not set @gdbus_str.

If @str is an invalid UTF-8 string, the function calls
e_util_utf8_make_valid() and points @gdbus_str to the newly-allocated,
valid UTF-8 string, and also returns it.  The caller should free the
string pointed to by @gdbus_str with g_free().

If @str is %NULL, the function returns an empty string and does not
set @gdbus_str.

Admittedly, the function semantics are a little awkward.  The example
below illustrates the easiest way to cope with the @gdbus_str argument:

&lt;informalexample&gt;
  &lt;programlisting&gt;
    const gchar *trusted_utf8;
    gchar *allocated = NULL;

    trusted_utf8 = e_util_ensure_gdbus_string (untrusted_utf8, &amp;allocated);

    Do stuff with trusted_utf8, then clear it.

    trusted_utf8 = NULL;

    g_free (allocated);
    allocated = NULL;
  &lt;/programlisting&gt;
&lt;/informalexample&gt;</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">a valid UTF-8 string</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">a possibly invalid UTF-8 string, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="gdbus_str" transfer-ownership="none">
          <doc xml:space="preserve">return location for the corrected string</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_free_nullable_object_slist"
              c:identifier="e_util_free_nullable_object_slist"
              version="3.6">
      <doc xml:space="preserve">Calls g_object_unref() on each member of @objects if non-%NULL and then frees
also @objects itself.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="objects" transfer-ownership="none">
          <doc xml:space="preserve">a #GSList of nullable #GObject&lt;!-- --&gt;s</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="GObject.Object"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="util_free_object_slist"
              c:identifier="e_util_free_object_slist"
              version="3.4"
              deprecated="Use g_slist_free_full() instead."
              deprecated-version="3.8">
      <doc xml:space="preserve">Calls g_object_unref() on each member of @objects and then frees
also @objects itself.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="objects" transfer-ownership="none">
          <doc xml:space="preserve">a #GSList of #GObject&lt;!-- --&gt;s</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="GObject.Object"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="util_free_string_slist"
              c:identifier="e_util_free_string_slist"
              version="3.4"
              deprecated="Use g_slist_free_full() instead."
              deprecated-version="3.8">
      <doc xml:space="preserve">Frees memory previously allocated by e_util_strv_to_slist().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="strings" transfer-ownership="none">
          <doc xml:space="preserve">a #GSList of strings (gchar *)</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="utf8"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="util_gthread_id"
              c:identifier="e_util_gthread_id"
              version="2.32">
      <doc xml:space="preserve">Returns a 64-bit integer hopefully uniquely identifying the
thread. To be used in debugging output and logging only.
The returned value is just a cast of a pointer to the 64-bit integer.

There is no guarantee that calling e_util_gthread_id () on one
thread first and later after that thread has dies on another won't
return the same integer.

On Linux and Win32, known to really return a unique id for each
thread existing at a certain time. No guarantee that ids won't be
reused after a thread has terminated, though.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">A 64-bit integer.</doc>
        <type name="guint64" c:type="guint64"/>
      </return-value>
      <parameters>
        <parameter name="thread" transfer-ownership="none">
          <doc xml:space="preserve">A #GThread pointer</doc>
          <type name="GLib.Thread" c:type="GThread*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_slist_to_strv"
              c:identifier="e_util_slist_to_strv"
              version="3.4">
      <doc xml:space="preserve">Convert list of strings into NULL-terminates array of strings.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">Newly allocated %NULL-terminated array of strings. Returned pointer should be freed with g_strfreev().  Note: Pair function for this is e_util_strv_to_slist().</doc>
        <array c:type="gchar**">
          <type name="utf8"/>
        </array>
      </return-value>
      <parameters>
        <parameter name="strings" transfer-ownership="none">
          <doc xml:space="preserve">a #GSList of strings (const gchar *)</doc>
          <type name="GLib.SList" c:type="const GSList*">
            <type name="utf8"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="util_strdup_strip"
              c:identifier="e_util_strdup_strip"
              version="3.6">
      <doc xml:space="preserve">Duplicates @string and strips off any leading or trailing whitespace.
The resulting string is returned unless it is empty or %NULL, in which
case the function returns %NULL.

Free the returned string with g_free().</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a newly-allocated, stripped copy of @string, or %NULL</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="string" transfer-ownership="none" allow-none="1">
          <doc xml:space="preserve">a string value, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_strstrcase" c:identifier="e_util_strstrcase">
      <doc xml:space="preserve">Find the first instance of @needle in @haystack, ignoring case for
bytes that are ASCII characters.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">A pointer to the start of @needle in @haystack, or NULL if @needle is not found.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="haystack" transfer-ownership="none">
          <doc xml:space="preserve">The string to search in.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="needle" transfer-ownership="none">
          <doc xml:space="preserve">The string to search for.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_strv_to_slist"
              c:identifier="e_util_strv_to_slist"
              version="3.4">
      <doc xml:space="preserve">Convert NULL-terminated array of strings to a list of strings.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">Newly allocated #GSList of newly allocated strings. The returned pointer should be freed with e_util_free_string_slist().  Note: Pair function for this is e_util_slist_to_strv().</doc>
        <type name="GLib.SList" c:type="GSList*">
          <type name="utf8"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="strv" transfer-ownership="none">
          <doc xml:space="preserve">a NULL-terminated array of strings (const gchar *)</doc>
          <type name="utf8" c:type="const gchar* const*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_unicode_get_utf8"
              c:identifier="e_util_unicode_get_utf8">
      <doc xml:space="preserve">Get a UTF-8 character from the beginning of @text.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">A pointer to the next character in @text after @out.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="text" transfer-ownership="none">
          <doc xml:space="preserve">The string to take the UTF-8 character from.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="out" transfer-ownership="none">
          <doc xml:space="preserve">The location to store the UTF-8 character in.</doc>
          <type name="gunichar" c:type="gunichar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_utf8_data_make_valid"
              c:identifier="e_util_utf8_data_make_valid"
              version="3.6">
      <doc xml:space="preserve">Returns a newly-allocated NULL-terminated string with invalid characters
replaced by Unicode replacement characters (U+FFFD).
For %NULL @data returns newly allocated empty string ("").</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a newly-allocated string</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve">UTF-8 binary data</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data_bytes" transfer-ownership="none">
          <doc xml:space="preserve">length of the binary data</doc>
          <type name="gsize" c:type="gsize"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_utf8_make_valid"
              c:identifier="e_util_utf8_make_valid"
              version="3.0">
      <doc xml:space="preserve">Returns a newly-allocated copy of @str, with invalid characters
replaced by Unicode replacement characters (U+FFFD).
For %NULL @str returns newly allocated empty string ("").</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a newly-allocated string</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">a UTF-8 string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_utf8_normalize"
              c:identifier="e_util_utf8_normalize"
              version="3.8">
      <doc xml:space="preserve">Normalizes @str by making it all lower case and removing any accents from it.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">The normalized version of @str, or %NULL if @str was not valid UTF-8</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">a UTF-8 string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_utf8_remove_accents"
              c:identifier="e_util_utf8_remove_accents"
              version="2.28">
      <doc xml:space="preserve">Returns a newly-allocated copy of @str with accents removed.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a newly-allocated string</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">a UTF-8 string, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_utf8_strcasecmp"
              c:identifier="e_util_utf8_strcasecmp">
      <doc xml:space="preserve">Compares two UTF-8 strings using approximate case-insensitive ordering.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">&lt; 0 if @s1 compares before @s2, 0 if they compare equal, &gt; 0 if @s1 compares after @s2</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="s1" transfer-ownership="none">
          <doc xml:space="preserve">a UTF-8 string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="s2" transfer-ownership="none">
          <doc xml:space="preserve">another UTF-8 string</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_utf8_strstrcase"
              c:identifier="e_util_utf8_strstrcase">
      <doc xml:space="preserve">Find the first instance of @needle in @haystack, ignoring case. (No
proper case folding or decomposing is done.) Both @needle and
@haystack are UTF-8 strings.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">A pointer to the first instance of @needle in @haystack, or %NULL if no match is found, or if either of the strings are not legal UTF-8 strings.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="haystack" transfer-ownership="none">
          <doc xml:space="preserve">The string to search in.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="needle" transfer-ownership="none">
          <doc xml:space="preserve">The string to search for.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="util_utf8_strstrcasedecomp"
              c:identifier="e_util_utf8_strstrcasedecomp">
      <doc xml:space="preserve">Find the first instance of @needle in @haystack, where both @needle
and @haystack are UTF-8 strings. Both strings are stripped and
decomposed for comparison, and case is ignored.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">A pointer to the first instance of @needle in @haystack, or %NULL if either of the strings are not legal UTF-8 strings.</doc>
        <type name="utf8" c:type="const gchar*"/>
      </return-value>
      <parameters>
        <parameter name="haystack" transfer-ownership="none">
          <doc xml:space="preserve">The string to search in.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="needle" transfer-ownership="none">
          <doc xml:space="preserve">The string to search for.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="weak_ref_free"
              c:identifier="e_weak_ref_free"
              version="3.10">
      <doc xml:space="preserve">Frees a #GWeakRef created by e_weak_ref_new().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="weak_ref" transfer-ownership="none">
          <doc xml:space="preserve">a #GWeakRef</doc>
          <type name="GObject.WeakRef" c:type="GWeakRef*"/>
        </parameter>
      </parameters>
    </function>
    <function name="weak_ref_new"
              c:identifier="e_weak_ref_new"
              version="3.10"
              introspectable="0">
      <doc xml:space="preserve">Allocates a new #GWeakRef and calls g_weak_ref_set() with @object.

Free the returned #GWeakRef with e_weak_ref_free().</doc>
      <return-value>
        <doc xml:space="preserve">a new #GWeakRef</doc>
        <type name="GObject.WeakRef" c:type="GWeakRef*"/>
      </return-value>
      <parameters>
        <parameter name="object" transfer-ownership="none" allow-none="1">
          <doc xml:space="preserve">a #GObject or %NULL</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="xml_destroy_hash" c:identifier="e_xml_destroy_hash">
      <doc xml:space="preserve">Frees the memory used by @hash and its contents.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="hash" transfer-ownership="none">
          <doc xml:space="preserve">the #GHashTable to destroy</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="gpointer" c:type="gpointer"/>
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="xml_from_hash"
              c:identifier="e_xml_from_hash"
              introspectable="0">
      <doc xml:space="preserve">Uses the key/value pair representation of an XML structure in @hash
to build an equivalent #xmlDoc. This is the reverse of e_xml_to_hash().</doc>
      <return-value>
        <doc xml:space="preserve">the #xmlDoc created from the data in @hash</doc>
        <type name="libxml2.Doc" c:type="xmlDoc*"/>
      </return-value>
      <parameters>
        <parameter name="hash" transfer-ownership="none">
          <doc xml:space="preserve">The #GHashTable to extract the XML from</doc>
          <type name="GLib.HashTable" c:type="GHashTable*">
            <type name="gpointer" c:type="gpointer"/>
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve">The #EXmlHashType used to store the XML</doc>
          <type name="XmlHashType" c:type="EXmlHashType"/>
        </parameter>
        <parameter name="root_name" transfer-ownership="none">
          <doc xml:space="preserve">The name to call the new #xmlDoc</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="xml_get_child_by_name"
              c:identifier="e_xml_get_child_by_name"
              introspectable="0">
      <doc xml:space="preserve">Attempts to find a child element of @parent named @child_name.
If no such child exists, the function returns %NULL.</doc>
      <return-value>
        <doc xml:space="preserve">a child XML node structure, or %NULL</doc>
        <type name="libxml2.Node" c:type="xmlNode*"/>
      </return-value>
      <parameters>
        <parameter name="parent" transfer-ownership="none">
          <doc xml:space="preserve">an XML node structure</doc>
          <type name="libxml2.Node" c:type="const xmlNode*"/>
        </parameter>
        <parameter name="child_name" transfer-ownership="none">
          <doc xml:space="preserve">element name of a child node</doc>
          <type name="libxml2.Char" c:type="const xmlChar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="xml_parse_file"
              c:identifier="e_xml_parse_file"
              introspectable="0">
      <doc xml:space="preserve">Reads a local XML file and parses the contents into an XML document
structure.  If the XML file cannot be read or its contents are malformed,
the function returns %NULL.</doc>
      <return-value>
        <doc xml:space="preserve">an XML document structure, or %NULL</doc>
        <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve">path to an XML file</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="xml_save_file" c:identifier="e_xml_save_file">
      <doc xml:space="preserve">Writes the given XML document structure to the file given by @filename.
If an error occurs while saving, the function returns -1 and sets errno.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">0 on success, -1 on failure</doc>
        <type name="gint" c:type="gint"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve">path to a file to save to</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="doc" transfer-ownership="none">
          <doc xml:space="preserve">an XML document structure</doc>
          <type name="libxml2.DocPtr" c:type="xmlDocPtr"/>
        </parameter>
      </parameters>
    </function>
    <function name="xml_to_hash" c:identifier="e_xml_to_hash">
      <doc xml:space="preserve">Creates a #GHashTable representation of the #xmlDoc @doc.
If @type is * @E_XML_HASH_TYPE_PROPERTY, all XML nodes will be
indexed in the #GHashTable by name. If @type is
%E_XML_HASH_TYPE_OBJECT_UID, then XML objects will be indexed in
the hash by their UID (other nodes will still be indexed by name).</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">The newly-created #GHashTable representation of @doc.</doc>
        <type name="GLib.HashTable" c:type="GHashTable*">
          <type name="gpointer" c:type="gpointer"/>
          <type name="gpointer" c:type="gpointer"/>
        </type>
      </return-value>
      <parameters>
        <parameter name="doc" transfer-ownership="none">
          <doc xml:space="preserve">The #xmlDoc to store in a hash table.</doc>
          <type name="libxml2.Doc" c:type="xmlDoc*"/>
        </parameter>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve">The value type to use as a key in the hash table.</doc>
          <type name="XmlHashType" c:type="EXmlHashType"/>
        </parameter>
      </parameters>
    </function>
    <function name="xmlhash_add" c:identifier="e_xmlhash_add">
      <doc xml:space="preserve">Adds a new key/value pair to the #EXmlHash @hash.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="hash" transfer-ownership="none">
          <doc xml:space="preserve">the #EXmlHash to add an entry to</doc>
          <type name="XmlHash" c:type="EXmlHash*"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve">the key to use for the entry</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve">the value of the new entry</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="xmlhash_compare" c:identifier="e_xmlhash_compare">
      <doc xml:space="preserve">Compares the value with key equal to @key in @hash against
@compare_data.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">E_XMLHASH_STATUS_SAME if the value and @compare_data are equal,E_XMLHASH_STATUS_DIFFERENT if they are different, or E_XMLHASH_STATUS_NOT_FOUND if there is no entry in @hash with its key equal to @key.</doc>
        <type name="XmlHashStatus" c:type="EXmlHashStatus"/>
      </return-value>
      <parameters>
        <parameter name="hash" transfer-ownership="none">
          <doc xml:space="preserve">the #EXmlHash to compare against</doc>
          <type name="XmlHash" c:type="EXmlHash*"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve">the key of the hash entry to compare with</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="compare_data" transfer-ownership="none">
          <doc xml:space="preserve">the data to compare against the hash entry</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="xmlhash_destroy" c:identifier="e_xmlhash_destroy">
      <doc xml:space="preserve">Frees the memory associated with @hash.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="hash" transfer-ownership="none">
          <doc xml:space="preserve">The #EXmlHash to destroy.</doc>
          <type name="XmlHash" c:type="EXmlHash*"/>
        </parameter>
      </parameters>
    </function>
    <function name="xmlhash_foreach_key" c:identifier="e_xmlhash_foreach_key">
      <doc xml:space="preserve">Executes @func against each key/value pair in @hash.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="hash" transfer-ownership="none">
          <doc xml:space="preserve">an #EXmlHash</doc>
          <type name="XmlHash" c:type="EXmlHash*"/>
        </parameter>
        <parameter name="func"
                   transfer-ownership="none"
                   scope="async"
                   closure="2">
          <doc xml:space="preserve">the #EXmlHashFunc to execute on the data in @hash</doc>
          <type name="XmlHashFunc" c:type="EXmlHashFunc"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <doc xml:space="preserve">the data to pass to @func</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="xmlhash_foreach_key_remove"
              c:identifier="e_xmlhash_foreach_key_remove">
      <doc xml:space="preserve">Calls g_hash_table_foreach_remove() on @hash&lt;!-- --&gt;'s internal hash
table.  See g_hash_table_foreach_remove() for details.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="hash" transfer-ownership="none">
          <doc xml:space="preserve">an #EXmlHash</doc>
          <type name="XmlHash" c:type="EXmlHash*"/>
        </parameter>
        <parameter name="func"
                   transfer-ownership="none"
                   scope="async"
                   closure="2">
          <doc xml:space="preserve">the #EXmlHashFunc to execute on the data in @hash</doc>
          <type name="XmlHashRemoveFunc" c:type="EXmlHashRemoveFunc"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <doc xml:space="preserve">the data to pass to @func</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="xmlhash_new"
              c:identifier="e_xmlhash_new"
              introspectable="0">
      <doc xml:space="preserve">Creates a new #EXmlHash from the file @filename. If @filename does
not already exist, an empty #EXmlHash will be created.</doc>
      <return-value>
        <doc xml:space="preserve">The new #EXmlHash structure, or %NULL if unable to parse @filename.</doc>
        <type name="XmlHash" c:type="EXmlHash*"/>
      </return-value>
      <parameters>
        <parameter name="filename" transfer-ownership="none">
          <doc xml:space="preserve">the name of an XML file</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="xmlhash_remove" c:identifier="e_xmlhash_remove">
      <doc xml:space="preserve">Remove the entry in @hash with key equal to @key, if it exists.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="hash" transfer-ownership="none">
          <doc xml:space="preserve">the #EXmlHash to remove an entry from</doc>
          <type name="XmlHash" c:type="EXmlHash*"/>
        </parameter>
        <parameter name="key" transfer-ownership="none">
          <doc xml:space="preserve">the key of the entry to remove</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </function>
    <function name="xmlhash_write" c:identifier="e_xmlhash_write">
      <doc xml:space="preserve">Writes the XML represented by @hash to the file originally passed
to e_xmlhash_new().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="hash" transfer-ownership="none">
          <doc xml:space="preserve">The #EXmlHash to write.</doc>
          <type name="XmlHash" c:type="EXmlHash*"/>
        </parameter>
      </parameters>
    </function>
  </namespace>
</repository>
