<?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.21,libcamel-1.2.so.54"
             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>
    <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="1"
                deprecated-version="3.8">
        <doc-deprecated xml:space="preserve">Just use the #GError API directly.</doc-deprecated>
        <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">Get localized human readable description of the given error code.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Localized human readable description of the given error code</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve">an #EClientError error code</doc>
            <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="1"
                deprecated-version="3.8">
        <doc xml:space="preserve">Copies a #GSList of #GObject&lt;!-- --&gt;s to the end of @copy_to.</doc>
        <doc-deprecated xml:space="preserve">Use e_util_copy_object_slist() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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="1"
                deprecated-version="3.8">
        <doc xml:space="preserve">Copies the #GSList of strings to the end of @copy_to.</doc>
        <doc-deprecated xml:space="preserve">Use e_util_copy_string_slist() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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="1"
                deprecated-version="3.8">
        <doc xml:space="preserve">Calls g_object_unref() on each member of @objects and then frees @objects
itself.</doc>
        <doc-deprecated xml:space="preserve">Use g_slist_free_full() instead.</doc-deprecated>
        <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="1"
                deprecated-version="3.8">
        <doc xml:space="preserve">Frees memory previously allocated by e_client_util_strv_to_slist().</doc>
        <doc-deprecated xml:space="preserve">Use g_slist_free_full() instead.</doc-deprecated>
        <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="1"
                deprecated-version="3.8">
        <doc xml:space="preserve">Convert a list of strings into a %NULL-terminated array of strings.</doc>
        <doc-deprecated xml:space="preserve">Use e_util_slist_to_strv() instead.</doc-deprecated>
        <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="1"
                deprecated-version="3.8">
        <doc xml:space="preserve">Convert a %NULL-terminated array of strings to a list of strings.</doc>
        <doc-deprecated xml:space="preserve">Use e_util_strv_to_slist() instead.</doc-deprecated>
        <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="1"
                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>
        <doc-deprecated xml:space="preserve">This function is no longer used.</doc-deprecated>
        <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">
            <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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">
            <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>
      </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">
            <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"
                     nullable="1"
                     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="1"
                      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>
        <doc-deprecated xml:space="preserve">Use e_book_client_connect() and
                 e_book_client_connect_finish() or
                 e_cal_client_connect() and
                 e_cal_client_connect_finish() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="1"
                      deprecated-version="3.8"
                      throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_open().</doc>
        <doc-deprecated xml:space="preserve">Use e_book_client_connect() and
                 e_book_client_connect_finish() or
                 e_cal_client_connect() and
                 e_cal_client_connect_finish() instead.</doc-deprecated>
        <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>
      </virtual-method>
      <virtual-method name="open_sync"
                      invoker="open_sync"
                      version="3.2"
                      deprecated="1"
                      deprecated-version="3.8"
                      throws="1">
        <doc xml:space="preserve">Opens the @client, making it ready for queries and other operations.</doc>
        <doc-deprecated xml:space="preserve">Use e_book_client_connect_sync() or
                 e_cal_client_connect_sync() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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">
            <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>
      </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">
            <doc xml:space="preserve">an #EClient</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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="1"
                      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>
        <doc-deprecated xml:space="preserve">Use e_source_remove() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="1"
                      deprecated-version="3.6"
                      throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_remove().</doc>
        <doc-deprecated xml:space="preserve">Use e_source_remove_finish() instead.</doc-deprecated>
        <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>
      </virtual-method>
      <virtual-method name="remove_sync"
                      invoker="remove_sync"
                      version="3.2"
                      deprecated="1"
                      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>
        <doc-deprecated xml:space="preserve">Use e_source_remove_sync() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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="1"
                      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>
        <doc-deprecated xml:space="preserve">Use e_client_get_capabilities() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="1"
                      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>
        <doc-deprecated xml:space="preserve">Use e_client_get_capabilities() instead.</doc-deprecated>
        <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>
      </virtual-method>
      <virtual-method name="retrieve_capabilities_sync"
                      invoker="retrieve_capabilities_sync"
                      version="3.2"
                      deprecated="1"
                      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>
        <doc-deprecated xml:space="preserve">Use e_client_get_capabilities() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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_properties_sync"
                      invoker="retrieve_properties_sync"
                      version="3.16"
                      throws="1">
        <doc xml:space="preserve">Retrieves @client properties to match server-side values, without waiting
for the D-Bus property change notifications delivery.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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"
                     nullable="1"
                     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="set_backend_property"
                      invoker="set_backend_property"
                      version="3.2"
                      deprecated="1"
                      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>
        <doc-deprecated xml:space="preserve">Clients cannot set backend properties.  Any attempt
                 will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error.</doc-deprecated>
        <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="1"
                      deprecated-version="3.8"
                      throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_set_backend_property().</doc>
        <doc-deprecated xml:space="preserve">Clients cannot set backend properties.  Any attempt
                 will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error.</doc-deprecated>
        <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>
      </virtual-method>
      <virtual-method name="set_backend_property_sync"
                      invoker="set_backend_property_sync"
                      version="3.2"
                      deprecated="1"
                      deprecated-version="3.8"
                      throws="1">
        <doc xml:space="preserve">Sets @client's backend property of name @prop_name
to value @prop_value.</doc>
        <doc-deprecated xml:space="preserve">Clients cannot set backend properties.  Any attempt
                 will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error.</doc-deprecated>
        <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"
                     nullable="1"
                     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="1"
                      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>
        <doc-deprecated xml:space="preserve">Use g_dbus_error_strip_remote_error() instead.</doc-deprecated>
        <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>
      </virtual-method>
      <method name="cancel_all"
              c:identifier="e_client_cancel_all"
              version="3.2"
              deprecated="1"
              deprecated-version="3.8">
        <doc xml:space="preserve">Cancels all pending operations started on @client.</doc>
        <doc-deprecated xml:space="preserve">The function no longer does anything.</doc-deprecated>
        <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="dup_bus_name"
              c:identifier="e_client_dup_bus_name"
              version="3.16">
        <doc xml:space="preserve">Returns a D-Bus bus name that will be used to connect the
client to the backend subprocess.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated string representing a D-Bus bus
         name that will be used to connect the client to
         the backend subprocess. The string should be
         freed by the caller using g_free().</doc>
          <type name="utf8" c:type="gchar*"/>
        </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_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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="1"
              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>
        <doc-deprecated xml:space="preserve">Clients don't need to care if they're fully opened
                 anymore.  This function always returns %TRUE.</doc-deprecated>
        <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="1"
              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>
        <doc-deprecated xml:space="preserve">Use e_book_client_connect() and
                 e_book_client_connect_finish() or
                 e_cal_client_connect() and
                 e_cal_client_connect_finish() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="1"
              deprecated-version="3.8"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_open().</doc>
        <doc-deprecated xml:space="preserve">Use e_book_client_connect() and
                 e_book_client_connect_finish() or
                 e_cal_client_connect() and
                 e_cal_client_connect_finish() instead.</doc-deprecated>
        <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="1"
              deprecated-version="3.8"
              throws="1">
        <doc xml:space="preserve">Opens the @client, making it ready for queries and other operations.</doc>
        <doc-deprecated xml:space="preserve">Use e_book_client_connect_sync() or
                 e_cal_client_connect_sync() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="1"
              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>
        <doc-deprecated xml:space="preserve">Use e_source_remove() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="1"
              deprecated-version="3.6"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_remove().</doc>
        <doc-deprecated xml:space="preserve">Use e_source_remove_finish() instead.</doc-deprecated>
        <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="1"
              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>
        <doc-deprecated xml:space="preserve">Use e_source_remove_sync() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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="1"
              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>
        <doc-deprecated xml:space="preserve">Use e_client_get_capabilities() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="1"
              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>
        <doc-deprecated xml:space="preserve">Use e_client_get_capabilities() instead.</doc-deprecated>
        <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="1"
              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>
        <doc-deprecated xml:space="preserve">Use e_client_get_capabilities() instead.</doc-deprecated>
        <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"
                     nullable="1"
                     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_properties"
              c:identifier="e_client_retrieve_properties"
              version="3.16">
        <doc xml:space="preserve">Asynchronously retrieves @client properties to match server-side values,
without waiting for the D-Bus property change notifications delivery.

When the operation is finished, @callback will be called. You can then
call e_client_retrieve_properties_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="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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="retrieve_properties_finish"
              c:identifier="e_client_retrieve_properties_finish"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_client_retrieve_properties().

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EClient
If an error occurs, the function sets @error and returns %FALSE.</doc>
            <type name="Client" c:type="EClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="retrieve_properties_sync"
              c:identifier="e_client_retrieve_properties_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Retrieves @client properties to match server-side values, without waiting
for the D-Bus property change notifications delivery.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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"
                     nullable="1"
                     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_backend_property"
              c:identifier="e_client_set_backend_property"
              version="3.2"
              deprecated="1"
              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>
        <doc-deprecated xml:space="preserve">Clients cannot set backend properties.  Any attempt
                 will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error.</doc-deprecated>
        <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="1"
              deprecated-version="3.8"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_set_backend_property().</doc>
        <doc-deprecated xml:space="preserve">Clients cannot set backend properties.  Any attempt
                 will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error.</doc-deprecated>
        <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="1"
              deprecated-version="3.8"
              throws="1">
        <doc xml:space="preserve">Sets @client's backend property of name @prop_name
to value @prop_value.</doc>
        <doc-deprecated xml:space="preserve">Clients cannot set backend properties.  Any attempt
                 will fail with an %E_CLIENT_ERROR_NOT_SUPPORTED error.</doc-deprecated>
        <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"
                     nullable="1"
                     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_bus_name"
              c:identifier="e_client_set_bus_name"
              version="3.16">
        <doc xml:space="preserve">Sets a D-Bus bus name that will be used to connect the client
to the backend subprocess.</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="bus_name" transfer-ownership="none">
            <doc xml:space="preserve">a string representing a D-Bus bus name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="unwrap_dbus_error"
              c:identifier="e_client_unwrap_dbus_error"
              version="3.2"
              deprecated="1"
              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>
        <doc-deprecated xml:space="preserve">Use g_dbus_error_strip_remote_error() instead.</doc-deprecated>
        <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>
      <method name="wait_for_connected"
              c:identifier="e_client_wait_for_connected"
              version="3.16">
        <doc xml:space="preserve">Asynchronously waits until the @client is connected (according
to @ESource::connection-status property), but not longer than @timeout_seconds.

The call is finished by e_client_wait_for_connected_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="timeout_seconds" transfer-ownership="none">
            <doc xml:space="preserve">a timeout for the wait, in seconds</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     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="wait_for_connected_finish"
              c:identifier="e_client_wait_for_connected_finish"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_client_wait_for_connected().</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="wait_for_connected_sync"
              c:identifier="e_client_wait_for_connected_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Synchronously waits until the @client is connected (according
to @ESource::connection-status property), but not longer than @timeout_seconds.

Note: This also calls e_client_retrieve_properties_sync() on success, to have
  up-to-date property values on the client side, without a delay due
  to property change notifcations delivery through D-Bus.</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="timeout_seconds" transfer-ownership="none">
            <doc xml:space="preserve">a timeout for the wait, in seconds</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="capabilities" transfer-ownership="none">
        <doc xml:space="preserve">The capabilities of this client</doc>
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <property name="main-context" transfer-ownership="none">
        <doc xml:space="preserve">The main loop context in which notifications for
this client will be delivered.</doc>
        <type name="GLib.MainContext"/>
      </property>
      <property name="online" writable="1" transfer-ownership="none">
        <doc xml:space="preserve">Whether this client's backing data is online.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="opened"
                deprecated="1"
                deprecated-version="3.8"
                transfer-ownership="none">
        <doc xml:space="preserve">Whether this client is open and ready to use.</doc>
        <doc-deprecated xml:space="preserve">This property is no longer relevant and
will always be %TRUE after successfully creating any concrete
type of #EClient.</doc-deprecated>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="readonly" transfer-ownership="none">
        <doc xml:space="preserve">Whether this client's backing data is readonly.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="source"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The #ESource for which this client was created.</doc>
        <type name="Source"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <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="1"
                   deprecated-version="3.8">
        <doc-deprecated xml:space="preserve">This signal is no longer emitted.</doc-deprecated>
        <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" readable="0" private="1">
        <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">
              <doc xml:space="preserve">an #EClient</doc>
              <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">
              <doc xml:space="preserve">an #EClient</doc>
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #EClient</doc>
              <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">
              <doc xml:space="preserve">an #EClient</doc>
              <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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #EClient</doc>
              <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"
                       nullable="1"
                       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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #EClient</doc>
              <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">
              <doc xml:space="preserve">an #EClient</doc>
              <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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #EClient</doc>
              <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"
                       nullable="1"
                       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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #EClient</doc>
              <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">
              <doc xml:space="preserve">an #EClient</doc>
              <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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #EClient</doc>
              <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"
                       nullable="1"
                       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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #EClient</doc>
              <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">
              <doc xml:space="preserve">an #EClient</doc>
              <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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #EClient</doc>
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #EClient</doc>
              <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">
              <doc xml:space="preserve">an #EClient</doc>
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #EClient</doc>
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #EClient</doc>
              <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">
              <doc xml:space="preserve">an #EClient</doc>
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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="retrieve_properties_sync">
        <callback name="retrieve_properties_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="client" transfer-ownership="none">
              <doc xml:space="preserve">an #EClient</doc>
              <type name="Client" c:type="EClient*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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="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">Error codes for #EClient operations.</doc>
      <member name="invalid_arg"
              value="0"
              c:identifier="E_CLIENT_ERROR_INVALID_ARG">
        <doc xml:space="preserve">Invalid argument was used</doc>
      </member>
      <member name="busy" value="1" c:identifier="E_CLIENT_ERROR_BUSY">
        <doc xml:space="preserve">The client is busy</doc>
      </member>
      <member name="source_not_loaded"
              value="2"
              c:identifier="E_CLIENT_ERROR_SOURCE_NOT_LOADED">
        <doc xml:space="preserve">The source is not loaded</doc>
      </member>
      <member name="source_already_loaded"
              value="3"
              c:identifier="E_CLIENT_ERROR_SOURCE_ALREADY_LOADED">
        <doc xml:space="preserve">The source is already loaded</doc>
      </member>
      <member name="authentication_failed"
              value="4"
              c:identifier="E_CLIENT_ERROR_AUTHENTICATION_FAILED">
        <doc xml:space="preserve">Authentication failed</doc>
      </member>
      <member name="authentication_required"
              value="5"
              c:identifier="E_CLIENT_ERROR_AUTHENTICATION_REQUIRED">
        <doc xml:space="preserve">Authentication required</doc>
      </member>
      <member name="repository_offline"
              value="6"
              c:identifier="E_CLIENT_ERROR_REPOSITORY_OFFLINE">
        <doc xml:space="preserve">The repository (client) is offline</doc>
      </member>
      <member name="offline_unavailable"
              value="7"
              c:identifier="E_CLIENT_ERROR_OFFLINE_UNAVAILABLE">
        <doc xml:space="preserve">The operation is unavailable in offline mode</doc>
      </member>
      <member name="permission_denied"
              value="8"
              c:identifier="E_CLIENT_ERROR_PERMISSION_DENIED">
        <doc xml:space="preserve">Permission denied for the operation</doc>
      </member>
      <member name="cancelled"
              value="9"
              c:identifier="E_CLIENT_ERROR_CANCELLED">
        <doc xml:space="preserve">The operation was cancelled</doc>
      </member>
      <member name="could_not_cancel"
              value="10"
              c:identifier="E_CLIENT_ERROR_COULD_NOT_CANCEL">
        <doc xml:space="preserve">The operation cannot be cancelled</doc>
      </member>
      <member name="not_supported"
              value="11"
              c:identifier="E_CLIENT_ERROR_NOT_SUPPORTED">
        <doc xml:space="preserve">The operation is not supported</doc>
      </member>
      <member name="tls_not_available"
              value="12"
              c:identifier="E_CLIENT_ERROR_TLS_NOT_AVAILABLE">
        <doc xml:space="preserve">TLS is not available</doc>
      </member>
      <member name="unsupported_authentication_method"
              value="13"
              c:identifier="E_CLIENT_ERROR_UNSUPPORTED_AUTHENTICATION_METHOD">
        <doc xml:space="preserve">Requested authentication method is not supported</doc>
      </member>
      <member name="search_size_limit_exceeded"
              value="14"
              c:identifier="E_CLIENT_ERROR_SEARCH_SIZE_LIMIT_EXCEEDED">
        <doc xml:space="preserve">Search size limit exceeded</doc>
      </member>
      <member name="search_time_limit_exceeded"
              value="15"
              c:identifier="E_CLIENT_ERROR_SEARCH_TIME_LIMIT_EXCEEDED">
        <doc xml:space="preserve">Search time limit exceeded</doc>
      </member>
      <member name="invalid_query"
              value="16"
              c:identifier="E_CLIENT_ERROR_INVALID_QUERY">
        <doc xml:space="preserve">The query was invalid</doc>
      </member>
      <member name="query_refused"
              value="17"
              c:identifier="E_CLIENT_ERROR_QUERY_REFUSED">
        <doc xml:space="preserve">The query was refused by the server side</doc>
      </member>
      <member name="dbus_error"
              value="18"
              c:identifier="E_CLIENT_ERROR_DBUS_ERROR">
        <doc xml:space="preserve">A D-Bus error occurred</doc>
      </member>
      <member name="other_error"
              value="19"
              c:identifier="E_CLIENT_ERROR_OTHER_ERROR">
        <doc xml:space="preserve">Other error</doc>
      </member>
      <member name="not_opened"
              value="20"
              c:identifier="E_CLIENT_ERROR_NOT_OPENED">
        <doc xml:space="preserve">The client is not opened</doc>
      </member>
      <member name="out_of_sync"
              value="21"
              c:identifier="E_CLIENT_ERROR_OUT_OF_SYNC">
        <doc xml:space="preserve">The clien tis out of sync</doc>
      </member>
    </enumeration>
    <record name="ClientErrorsList"
            c:type="EClientErrorsList"
            version="3.2"
            deprecated="1"
            deprecated-version="3.8">
      <doc-deprecated xml:space="preserve">This structure is no longer used.</doc-deprecated>
      <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>
    <record name="Collator"
            c:type="ECollator"
            version="3.12"
            glib:type-name="ECollator"
            glib:get-type="e_collator_get_type"
            c:symbol-prefix="collator">
      <doc xml:space="preserve">An opaque object used for locale specific string comparisons
and sort ordering.</doc>
      <constructor name="new"
                   c:identifier="e_collator_new"
                   version="3.12"
                   throws="1">
        <doc xml:space="preserve">Creates a new #ECollator for the given @locale,
the returned collator should be freed with e_collator_unref().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly created #ECollator.</doc>
          <type name="Collator" c:type="ECollator*"/>
        </return-value>
        <parameters>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve">The locale under which to sort</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_interpret_country"
                   c:identifier="e_collator_new_interpret_country"
                   version="3.12"
                   throws="1">
        <doc xml:space="preserve">Creates a new #ECollator for the given @locale,
the returned collator should be freed with e_collator_unref().

In addition, this also reliably interprets the country
code from the @locale string and stores it to @country_code.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly created #ECollator.</doc>
          <type name="Collator" c:type="ECollator*"/>
        </return-value>
        <parameters>
          <parameter name="locale" transfer-ownership="none">
            <doc xml:space="preserve">The locale under which to sort</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="country_code"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">A location to store the interpreted country code from @locale</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="collate"
              c:identifier="e_collator_collate"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Compares @str_a with @str_b, the order of strings is determined by the parameters of @collator.

The @result will be set to integer less than, equal to, or greater than zero if @str_a is found,
respectively, to be less than, to match, or be greater than @str_b.

Either @str_a or @str_b can be %NULL, %NULL strings are considered to sort below other strings.

This function will first ensure that both strings are valid UTF-8.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, otherwise if %FALSE is returned then @error will be set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="collator" transfer-ownership="none">
            <doc xml:space="preserve">An #ECollator</doc>
            <type name="Collator" c:type="ECollator*"/>
          </instance-parameter>
          <parameter name="str_a"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">A string to compare</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="str_b"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">The string to compare with @str_a</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="result"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">A location to store the comparison result</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="generate_key"
              c:identifier="e_collator_generate_key"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Generates a collation key for @str, the result of comparing
two collation keys with strcmp() will be the same result
of calling e_collator_collate() on the same original strings.

This function will first ensure that @str is valid UTF-8 encoded.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A collation key for @str, or %NULL on failure with @error set.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="collator" transfer-ownership="none">
            <doc xml:space="preserve">An #ECollator</doc>
            <type name="Collator" c:type="ECollator*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">The string to generate a collation key for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="generate_key_for_index"
              c:identifier="e_collator_generate_key_for_index"
              version="3.12">
        <doc xml:space="preserve">Generates a sort key for the given alphabetic @index.

The generated sort key is guaranteed to sort below
any sort keys for words beginning with any variant of
the given letter.

For instance, a sort key generated for the index 5 of
a latin alphabet, where the fifth index is 'E' will sort
below any sort keys generated for words starting with
the characters 'e', 'E', 'é', 'É', 'è' or 'È'. It will also
sort above any sort keys generated for words starting with
the characters 'd' or 'D'.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A sort key for the given index</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="collator" transfer-ownership="none">
            <doc xml:space="preserve">An #ECollator</doc>
            <type name="Collator" c:type="ECollator*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">An index into the alphabetic labels</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_index"
              c:identifier="e_collator_get_index"
              version="3.12">
        <doc xml:space="preserve">Checks which index, as determined by e_collator_get_index_labels(),
that @str should sort under.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The alphabetic index under which @str would sort</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="collator" transfer-ownership="none">
            <doc xml:space="preserve">An #ECollator</doc>
            <type name="Collator" c:type="ECollator*"/>
          </instance-parameter>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">A string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_index_labels"
              c:identifier="e_collator_get_index_labels"
              version="3.12">
        <doc xml:space="preserve">Fetches the displayable labels and index positions for the active alphabet.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">
  The array of displayable labels for each index in the active alphabet(s).</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="collator" transfer-ownership="none">
            <doc xml:space="preserve">An #ECollator</doc>
            <type name="Collator" c:type="ECollator*"/>
          </instance-parameter>
          <parameter name="n_labels"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">The number of labels/indexes available for @collator</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="underflow"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">The underflow index, for any words which sort below the active alphabet(s)</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="inflow"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">The inflow index, for any words which sort between the active alphabets (if there is more than one)</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="overflow"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">The overflow index, for any words which sort above the active alphabet(s)</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref" c:identifier="e_collator_ref" version="3.12">
        <doc xml:space="preserve">Increases the reference count of @collator.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">@collator</doc>
          <type name="Collator" c:type="ECollator*"/>
        </return-value>
        <parameters>
          <instance-parameter name="collator" transfer-ownership="none">
            <doc xml:space="preserve">An #ECollator</doc>
            <type name="Collator" c:type="ECollator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unref" c:identifier="e_collator_unref" version="3.12">
        <doc xml:space="preserve">Decreases the reference count of @collator.
If the reference count reaches 0 then the collator is freed</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="collator" transfer-ownership="none">
            <doc xml:space="preserve">An #ECollator</doc>
            <type name="Collator" c:type="ECollator*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="error_quark" c:identifier="e_collator_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
    </record>
    <enumeration name="CollatorError"
                 c:type="ECollatorError"
                 glib:error-domain="e-collator-error-quark">
      <doc xml:space="preserve">Errors from the #E_COLLATOR_ERROR domain.</doc>
      <member name="open" value="0" c:identifier="E_COLLATOR_ERROR_OPEN">
        <doc xml:space="preserve">An error occured trying to open a collator and access collation data.</doc>
      </member>
      <member name="conversion"
              value="1"
              c:identifier="E_COLLATOR_ERROR_CONVERSION">
        <doc xml:space="preserve">An error occurred converting character encodings</doc>
      </member>
      <member name="invalid_locale"
              value="2"
              c:identifier="E_COLLATOR_ERROR_INVALID_LOCALE">
        <doc xml:space="preserve">A malformed locale name was given to e_collator_new()</doc>
      </member>
    </enumeration>
    <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>
    <interface name="Extensible"
               c:symbol-prefix="extensible"
               c:type="EExtensible"
               glib:type-name="EExtensible"
               glib:get-type="e_extensible_get_type"
               glib:type-struct="ExtensibleInterface">
      <method name="list_extensions"
              c:identifier="e_extensible_list_extensions"
              version="3.4"
              introspectable="0">
        <doc xml:space="preserve">Returns a list of #EExtension objects bound to @extensible whose
types are ancestors of @extension_type.  For a complete list of
extension objects bound to @extensible, pass %E_TYPE_EXTENSION.

The list itself should be freed with g_list_free().  The extension
objects are owned by @extensible and should not be unreferenced.</doc>
        <return-value>
          <doc xml:space="preserve">a list of extension objects derived from @extension_type</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="extensible" transfer-ownership="none">
            <doc xml:space="preserve">an #EExtensible</doc>
            <type name="Extensible" c:type="EExtensible*"/>
          </instance-parameter>
          <parameter name="extension_type" transfer-ownership="none">
            <doc xml:space="preserve">the type of extensions to list</doc>
            <type name="GType" c:type="GType"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_extensions"
              c:identifier="e_extensible_load_extensions"
              version="3.4">
        <doc xml:space="preserve">Creates an instance of all instantiable subtypes of #EExtension which
target the class of @extensible.  The lifetimes of these newly created
#EExtension objects are bound to @extensible such that they are finalized
when @extensible is finalized.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extensible" transfer-ownership="none">
            <doc xml:space="preserve">an #EExtensible</doc>
            <type name="Extensible" c:type="EExtensible*"/>
          </instance-parameter>
        </parameters>
      </method>
    </interface>
    <record name="ExtensibleInterface"
            c:type="EExtensibleInterface"
            glib:is-gtype-struct-for="Extensible">
      <field name="parent_interface">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
    </record>
    <class name="Extension"
           c:symbol-prefix="extension"
           c:type="EExtension"
           version="3.4"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="EExtension"
           glib:get-type="e_extension_get_type"
           glib:type-struct="ExtensionClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="get_extensible"
              c:identifier="e_extension_get_extensible"
              version="3.4"
              introspectable="0">
        <doc xml:space="preserve">Returns the object that @extension extends.</doc>
        <return-value>
          <doc xml:space="preserve">the object being extended</doc>
          <type name="Extensible" c:type="EExtensible*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #EExtension</doc>
            <type name="Extension" c:type="EExtension*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="extensible"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Extensible"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="ExtensionPrivate" c:type="EExtensionPrivate*"/>
      </field>
    </class>
    <record name="ExtensionClass"
            c:type="EExtensionClass"
            glib:is-gtype-struct-for="Extension">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="extensible_type">
        <type name="GType" c:type="GType"/>
      </field>
    </record>
    <record name="ExtensionPrivate" c:type="EExtensionPrivate" disguised="1">
    </record>
    <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="1"
              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>
        <doc-deprecated xml:space="preserve">Use e_flag_wait_until() instead.</doc-deprecated>
        <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>
    <callback name="FreeFormExpBuildSexpFunc"
              c:type="EFreeFormExpBuildSexpFunc">
      <return-value transfer-ownership="full">
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="word" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="options" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="hint" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
      </parameters>
    </callback>
    <record name="FreeFormExpSymbol" c:type="EFreeFormExpSymbol">
      <field name="names" writable="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="hint" writable="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="build_sexp" writable="1">
        <type name="FreeFormExpBuildSexpFunc"
              c:type="EFreeFormExpBuildSexpFunc"/>
      </field>
    </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>
    <class name="Module"
           c:symbol-prefix="module"
           c:type="EModule"
           version="3.4"
           parent="GObject.TypeModule"
           glib:type-name="EModule"
           glib:get-type="e_module_get_type"
           glib:type-struct="ModuleClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <implements name="GObject.TypePlugin"/>
      <constructor name="new" c:identifier="e_module_new" version="3.4">
        <doc xml:space="preserve">Creates a new #EModule that will load the specific shared library
when in use.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #EModule for @filename</doc>
          <type name="Module" c:type="EModule*"/>
        </return-value>
        <parameters>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve">filename of the shared library module</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="load_all_in_directory"
                c:identifier="e_module_load_all_in_directory"
                version="3.4"
                introspectable="0">
        <doc xml:space="preserve">Loads all the modules in the specified directory into memory.  If
you want to unload them (enabling on-demand loading) you must call
g_type_module_unuse() on all the modules.  Free the returned list
with g_list_free().</doc>
        <return-value>
          <doc xml:space="preserve">a list of #EModules loaded from @dirname</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </return-value>
        <parameters>
          <parameter name="dirname" transfer-ownership="none">
            <doc xml:space="preserve">pathname for a directory containing modules to load</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="load_file"
                c:identifier="e_module_load_file"
                version="3.16"
                introspectable="0">
        <doc xml:space="preserve">Load the module from the specified filename into memory. If
you want to unload it (enabling on-demand loading) you must call
g_type_module_unuse() on the module.</doc>
        <return-value>
          <doc xml:space="preserve">an #EModule loaded from @filename</doc>
          <type name="Module" c:type="EModule*"/>
        </return-value>
        <parameters>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve">filename of the module to load</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_filename"
              c:identifier="e_module_get_filename"
              version="3.4">
        <doc xml:space="preserve">Returns the filename of the shared library for @module.  The
string is owned by @module and should not be modified or freed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the filename for @module</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="module" transfer-ownership="none">
            <doc xml:space="preserve">an #EModule</doc>
            <type name="Module" c:type="EModule*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="filename"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The filename of the module.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent">
        <type name="GObject.TypeModule" c:type="GTypeModule"/>
      </field>
      <field name="priv">
        <type name="ModulePrivate" c:type="EModulePrivate*"/>
      </field>
    </class>
    <record name="ModuleClass"
            c:type="EModuleClass"
            glib:is-gtype-struct-for="Module">
      <field name="parent_class">
        <type name="GObject.TypeModuleClass" c:type="GTypeModuleClass"/>
      </field>
    </record>
    <record name="ModulePrivate" c:type="EModulePrivate" 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_string"
                   c:identifier="e_named_parameters_new_string"
                   version="3.18">
        <doc xml:space="preserve">Creates a new instance of an #ENamedParamters, with initial content being
taken from @str. This should be freed with e_named_parameters_free(),
when no longer needed. Names are compared case insensitively.

The @str should be created with e_named_parameters_to_string(), to be
properly encoded.

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="str" transfer-ownership="none">
            <doc xml:space="preserve">a string to be used as a content of a newly created #ENamedParameters</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </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"
                     nullable="1"
                     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="count"
              c:identifier="e_named_parameters_count"
              version="3.18">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The number of stored named parameters in @parameters</doc>
          <type name="guint" c:type="guint"/>
        </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>
      <method name="exists"
              c:identifier="e_named_parameters_exists"
              version="3.18">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether @parameters holds a parameter named @name</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 the parameter whose existence to check</doc>
            <type name="utf8" c:type="const gchar*"/>
          </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="get_name"
              c:identifier="e_named_parameters_get_name"
              version="3.18">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The name of the parameters at index @index,
   or %NULL, of the @index is out of bounds or other error. The returned
   string should be freed with g_free() when done with it.</doc>
          <type name="utf8" c:type="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="index" transfer-ownership="none">
            <doc xml:space="preserve">an index of the parameter whose name to retrieve</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="new_clone"
              c:identifier="e_named_parameters_new_clone"
              version="3.16">
        <doc xml:space="preserve">Creates a new instance of an #ENamedParameters, with initial content
being taken from @parameters. 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>
          <instance-parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters to be used as a content of a newly
   created #ENamedParameters</doc>
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </instance-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"
                     nullable="1"
                     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_string"
              c:identifier="e_named_parameters_to_string"
              version="3.18">
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Contents of @parameters as a string</doc>
          <type name="utf8" c:type="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>
        </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">
            <doc xml:space="preserve">Maximum number of threads for this pool</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="thread_func" transfer-ownership="none" closure="2">
            <doc xml:space="preserve">Function to run for a given thread</doc>
            <type name="GLib.Func" c:type="GFunc"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">The user data to pass to @thread_func</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="ProxyMethod"
                 version="3.12"
                 glib:type-name="EProxyMethod"
                 glib:get-type="e_proxy_method_get_type"
                 c:type="EProxyMethod">
      <doc xml:space="preserve">Network proxy configuration methods.</doc>
      <member name="default"
              value="0"
              c:identifier="E_PROXY_METHOD_DEFAULT"
              glib:nick="default">
        <doc xml:space="preserve">Use the default #GProxyResolver (see g_proxy_resolver_get_default()).</doc>
      </member>
      <member name="manual"
              value="1"
              c:identifier="E_PROXY_METHOD_MANUAL"
              glib:nick="manual">
        <doc xml:space="preserve">Use the FTP/HTTP/HTTPS/SOCKS settings defined in #ESourceProxy.</doc>
      </member>
      <member name="auto"
              value="2"
              c:identifier="E_PROXY_METHOD_AUTO"
              glib:nick="auto">
        <doc xml:space="preserve">Use the autoconfiguration URL defined in #ESourceProxy.</doc>
      </member>
      <member name="none"
              value="3"
              c:identifier="E_PROXY_METHOD_NONE"
              glib:nick="none">
        <doc xml:space="preserve">Direct connection; do not use a network proxy.</doc>
      </member>
    </enumeration>
    <constant name="SOURCE_CREDENTIAL_PASSWORD"
              value="password"
              c:type="E_SOURCE_CREDENTIAL_PASSWORD"
              version="3.16">
      <doc xml:space="preserve">A name of the named parameter used for passwords in credentials,
used to authenticate users with e_source_invoke_authenticate_sync()
and e_source_invoke_authenticate(). The named parameter is optional,
different authentication methods can use different names.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_CREDENTIAL_SSL_TRUST"
              value="ssl-trust"
              c:type="E_SOURCE_CREDENTIAL_SSL_TRUST"
              version="3.16">
      <doc xml:space="preserve">A name of the named parameter used for SSL trust in credentials,
used to authenticate users with e_source_invoke_authenticate_sync()
and e_source_invoke_authenticate(). The named parameter is optional.
Its value corresponds to current ESourceWebdav::ssl-trust property,
in case the ESource has that extension available. This is required
to have up-to-date data on the server side, when the client side
just saved the SSL trust change, which might not be propagated
into the server (factory) side quickly enough. The key is added into
the credentials in invoke_authneticate() automatically, if the
corresponding ESource contain a WebDAV extension and the key
is not part of the credentials already.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_CREDENTIAL_USERNAME"
              value="username"
              c:type="E_SOURCE_CREDENTIAL_USERNAME"
              version="3.16">
      <doc xml:space="preserve">A name of the named parameter used for usernames in credentials,
used to authenticate users with e_source_invoke_authenticate_sync()
and e_source_invoke_authenticate(). The named parameter is optional,
different authentication methods can use different names.</doc>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <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_CONTACTS_BACKEND"
              value="Contacts Backend"
              c:type="E_SOURCE_EXTENSION_CONTACTS_BACKEND">
      <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_LDAP_BACKEND"
              value="LDAP Backend"
              c:type="E_SOURCE_EXTENSION_LDAP_BACKEND">
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="SOURCE_EXTENSION_LOCAL_BACKEND"
              value="Local Backend"
              c:type="E_SOURCE_EXTENSION_LOCAL_BACKEND">
      <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_PROXY"
              value="Proxy"
              c:type="E_SOURCE_EXTENSION_PROXY"
              version="3.12">
      <doc xml:space="preserve">Pass this extension name to e_source_get_extension() to access
#ESourceProxy.  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_WEATHER_BACKEND"
              value="Weather Backend"
              c:type="E_SOURCE_EXTENSION_WEATHER_BACKEND">
      <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="SoupAuthBearer"
           c:symbol-prefix="soup_auth_bearer"
           c:type="ESoupAuthBearer"
           version="3.10"
           parent="GObject.Object"
           glib:type-name="ESoupAuthBearer"
           glib:get-type="e_soup_auth_bearer_get_type"
           glib:type-struct="SoupAuthBearerClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="set_access_token"
              c:identifier="e_soup_auth_bearer_set_access_token"
              version="3.10">
        <doc xml:space="preserve">This function is analogous to soup_auth_authenticate() for "Basic" HTTP
authentication, except it takes an OAuth 2.0 access token instead of a
username and password.

If @expires_in_seconds is greater than zero, soup_auth_is_authenticated()
will return %FALSE after the given number of seconds have elapsed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="bearer" transfer-ownership="none">
            <doc xml:space="preserve">an #ESoupAuthBearer</doc>
            <type name="SoupAuthBearer" c:type="ESoupAuthBearer*"/>
          </instance-parameter>
          <parameter name="access_token" transfer-ownership="none">
            <doc xml:space="preserve">an OAuth 2.0 access token</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="expires_in_seconds" transfer-ownership="none">
            <doc xml:space="preserve">expiry for @access_token, or 0 if unknown</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" introspectable="0">
        <type c:type="SoupAuth"/>
      </field>
      <field name="priv">
        <type name="SoupAuthBearerPrivate" c:type="ESoupAuthBearerPrivate*"/>
      </field>
    </class>
    <record name="SoupAuthBearerClass"
            c:type="ESoupAuthBearerClass"
            glib:is-gtype-struct-for="SoupAuthBearer">
      <field name="parent_class" introspectable="0">
        <type c:type="SoupAuthClass"/>
      </field>
    </record>
    <record name="SoupAuthBearerPrivate"
            c:type="ESoupAuthBearerPrivate"
            disguised="1">
    </record>
    <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"/>
      <implements name="Gio.ProxyResolver"/>
      <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="authenticate">
        <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="credentials" transfer-ownership="none">
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <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">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="credentials_required">
        <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="reason" transfer-ownership="none">
            <type name="SourceCredentialsReason"
                  c:type="ESourceCredentialsReason"/>
          </parameter>
          <parameter name="certificate_pem" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="certificate_errors" transfer-ownership="none">
            <type name="Gio.TlsCertificateFlags"
                  c:type="GTlsCertificateFlags"/>
          </parameter>
          <parameter name="op_error" transfer-ownership="none">
            <type name="GLib.Error" c:type="const GError*"/>
          </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">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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 error</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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     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 error</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"
                     nullable="1"
                     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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     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="invoke_authenticate_impl" throws="1">
        <return-value transfer-ownership="none">
          <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="dbus_source" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="arg_credentials" transfer-ownership="none">
            <type name="utf8" c:type="const gchar* const*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="invoke_credentials_required_impl" throws="1">
        <return-value transfer-ownership="none">
          <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="dbus_source" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="arg_reason" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="arg_certificate_pem" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="arg_certificate_errors" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="arg_dbus_error_name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="arg_dbus_error_message" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </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">
            <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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 error</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>
      </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 error</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"
                     nullable="1"
                     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">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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 error</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>
      </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 error</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"
                     nullable="1"
                     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">
            <doc xml:space="preserve">the #ESource to be removed</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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">
            <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>
      </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 error</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"
                     nullable="1"
                     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="unset_last_credentials_required_arguments_impl"
                      throws="1">
        <return-value transfer-ownership="none">
          <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"
                     nullable="1"
                     allow-none="1">
            <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">
            <doc xml:space="preserve">a writable #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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 error</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>
      </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 error</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"
                     nullable="1"
                     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="delete_password"
              c:identifier="e_source_delete_password"
              version="3.12">
        <doc xml:space="preserve">Asynchronously deletes the password for @source from either the default
keyring or session keyring.  This operation does not rely on the registry
service and therefore works for any #ESource -- registered or "scratch".

When the operation is finished, @callback will be called.  You can then
call e_source_delete_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="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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="delete_password_finish"
              c:identifier="e_source_delete_password_finish"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_delete_password().

Note the boolean return value indicates whether the delete operation
itself completed successfully, not whether a password was found and
deleted.  If no password was found, the function will still return
%TRUE.  If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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="delete_password_sync"
              c:identifier="e_source_delete_password_sync"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Deletes the password for @source from either the default keyring or
session keyring.  This operation does not rely on the registry service
and therefore works for any #ESource -- registered or "scratch".

Note the boolean return value indicates whether the delete operation
itself completed successfully, not whether a password was found and
deleted.  If no password was found, the function will still return
%TRUE.  If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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"
                     nullable="1"
                     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="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_secret_label"
              c:identifier="e_source_dup_secret_label"
              version="3.12">
        <doc xml:space="preserve">Creates a label string based on @source's #ESource:display-name for use
with #SecretItem.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a newly-allocated secret label</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="emit_credentials_required"
              c:identifier="e_source_emit_credentials_required"
              version="3.16">
        <doc xml:space="preserve">Emits localy (in this process only) the ESource::credentials-required
signal with given parameters. That's the difference with e_source_invoke_credentials_required(),
which calls the signal globally, within each client.</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="reason" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsReason, why the credentials are required</doc>
            <type name="SourceCredentialsReason"
                  c:type="ESourceCredentialsReason"/>
          </parameter>
          <parameter name="certificate_pem" transfer-ownership="none">
            <doc xml:space="preserve">PEM-encoded secure connection certificate, or an empty string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="certificate_errors" transfer-ownership="none">
            <doc xml:space="preserve">a bit-or of #GTlsCertificateFlags for secure connection certificate</doc>
            <type name="Gio.TlsCertificateFlags"
                  c:type="GTlsCertificateFlags"/>
          </parameter>
          <parameter name="op_error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GError with a description of the previous credentials error, or %NULL</doc>
            <type name="GLib.Error" c:type="const GError*"/>
          </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_connection_status"
              c:identifier="e_source_get_connection_status"
              version="3.16">
        <doc xml:space="preserve">Obtain current connection status of the @source.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Current connection status of the @source.</doc>
          <type name="SourceConnectionStatus"
                c:type="ESourceConnectionStatus"/>
        </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_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_last_credentials_required_arguments"
              c:identifier="e_source_get_last_credentials_required_arguments"
              version="3.16">
        <doc xml:space="preserve">Asynchronously calls the GetLastCredentialsRequiredArguments method
on the server side, to get the last values used for the 'credentials-required'
signal. See e_source_get_last_credentials_required_arguments_sync() for
more information.

When the operation is finished, @callback will be called. You can then
call e_source_get_last_credentials_required_arguments_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"
                     nullable="1"
                     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"
                     nullable="1"
                     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_last_credentials_required_arguments_finish"
              c:identifier="e_source_get_last_credentials_required_arguments_finish"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_get_last_credentials_required_arguments().
See e_source_get_last_credentials_required_arguments_sync() for more information
about the output arguments.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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_reason"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">an #ESourceCredentialsReason, why the credentials are required</doc>
            <type name="SourceCredentialsReason"
                  c:type="ESourceCredentialsReason*"/>
          </parameter>
          <parameter name="out_certificate_pem"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">PEM-encoded secure connection certificate, or an empty string</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="out_certificate_errors"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a bit-or of #GTlsCertificateFlags for secure connection certificate</doc>
            <type name="Gio.TlsCertificateFlags"
                  c:type="GTlsCertificateFlags*"/>
          </parameter>
          <parameter name="out_op_error"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a #GError with a description of the previous credentials error</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_last_credentials_required_arguments_sync"
              c:identifier="e_source_get_last_credentials_required_arguments_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Retrieves the last used arguments of the 'credentials-required' signal emission.
If there was none emitted yet, or a corresponding 'authenitcate' had been emitted
already, then the @out_reason is set to #E_SOURCE_CREDENTIALS_REASON_UNKNOWN
and the value of other 'out' arguments is set to no values.

If an error occurs, the function sets @error and returns %FALSE. The result gchar
values 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 error</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="out_reason"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">an #ESourceCredentialsReason, why the credentials are required</doc>
            <type name="SourceCredentialsReason"
                  c:type="ESourceCredentialsReason*"/>
          </parameter>
          <parameter name="out_certificate_pem"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">PEM-encoded secure connection certificate, or an empty string</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="out_certificate_errors"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a bit-or of #GTlsCertificateFlags for secure connection certificate</doc>
            <type name="Gio.TlsCertificateFlags"
                  c:type="GTlsCertificateFlags*"/>
          </parameter>
          <parameter name="out_op_error"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a #GError with a description of the previous credentials error</doc>
            <type name="GLib.Error" c:type="GError**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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="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"
                     nullable="1"
                     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"
                     nullable="1"
                     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 error</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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     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 error</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"
                     nullable="1"
                     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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     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="invoke_authenticate"
              c:identifier="e_source_invoke_authenticate"
              version="3.16">
        <doc xml:space="preserve">Asynchronously calls the InvokeAuthenticate method on the server side,
thus the backend knows what credentials to use to connect to its (possibly
remote) data store.

When the operation is finished, @callback will be called. You can then
call e_source_invoke_authenticate_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="credentials"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">an #ENamedParameters structure with credentials to use; can be %NULL
   to use those from the last call</doc>
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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="invoke_authenticate_finish"
              c:identifier="e_source_invoke_authenticate_finish"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_invoke_authenticate().

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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="invoke_authenticate_sync"
              c:identifier="e_source_invoke_authenticate_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Calls the InvokeAuthenticate method on the server side, thus the backend
knows what credentials to use to connect to its (possibly remote) data store.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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="credentials"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">an #ENamedParameters structure with credentials to use; can be %NULL
   to use those from the last call</doc>
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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="invoke_credentials_required"
              c:identifier="e_source_invoke_credentials_required"
              version="3.16">
        <doc xml:space="preserve">Asynchronously calls the InvokeCredentialsRequired method on the server side,
to inform clients that credentials are required.

When the operation is finished, @callback will be called. You can then
call e_source_invoke_credentials_required_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="reason" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsReason, why the credentials are required</doc>
            <type name="SourceCredentialsReason"
                  c:type="ESourceCredentialsReason"/>
          </parameter>
          <parameter name="certificate_pem" transfer-ownership="none">
            <doc xml:space="preserve">PEM-encoded secure connection certificate, or an empty string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="certificate_errors" transfer-ownership="none">
            <doc xml:space="preserve">a bit-or of #GTlsCertificateFlags for secure connection certificate</doc>
            <type name="Gio.TlsCertificateFlags"
                  c:type="GTlsCertificateFlags"/>
          </parameter>
          <parameter name="op_error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GError with a description of the previous credentials error, or %NULL</doc>
            <type name="GLib.Error" c:type="const GError*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="6">
            <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="invoke_credentials_required_finish"
              c:identifier="e_source_invoke_credentials_required_finish"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_invoke_credentials_required().

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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="invoke_credentials_required_sync"
              c:identifier="e_source_invoke_credentials_required_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Let's the client-side know that credentials are required. The @reason defines which
parameters are used. The client passed the credentials with an e_source_authenitcate()
call.

The %E_SOURCE_CREDENTIALS_REASON_REQUIRED is used for the first credentials prompt,
when the client can return credentials as stored from the previous success login.

The %E_SOURCE_CREDENTIALS_REASON_REJECTED is used when the previously used credentials
had been rejected by the server. That usually means that the user should be asked
to provide/correct the credentials.

The %E_SOURCE_CREDENTIALS_REASON_SSL_FAILED is used when a secured connection failed
due to some server-side certificate issues.

The %E_SOURCE_CREDENTIALS_REASON_ERROR is used when the server returned an error.
It is not possible to connect to it at the moment usually.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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="reason" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsReason, why the credentials are required</doc>
            <type name="SourceCredentialsReason"
                  c:type="ESourceCredentialsReason"/>
          </parameter>
          <parameter name="certificate_pem" transfer-ownership="none">
            <doc xml:space="preserve">PEM-encoded secure connection certificate, or an empty string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="certificate_errors" transfer-ownership="none">
            <doc xml:space="preserve">a bit-or of #GTlsCertificateFlags for secure connection certificate</doc>
            <type name="Gio.TlsCertificateFlags"
                  c:type="GTlsCertificateFlags"/>
          </parameter>
          <parameter name="op_error"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GError with a description of the previous credentials error, or %NULL</doc>
            <type name="GLib.Error" c:type="const GError*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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="lookup_password"
              c:identifier="e_source_lookup_password"
              version="3.12">
        <doc xml:space="preserve">Asynchronously looks up a password for @source.  Both the default and
session keyrings are queried.  This operation does not rely on the
registry service and therefore works for any #ESource -- registered
or "scratch".

When the operation is finished, @callback will be called.  You can then
call e_source_lookup_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="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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="lookup_password_finish"
              c:identifier="e_source_lookup_password_finish"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_lookup_password().

Note the boolean return value indicates whether the lookup operation
itself completed successfully, not whether a password was found.  If
no password was found, the function will set @out_password to %NULL
but still return %TRUE.  If an error occurs, the function sets @error
and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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_password"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">return location for the password, or %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_password_sync"
              c:identifier="e_source_lookup_password_sync"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Looks up a password for @source.  Both the default and session keyrings
are queried.  This operation does not rely on the registry service and
therefore works for any #ESource -- registered or "scratch".

Note the boolean return value indicates whether the lookup operation
itself completed successfully, not whether a password was found.  If
no password was found, the function will set @out_password to %NULL
but still return %TRUE.  If an error occurs, the function sets @error
and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="out_password"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">return location for the password, or %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">return location for the signature content</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="length"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     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"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">return location for the signature content</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="length"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="proxy_lookup"
              c:identifier="e_source_proxy_lookup"
              version="3.12">
        <doc xml:space="preserve">Asynchronously determines what proxy, if any, to use to connect to @uri.
See e_source_proxy_lookup_sync() for more details.

When the operation is finished, @callback will be called.  You can then
call e_source_proxy_lookup_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="uri" transfer-ownership="none">
            <doc xml:space="preserve">a URI representing the destination to connect to</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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="proxy_lookup_finish"
              c:identifier="e_source_proxy_lookup_finish"
              version="3.12"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_proxy_lookup().

Free the returned proxy URIs with g_strfreev() when finished with them.</doc>
        <return-value>
          <doc xml:space="preserve">a %NULL-terminated array of proxy URIs, or %NULL</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </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="proxy_lookup_sync"
              c:identifier="e_source_proxy_lookup_sync"
              version="3.12"
              introspectable="0"
              throws="1">
        <doc xml:space="preserve">Looks into @source's #ESourceProxy extension to determine what proxy,
if any, to use to connect to @uri.  The returned proxy URIs are of the
same form described by g_proxy_resolver_lookup().

The proxy extension's #ESourceProxy:method controls how proxy URIs are
determined:

When using @E_PROXY_METHOD_DEFAULT, the function will defer to the
#GProxyResolver returned by g_proxy_resolver_get_default().

When using @E_PROXY_METHOD_MANUAL, the function will configure a
#GSimpleProxyResolver from the HTTP, HTTPS, FTP and SOCKS properties,
as well as #ESourceProxy:ignore-hosts.

When using @E_PROXY_METHOD_AUTO, the function will execute a proxy
auto-config (PAC) file at #ESourceProxy:autoconfig-url.

When using @E_PROXY_METHOD_NONE, the function will only return
&lt;literal&gt;direct://&lt;/literal&gt;.

If @source does not have an #ESourceProxy extension, the function sets
@error to @G_IO_ERROR_NOT_SUPPORTED and returns %NULL.

Free the returned proxy URIs with g_strfreev() when finished with them.</doc>
        <return-value>
          <doc xml:space="preserve">a %NULL-terminated array of proxy URIs, or %NULL</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </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="uri" transfer-ownership="none">
            <doc xml:space="preserve">a URI representing the destination to connect to</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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 error</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 error</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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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 error</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 error</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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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 error</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"
                     nullable="1"
                     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_connection_status"
              c:identifier="e_source_set_connection_status"
              version="3.16">
        <doc xml:space="preserve">Set's current connection status of the @source.</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="connection_status" transfer-ownership="none">
            <doc xml:space="preserve">one of the #ESourceConnectionStatus</doc>
            <type name="SourceConnectionStatus"
                  c:type="ESourceConnectionStatus"/>
          </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"
                     nullable="1"
                     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="store_password"
              c:identifier="e_source_store_password"
              version="3.12">
        <doc xml:space="preserve">Asynchronously stores a password for @source.  This operation does
not rely on the registry service and therefore works for any #ESource
-- registered or "scratch".

If @permanently is %TRUE, the password is stored in the default keyring.
Otherwise the password is stored in the memory-only session keyring.  If
an error occurs, the function sets @error and returns %FALSE.

When the operation is finished, @callback will be called.  You can then
call e_source_store_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="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </instance-parameter>
          <parameter name="password" transfer-ownership="none">
            <doc xml:space="preserve">the password to store</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="permanently" transfer-ownership="none">
            <doc xml:space="preserve">store permanently or just for the session</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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="store_password_finish"
              c:identifier="e_source_store_password_finish"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_store_password().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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="store_password_sync"
              c:identifier="e_source_store_password_sync"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Stores a password for @source.  This operation does not rely on the
registry service and therefore works for any #ESource -- registered
or "scratch".

If @permanently is %TRUE, the password is stored in the default keyring.
Otherwise the password is stored in the memory-only session keyring.  If
an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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="password" transfer-ownership="none">
            <doc xml:space="preserve">the password to store</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="permanently" transfer-ownership="none">
            <doc xml:space="preserve">store permanently or just for the session</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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="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"
                     nullable="1"
                     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="unset_last_credentials_required_arguments"
              c:identifier="e_source_unset_last_credentials_required_arguments"
              version="3.18">
        <doc xml:space="preserve">Asynchronously calls the UnsetLastCredentialsRequiredArguments method
on the server side, to unset the last values used for the 'credentials-required'
signal.

When the operation is finished, @callback will be called. You can then
call e_source_unset_last_credentials_required_arguments_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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="unset_last_credentials_required_arguments_finish"
              c:identifier="e_source_unset_last_credentials_required_arguments_finish"
              version="3.18"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_unset_last_credentials_required_arguments().

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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="unset_last_credentials_required_arguments_sync"
              c:identifier="e_source_unset_last_credentials_required_arguments_sync"
              version="3.18"
              throws="1">
        <doc xml:space="preserve">Unsets the last used arguments of the 'credentials-required' signal emission.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</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"
                     nullable="1"
                     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="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"
                     nullable="1"
                     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"
                     nullable="1"
                     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 error</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 error</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"
                     nullable="1"
                     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="connection-status" transfer-ownership="none">
        <type name="SourceConnectionStatus"/>
      </property>
      <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="authenticate" when="last" no-recurse="1">
        <doc xml:space="preserve">Let's the backend know provided credentials to use to login
to (possibly remote) data store.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="credentials" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters with provided credentials</doc>
            <type name="NamedParameters"/>
          </parameter>
        </parameters>
      </glib:signal>
      <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>
      <glib:signal name="credentials-required" when="last" no-recurse="1">
        <doc xml:space="preserve">The ::credentials-required signal is emitted when the @source
requires credentials to connect to (possibly remote)
data store. The credentials can be passed to the backend using
e_source_authenticate() function.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="reason" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsReason indicating why the credentials are requested</doc>
            <type name="SourceCredentialsReason"/>
          </parameter>
          <parameter name="certificate_pem" transfer-ownership="none">
            <doc xml:space="preserve">PEM-encoded secure connection certificate for failed SSL checks</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="certificate_errors" transfer-ownership="none">
            <doc xml:space="preserve">what failed with the SSL certificate</doc>
            <type name="Gio.TlsCertificateFlags"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve">a text description of the error, if any</doc>
            <type name="GLib.Error"/>
          </parameter>
        </parameters>
      </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"
                     nullable="1"
                     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_credential_name"
              c:identifier="e_source_authentication_dup_credential_name"
              version="3.16">
        <doc xml:space="preserve">Thread-safe variation of e_source_authentication_get_credential_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 #ESourceAuthentication:credential-name</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_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_proxy_uid"
              c:identifier="e_source_authentication_dup_proxy_uid"
              version="3.12">
        <doc xml:space="preserve">Thread-safe variation of e_source_authentication_get_proxy_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 #ESourceAuthentication:proxy-uid</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_credential_name"
              c:identifier="e_source_authentication_get_credential_name"
              version="3.16">
        <doc xml:space="preserve">Returns the credential name used to pass the stored or gathered credential
(like password) into the e_source_invoke_authenticate(). This is
a counterpart of the authentication method. The %NULL means to use
the default name, which is #E_SOURCE_CREDENTIAL_PASSWORD.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the credential name to use for authentication, 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 #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_proxy_uid"
              c:identifier="e_source_authentication_get_proxy_uid"
              version="3.12">
        <doc xml:space="preserve">Returns the #ESource:uid of the #ESource that holds network proxy
settings for use when connecting to a remote account.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the proxy profile #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 #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_credential_name"
              c:identifier="e_source_authentication_set_credential_name"
              version="3.16">
        <doc xml:space="preserve">Sets the credential name used to pass the stored or gathered credential
(like password) into the e_source_invoke_authenticate(). This is
a counterpart of the authentication method. The %NULL means to use
the default name, which is #E_SOURCE_CREDENTIAL_PASSWORD.

The internal copy of @credential_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 #ESourceAuthentication</doc>
            <type name="SourceAuthentication" c:type="ESourceAuthentication*"/>
          </instance-parameter>
          <parameter name="credential_name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a credential name, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </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"
                     nullable="1"
                     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"
                     nullable="1"
                     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_proxy_uid"
              c:identifier="e_source_authentication_set_proxy_uid"
              version="3.12">
        <doc xml:space="preserve">Sets the #ESource:uid of the #ESource that holds network proxy settings
for use when connecting 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="proxy_uid" transfer-ownership="none">
            <doc xml:space="preserve">the proxy profile #ESource:uid</doc>
            <type name="utf8" c:type="const gchar*"/>
          </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"
                     nullable="1"
                     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="credential-name"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </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="proxy-uid"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </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 #EBackend authentication wrapper.</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="error_ssl_failed"
              value="1"
              c:identifier="E_SOURCE_AUTHENTICATION_ERROR_SSL_FAILED"
              glib:nick="error-ssl-failed">
        <doc xml:space="preserve">An SSL certificate check failed. Since: 3.16.</doc>
      </member>
      <member name="accepted"
              value="2"
              c:identifier="E_SOURCE_AUTHENTICATION_ACCEPTED"
              glib:nick="accepted">
        <doc xml:space="preserve">Server requesting authentication accepted password.</doc>
      </member>
      <member name="rejected"
              value="3"
              c:identifier="E_SOURCE_AUTHENTICATION_REJECTED"
              glib:nick="rejected">
        <doc xml:space="preserve">Server requesting authentication rejected password.</doc>
      </member>
      <member name="required"
              value="4"
              c:identifier="E_SOURCE_AUTHENTICATION_REQUIRED"
              glib:nick="required">
        <doc xml:space="preserve">Server requesting authentication, but none was given.</doc>
      </member>
    </enumeration>
    <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"
                     nullable="1"
                     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">
              <doc xml:space="preserve">an #ESource</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="credentials_required">
        <callback name="credentials_required">
          <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="reason" transfer-ownership="none">
              <type name="SourceCredentialsReason"
                    c:type="ESourceCredentialsReason"/>
            </parameter>
            <parameter name="certificate_pem" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="certificate_errors" transfer-ownership="none">
              <type name="Gio.TlsCertificateFlags"
                    c:type="GTlsCertificateFlags"/>
            </parameter>
            <parameter name="op_error" transfer-ownership="none">
              <type name="GLib.Error" c:type="const GError*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="authenticate">
        <callback name="authenticate">
          <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="credentials" transfer-ownership="none">
              <type name="NamedParameters" c:type="const ENamedParameters*"/>
            </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 error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve">the #ESource to be removed</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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">
              <doc xml:space="preserve">the #ESource to be removed</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">the #ESource to be removed</doc>
              <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 error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve">a writable #ESource</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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">
              <doc xml:space="preserve">a writable #ESource</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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"
                       nullable="1"
                       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 error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve">a writable #ESource</doc>
              <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 error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </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="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"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #ESource</doc>
              <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"
                       nullable="1"
                       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"
                       nullable="1"
                       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 error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </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="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 error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </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="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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">
              <doc xml:space="preserve">an #ESource</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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"
                       nullable="1"
                       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 error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </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="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 error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </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="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full"
                       optional="1"
                       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"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full"
                       optional="1"
                       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">
              <doc xml:space="preserve">an #ESource</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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"
                       nullable="1"
                       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 error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </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="result" transfer-ownership="none">
              <doc xml:space="preserve">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
            <parameter name="out_access_token"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full"
                       optional="1"
                       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"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full"
                       optional="1"
                       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="invoke_credentials_required_impl">
        <callback name="invoke_credentials_required_impl" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="dbus_source" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
            <parameter name="arg_reason" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="arg_certificate_pem" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="arg_certificate_errors" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="arg_dbus_error_name" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="arg_dbus_error_message" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="invoke_authenticate_impl">
        <callback name="invoke_authenticate_impl" throws="1">
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="source" transfer-ownership="none">
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="dbus_source" transfer-ownership="none">
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
            <parameter name="arg_credentials" transfer-ownership="none">
              <type name="utf8" c:type="const gchar* const*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="unset_last_credentials_required_arguments_impl">
        <callback name="unset_last_credentials_required_arguments_impl"
                  throws="1">
          <return-value transfer-ownership="none">
            <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"
                       nullable="1"
                       allow-none="1">
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved">
        <array zero-terminated="0" c:type="gpointer" fixed-size="6">
          <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"
                     nullable="1"
                     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>
    <enumeration name="SourceConnectionStatus"
                 version="3.16"
                 glib:type-name="ESourceConnectionStatus"
                 glib:get-type="e_source_connection_status_get_type"
                 c:type="ESourceConnectionStatus">
      <doc xml:space="preserve">Connection status codes used by the #ESource to indicate its connection state.
This is used in combination with authentication of the ESource. For example,
if there are multiple clients asking for a password and a user enters the password
in one of them, then the status will change into 'connecting', which is a signal
do close the password prompt in the other client, because the credentials had
been already provided.</doc>
      <member name="disconnected"
              value="0"
              c:identifier="E_SOURCE_CONNECTION_STATUS_DISCONNECTED"
              glib:nick="disconnected">
        <doc xml:space="preserve">The source is currently disconnected from its (possibly remote) data store.</doc>
      </member>
      <member name="awaiting_credentials"
              value="1"
              c:identifier="E_SOURCE_CONNECTION_STATUS_AWAITING_CREDENTIALS"
              glib:nick="awaiting-credentials">
        <doc xml:space="preserve">The source asked for credentials with a 'credentials-required' signal and
  is currently awaiting for them.</doc>
      </member>
      <member name="ssl_failed"
              value="2"
              c:identifier="E_SOURCE_CONNECTION_STATUS_SSL_FAILED"
              glib:nick="ssl-failed">
        <doc xml:space="preserve">A user rejected SSL certificate trust for the connection.</doc>
      </member>
      <member name="connecting"
              value="3"
              c:identifier="E_SOURCE_CONNECTION_STATUS_CONNECTING"
              glib:nick="connecting">
        <doc xml:space="preserve">The source is currently connecting to its (possibly remote) data store.</doc>
      </member>
      <member name="connected"
              value="4"
              c:identifier="E_SOURCE_CONNECTION_STATUS_CONNECTED"
              glib:nick="connected">
        <doc xml:space="preserve">The source is currently connected to its (possibly remote) data store.</doc>
      </member>
    </enumeration>
    <class name="SourceContacts"
           c:symbol-prefix="source_contacts"
           c:type="ESourceContacts"
           parent="SourceExtension"
           glib:type-name="ESourceContacts"
           glib:get-type="e_source_contacts_get_type"
           glib:type-struct="SourceContactsClass">
      <method name="get_include_me"
              c:identifier="e_source_contacts_get_include_me">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceContacts" c:type="ESourceContacts*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_include_me"
              c:identifier="e_source_contacts_set_include_me">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceContacts" c:type="ESourceContacts*"/>
          </instance-parameter>
          <parameter name="include_me" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <property name="include-me" 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="SourceContactsPrivate" c:type="ESourceContactsPrivate*"/>
      </field>
    </class>
    <record name="SourceContactsClass"
            c:type="ESourceContactsClass"
            glib:is-gtype-struct-for="SourceContacts">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceContactsPrivate"
            c:type="ESourceContactsPrivate"
            disguised="1">
    </record>
    <class name="SourceCredentialsProvider"
           c:symbol-prefix="source_credentials_provider"
           c:type="ESourceCredentialsProvider"
           version="3.16"
           parent="GObject.Object"
           glib:type-name="ESourceCredentialsProvider"
           glib:get-type="e_source_credentials_provider_get_type"
           glib:type-struct="SourceCredentialsProviderClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <implements name="Extensible"/>
      <constructor name="new"
                   c:identifier="e_source_credentials_provider_new"
                   version="3.16">
        <doc xml:space="preserve">Creates a new #ESourceCredentialsProvider, which is meant to abstract
credential management for #ESource&lt;!-- --&gt;-s.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #ESourceCredentialsProvider</doc>
          <type name="SourceCredentialsProvider"
                c:type="ESourceCredentialsProvider*"/>
        </return-value>
        <parameters>
          <parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="SourceRegistry" c:type="ESourceRegistry*"/>
          </parameter>
        </parameters>
      </constructor>
      <virtual-method name="ref_source" invoker="ref_source" version="3.16">
        <doc xml:space="preserve">Returns referenced #ESource with the given @uid, or %NULL, when it could not be found.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Referenced #ESource with the given @uid, or %NULL, when it
   could not be found. Unref the returned #ESource with g_object_unref(), when no longer needed.</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource UID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="can_prompt"
              c:identifier="e_source_credentials_provider_can_prompt"
              version="3.16">
        <doc xml:space="preserve">Returns whether a credentials prompt can be shown for the @source.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE, when a credentials prompt can be shown for @source, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </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="can_store"
              c:identifier="e_source_credentials_provider_can_store"
              version="3.16">
        <doc xml:space="preserve">Returns whether the @source can store its credentials. When %FALSE is returned,
an attempt to call e_source_credentials_provider_store() or
e_source_credentials_provider_store_sync() will fail for this @source.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE, when the credentials storing for @source is possible, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </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="delete"
              c:identifier="e_source_credentials_provider_delete"
              version="3.16">
        <doc xml:space="preserve">Asynchronously deletes any previously stored credentials for @source.

When the operation is finished, @callback will be called. You can then
call e_source_credentials_provider_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="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource, to lookup credentials for</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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="delete_finish"
              c:identifier="e_source_credentials_provider_delete_finish"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_credentials_provider_delete().

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </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="delete_sync"
              c:identifier="e_source_credentials_provider_delete_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Deletes any previously stored credentials for @source.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource, to store credentials for</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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="lookup"
              c:identifier="e_source_credentials_provider_lookup"
              version="3.16">
        <doc xml:space="preserve">Asynchronously looks up for credentials for @source.

When the operation is finished, @callback will be called. You can then
call e_source_credentials_provider_lookup_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="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource, to lookup credentials for</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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="lookup_finish"
              c:identifier="e_source_credentials_provider_lookup_finish"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_credentials_provider_lookup().

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </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_credentials"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">return location for the credentials</doc>
            <type name="NamedParameters" c:type="ENamedParameters**"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup_sync"
              c:identifier="e_source_credentials_provider_lookup_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Looks up the credentials for @source.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource, to lookup credentials for</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="out_credentials"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">return location for the credentials</doc>
            <type name="NamedParameters" c:type="ENamedParameters**"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_credentials_source"
              c:identifier="e_source_credentials_provider_ref_credentials_source"
              version="3.16"
              introspectable="0">
        <doc xml:space="preserve">Returns a referenced parent #ESource, which holds the credentials for
the given @source. This is useful for collections, where the credentials
are usually stored on the collection source, thus shared between child
sources. When ther eis no such parent source, a %NULL is returned, which
means the @source holds credentials for itself.</doc>
        <return-value>
          <doc xml:space="preserve">referenced parent #ESource, which holds credentials, or %NULL. Unref
   the returned non-NULL #ESource with g_object_unref(), when no longer needed.</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </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="ref_registry"
              c:identifier="e_source_credentials_provider_ref_registry"
              version="3.16"
              introspectable="0">
        <doc xml:space="preserve">Returns refenrenced registry associated with this @provider.</doc>
        <return-value>
          <doc xml:space="preserve">Reference registry associated with this @provider. Unref it
   with g_object_unref() when no longer needed.</doc>
          <type name="GObject.Object" c:type="GObject*"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_source"
              c:identifier="e_source_credentials_provider_ref_source"
              version="3.16">
        <doc xml:space="preserve">Returns referenced #ESource with the given @uid, or %NULL, when it could not be found.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">Referenced #ESource with the given @uid, or %NULL, when it
   could not be found. Unref the returned #ESource with g_object_unref(), when no longer needed.</doc>
          <type name="Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource UID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="register_impl"
              c:identifier="e_source_credentials_provider_register_impl"
              version="3.16">
        <doc xml:space="preserve">Registers a credentials provider implementation and adds its own reference on
the @provider_impl.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on failure, like when there is
   the @provider_impl already registered.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </instance-parameter>
          <parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </parameter>
        </parameters>
      </method>
      <method name="store"
              c:identifier="e_source_credentials_provider_store"
              version="3.16">
        <doc xml:space="preserve">Asynchronously stores the @credentials for @source. Note the actual stored
values can differ for each storage. In other words, not all named parameters
are stored for each @source.

When the operation is finished, @callback will be called. You can then
call e_source_credentials_provider_store_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="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource, to lookup credentials for</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="credentials" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters with credentials to store</doc>
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="permanently" transfer-ownership="none">
            <doc xml:space="preserve">store permanently or just for the session</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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="store_finish"
              c:identifier="e_source_credentials_provider_store_finish"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_source_credentials_provider_store().

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </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="store_sync"
              c:identifier="e_source_credentials_provider_store_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Stores the @credentials for @source. Note the actual stored values
can differ for each storage. In other words, not all named parameters
are stored for each @source.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource, to store credentials for</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="credentials" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters with credentials to store</doc>
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="permanently" transfer-ownership="none">
            <doc xml:space="preserve">store permanently or just for the session</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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="unregister_impl"
              c:identifier="e_source_credentials_provider_unregister_impl"
              version="3.16">
        <doc xml:space="preserve">Unregisters previously registered @provider_impl with
e_source_credentials_provider_register_impl(). Function does nothing,
when the @provider_impl is not registered.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
            <type name="SourceCredentialsProvider"
                  c:type="ESourceCredentialsProvider*"/>
          </instance-parameter>
          <parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </parameter>
        </parameters>
      </method>
      <property name="registry"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The Source Registry object, which can be either #ESourceregistry or #ESourceRegistryServer.</doc>
        <type name="GObject.Object"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="SourceCredentialsProviderPrivate"
              c:type="ESourceCredentialsProviderPrivate*"/>
      </field>
    </class>
    <record name="SourceCredentialsProviderClass"
            c:type="ESourceCredentialsProviderClass"
            glib:is-gtype-struct-for="SourceCredentialsProvider">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="ref_source">
        <callback name="ref_source">
          <return-value transfer-ownership="full">
            <doc xml:space="preserve">Referenced #ESource with the given @uid, or %NULL, when it
   could not be found. Unref the returned #ESource with g_object_unref(), when no longer needed.</doc>
            <type name="Source" c:type="ESource*"/>
          </return-value>
          <parameters>
            <parameter name="provider" transfer-ownership="none">
              <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
              <type name="SourceCredentialsProvider"
                    c:type="ESourceCredentialsProvider*"/>
            </parameter>
            <parameter name="uid" transfer-ownership="none">
              <doc xml:space="preserve">an #ESource UID</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="SourceCredentialsProviderImpl"
           c:symbol-prefix="source_credentials_provider_impl"
           c:type="ESourceCredentialsProviderImpl"
           version="3.16"
           parent="Extension"
           abstract="1"
           glib:type-name="ESourceCredentialsProviderImpl"
           glib:get-type="e_source_credentials_provider_impl_get_type"
           glib:type-struct="SourceCredentialsProviderImplClass">
      <doc xml:space="preserve">Credentials provider implementation base structure. The descendants
implement the virtual methods. The descendants are automatically
registered into an #ESourceCredentialsProvider.</doc>
      <virtual-method name="can_process" invoker="can_process" version="3.16">
        <doc xml:space="preserve">Returns whether the @provider_impl can process credentials for the @source.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether the @provider_impl can process credentials for the @source.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="can_prompt" invoker="can_prompt" version="3.16">
        <doc xml:space="preserve">Returns whether credential prompt can be done for the @provider_impl.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether credential prompt can be done for the @provider_impl.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="can_store" invoker="can_store" version="3.16">
        <doc xml:space="preserve">Returns whether the @provider_impl can store credentials.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether the @provider_impl can store credentials.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="delete_sync"
                      invoker="delete_sync"
                      version="3.16"
                      throws="1">
        <doc xml:space="preserve">Asks @provider_impl to delete any stored credentials for @source.

Default implementation returns %FALSE and sets #G_IO_ERROR_NOT_SUPPORTED error.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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="lookup_sync"
                      invoker="lookup_sync"
                      version="3.16"
                      throws="1">
        <doc xml:space="preserve">Asks @provider_impl to lookup for stored credentials for @source.
The @out_credentials is populated with them. If the result is not
%NULL, then it should be freed with e_anmed_parameters_free() when
no longer needed.

Default implementation returns %FALSE and sets #G_IO_ERROR_NOT_SUPPORTED error.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="out_credentials" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters to be set with stored credentials</doc>
            <type name="NamedParameters" c:type="ENamedParameters**"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="store_sync"
                      invoker="store_sync"
                      version="3.16"
                      throws="1">
        <doc xml:space="preserve">Asks @provider_impl to store @credentials for @source.

Default implementation returns %FALSE and sets #G_IO_ERROR_NOT_SUPPORTED error.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="credentials" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters containing credentials to store</doc>
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="permanently" transfer-ownership="none">
            <doc xml:space="preserve">whether to store credentials permanently, or for the current session only</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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="can_process"
              c:identifier="e_source_credentials_provider_impl_can_process"
              version="3.16">
        <doc xml:space="preserve">Returns whether the @provider_impl can process credentials for the @source.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether the @provider_impl can process credentials for the @source.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </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="can_prompt"
              c:identifier="e_source_credentials_provider_impl_can_prompt"
              version="3.16">
        <doc xml:space="preserve">Returns whether credential prompt can be done for the @provider_impl.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether credential prompt can be done for the @provider_impl.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="can_store"
              c:identifier="e_source_credentials_provider_impl_can_store"
              version="3.16">
        <doc xml:space="preserve">Returns whether the @provider_impl can store credentials.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether the @provider_impl can store credentials.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="delete_sync"
              c:identifier="e_source_credentials_provider_impl_delete_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Asks @provider_impl to delete any stored credentials for @source.

Default implementation returns %FALSE and sets #G_IO_ERROR_NOT_SUPPORTED error.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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="get_provider"
              c:identifier="e_source_credentials_provider_impl_get_provider"
              version="3.16"
              introspectable="0">
        <doc xml:space="preserve">Returns an #ESourceCredentialsProvider with which the @provider_impl is associated.</doc>
        <return-value>
          <doc xml:space="preserve">an #ESourceCredentialsProvider</doc>
          <type name="gpointer" c:type="_ESourceCredentialsProvider*"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lookup_sync"
              c:identifier="e_source_credentials_provider_impl_lookup_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Asks @provider_impl to lookup for stored credentials for @source.
The @out_credentials is populated with them. If the result is not
%NULL, then it should be freed with e_anmed_parameters_free() when
no longer needed.

Default implementation returns %FALSE and sets #G_IO_ERROR_NOT_SUPPORTED error.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="out_credentials" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters to be set with stored credentials</doc>
            <type name="NamedParameters" c:type="ENamedParameters**"/>
          </parameter>
        </parameters>
      </method>
      <method name="store_sync"
              c:identifier="e_source_credentials_provider_impl_store_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve">Asks @provider_impl to store @credentials for @source.

Default implementation returns %FALSE and sets #G_IO_ERROR_NOT_SUPPORTED error.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="provider_impl" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
            <type name="SourceCredentialsProviderImpl"
                  c:type="ESourceCredentialsProviderImpl*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="Source" c:type="ESource*"/>
          </parameter>
          <parameter name="credentials" transfer-ownership="none">
            <doc xml:space="preserve">an #ENamedParameters containing credentials to store</doc>
            <type name="NamedParameters" c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="permanently" transfer-ownership="none">
            <doc xml:space="preserve">whether to store credentials permanently, or for the current session only</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent">
        <type name="Extension" c:type="EExtension"/>
      </field>
      <field name="priv">
        <type name="SourceCredentialsProviderImplPrivate"
              c:type="ESourceCredentialsProviderImplPrivate*"/>
      </field>
    </class>
    <record name="SourceCredentialsProviderImplClass"
            c:type="ESourceCredentialsProviderImplClass"
            glib:is-gtype-struct-for="SourceCredentialsProviderImpl">
      <field name="parent_class">
        <type name="ExtensionClass" c:type="EExtensionClass"/>
      </field>
      <field name="can_process">
        <callback name="can_process">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">Whether the @provider_impl can process credentials for the @source.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="provider_impl" transfer-ownership="none">
              <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
              <type name="SourceCredentialsProviderImpl"
                    c:type="ESourceCredentialsProviderImpl*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve">an #ESource</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="can_store">
        <callback name="can_store">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">Whether the @provider_impl can store credentials.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="provider_impl" transfer-ownership="none">
              <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
              <type name="SourceCredentialsProviderImpl"
                    c:type="ESourceCredentialsProviderImpl*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="can_prompt">
        <callback name="can_prompt">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">Whether credential prompt can be done for the @provider_impl.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="provider_impl" transfer-ownership="none">
              <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
              <type name="SourceCredentialsProviderImpl"
                    c:type="ESourceCredentialsProviderImpl*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="lookup_sync">
        <callback name="lookup_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="provider_impl" transfer-ownership="none">
              <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
              <type name="SourceCredentialsProviderImpl"
                    c:type="ESourceCredentialsProviderImpl*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve">an #ESource</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
            <parameter name="out_credentials" transfer-ownership="none">
              <doc xml:space="preserve">an #ENamedParameters to be set with stored credentials</doc>
              <type name="NamedParameters" c:type="ENamedParameters**"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="store_sync">
        <callback name="store_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="provider_impl" transfer-ownership="none">
              <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
              <type name="SourceCredentialsProviderImpl"
                    c:type="ESourceCredentialsProviderImpl*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve">an #ESource</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="credentials" transfer-ownership="none">
              <doc xml:space="preserve">an #ENamedParameters containing credentials to store</doc>
              <type name="NamedParameters" c:type="const ENamedParameters*"/>
            </parameter>
            <parameter name="permanently" transfer-ownership="none">
              <doc xml:space="preserve">whether to store credentials permanently, or for the current session only</doc>
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       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="delete_sync">
        <callback name="delete_sync" throws="1">
          <return-value transfer-ownership="none">
            <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="provider_impl" transfer-ownership="none">
              <doc xml:space="preserve">an #ESourceCredentialsProviderImpl</doc>
              <type name="SourceCredentialsProviderImpl"
                    c:type="ESourceCredentialsProviderImpl*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve">an #ESource</doc>
              <type name="Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="SourceCredentialsProviderImplPassword"
           c:symbol-prefix="source_credentials_provider_impl_password"
           c:type="ESourceCredentialsProviderImplPassword"
           version="3.16"
           parent="SourceCredentialsProviderImpl"
           glib:type-name="ESourceCredentialsProviderImplPassword"
           glib:get-type="e_source_credentials_provider_impl_password_get_type"
           glib:type-struct="SourceCredentialsProviderImplPasswordClass">
      <doc xml:space="preserve">Password based credentials provider implementation.</doc>
      <field name="parent">
        <type name="SourceCredentialsProviderImpl"
              c:type="ESourceCredentialsProviderImpl"/>
      </field>
      <field name="priv">
        <type name="SourceCredentialsProviderImplPasswordPrivate"
              c:type="ESourceCredentialsProviderImplPasswordPrivate*"/>
      </field>
    </class>
    <record name="SourceCredentialsProviderImplPasswordClass"
            c:type="ESourceCredentialsProviderImplPasswordClass"
            glib:is-gtype-struct-for="SourceCredentialsProviderImplPassword">
      <field name="parent_class">
        <type name="SourceCredentialsProviderImplClass"
              c:type="ESourceCredentialsProviderImplClass"/>
      </field>
    </record>
    <record name="SourceCredentialsProviderImplPasswordPrivate"
            c:type="ESourceCredentialsProviderImplPasswordPrivate"
            disguised="1">
    </record>
    <record name="SourceCredentialsProviderImplPrivate"
            c:type="ESourceCredentialsProviderImplPrivate"
            disguised="1">
    </record>
    <record name="SourceCredentialsProviderPrivate"
            c:type="ESourceCredentialsProviderPrivate"
            disguised="1">
    </record>
    <enumeration name="SourceCredentialsReason"
                 version="3.16"
                 glib:type-name="ESourceCredentialsReason"
                 glib:get-type="e_source_credentials_reason_get_type"
                 c:type="ESourceCredentialsReason">
      <doc xml:space="preserve">An ESource's authentication reason, used by an ESource::CredentialsRequired method.</doc>
      <member name="unknown"
              value="0"
              c:identifier="E_SOURCE_CREDENTIALS_REASON_UNKNOWN"
              glib:nick="unknown">
        <doc xml:space="preserve">A return value when there was no 'credentials-required' signal emitted yet,
  or a pair 'authenticate' signal had been received. This value should not
  be used in the call of 'credentials-required'.</doc>
      </member>
      <member name="required"
              value="1"
              c:identifier="E_SOURCE_CREDENTIALS_REASON_REQUIRED"
              glib:nick="required">
        <doc xml:space="preserve">This is the first attempt to get credentials for the source. It's usually
  used right after the source is opened and the authentication continues with
  a stored credentials, if any.</doc>
      </member>
      <member name="rejected"
              value="2"
              c:identifier="E_SOURCE_CREDENTIALS_REASON_REJECTED"
              glib:nick="rejected">
        <doc xml:space="preserve">The previously used credentials had been rejected by the server. That
  usually means that the user should be asked to provide/correct the credentials.</doc>
      </member>
      <member name="ssl_failed"
              value="3"
              c:identifier="E_SOURCE_CREDENTIALS_REASON_SSL_FAILED"
              glib:nick="ssl-failed">
        <doc xml:space="preserve">A secured connection failed due to some server-side certificate issues.</doc>
      </member>
      <member name="error"
              value="4"
              c:identifier="E_SOURCE_CREDENTIALS_REASON_ERROR"
              glib:nick="error">
        <doc xml:space="preserve">The server returned an error. It is not possible to connect to it
  at the moment usually.</doc>
      </member>
    </enumeration>
    <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="1"
              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>
        <doc-deprecated xml:space="preserve">Use e_source_extension_ref_source() instead.</doc-deprecated>
        <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="property_lock"
              c:identifier="e_source_extension_property_lock"
              version="3.18">
        <doc xml:space="preserve">Acquires a property lock, thus no other thread can change properties
of the @extension until the lock is released.</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 #ESourceExtension</doc>
            <type name="SourceExtension" c:type="ESourceExtension*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="property_unlock"
              c:identifier="e_source_extension_property_unlock"
              version="3.18">
        <doc xml:space="preserve">Releases a property lock, previously acquired with e_source_extension_property_lock(),
thus other threads can change properties of the @extension.</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 #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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="SourceLDAP"
           c:symbol-prefix="source_ldap"
           c:type="ESourceLDAP"
           parent="SourceExtension"
           glib:type-name="ESourceLDAP"
           glib:get-type="e_source_ldap_get_type"
           glib:type-struct="SourceLDAPClass">
      <method name="dup_filter" c:identifier="e_source_ldap_dup_filter">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_root_dn" c:identifier="e_source_ldap_dup_root_dn">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_authentication"
              c:identifier="e_source_ldap_get_authentication">
        <return-value transfer-ownership="none">
          <type name="SourceLDAPAuthentication"
                c:type="ESourceLDAPAuthentication"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_can_browse"
              c:identifier="e_source_ldap_get_can_browse">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_filter" c:identifier="e_source_ldap_get_filter">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_limit" c:identifier="e_source_ldap_get_limit">
        <return-value transfer-ownership="none">
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_root_dn" c:identifier="e_source_ldap_get_root_dn">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_scope" c:identifier="e_source_ldap_get_scope">
        <return-value transfer-ownership="none">
          <type name="SourceLDAPScope" c:type="ESourceLDAPScope"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_security" c:identifier="e_source_ldap_get_security">
        <return-value transfer-ownership="none">
          <type name="SourceLDAPSecurity" c:type="ESourceLDAPSecurity"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_authentication"
              c:identifier="e_source_ldap_set_authentication">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
          <parameter name="authentication" transfer-ownership="none">
            <type name="SourceLDAPAuthentication"
                  c:type="ESourceLDAPAuthentication"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_can_browse"
              c:identifier="e_source_ldap_set_can_browse">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
          <parameter name="can_browse" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_filter" c:identifier="e_source_ldap_set_filter">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
          <parameter name="filter" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_limit" c:identifier="e_source_ldap_set_limit">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
          <parameter name="limit" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_root_dn" c:identifier="e_source_ldap_set_root_dn">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
          <parameter name="root_dn" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_scope" c:identifier="e_source_ldap_set_scope">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
          <parameter name="scope" transfer-ownership="none">
            <type name="SourceLDAPScope" c:type="ESourceLDAPScope"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_security" c:identifier="e_source_ldap_set_security">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLDAP" c:type="ESourceLDAP*"/>
          </instance-parameter>
          <parameter name="security" transfer-ownership="none">
            <type name="SourceLDAPSecurity" c:type="ESourceLDAPSecurity"/>
          </parameter>
        </parameters>
      </method>
      <property name="authentication" writable="1" transfer-ownership="none">
        <type name="SourceLDAPAuthentication"/>
      </property>
      <property name="can-browse"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="filter"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="limit"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="root-dn"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="scope"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="SourceLDAPScope"/>
      </property>
      <property name="security" writable="1" transfer-ownership="none">
        <type name="SourceLDAPSecurity"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceLDAPPrivate" c:type="ESourceLDAPPrivate*"/>
      </field>
    </class>
    <enumeration name="SourceLDAPAuthentication"
                 version="3.18"
                 glib:type-name="ESourceLDAPAuthentication"
                 glib:get-type="e_source_ldap_authentication_get_type"
                 c:type="ESourceLDAPAuthentication">
      <doc xml:space="preserve">Defines authentication types for LDAP sources.</doc>
      <member name="none"
              value="0"
              c:identifier="E_SOURCE_LDAP_AUTHENTICATION_NONE"
              glib:nick="none">
        <doc xml:space="preserve">Use none authentication type.</doc>
      </member>
      <member name="email"
              value="1"
              c:identifier="E_SOURCE_LDAP_AUTHENTICATION_EMAIL"
              glib:nick="email">
        <doc xml:space="preserve">Use an email address for authentication.</doc>
      </member>
      <member name="binddn"
              value="2"
              c:identifier="E_SOURCE_LDAP_AUTHENTICATION_BINDDN"
              glib:nick="binddn">
        <doc xml:space="preserve">Use a bind DN for authentication.</doc>
      </member>
    </enumeration>
    <record name="SourceLDAPClass"
            c:type="ESourceLDAPClass"
            glib:is-gtype-struct-for="SourceLDAP">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceLDAPPrivate" c:type="ESourceLDAPPrivate" disguised="1">
    </record>
    <enumeration name="SourceLDAPScope"
                 version="3.18"
                 glib:type-name="ESourceLDAPScope"
                 glib:get-type="e_source_ldap_scope_get_type"
                 c:type="ESourceLDAPScope">
      <doc xml:space="preserve">Defines search scope for LDAP sources.</doc>
      <member name="onelevel"
              value="0"
              c:identifier="E_SOURCE_LDAP_SCOPE_ONELEVEL"
              glib:nick="onelevel">
        <doc xml:space="preserve">One level search scope.</doc>
      </member>
      <member name="subtree"
              value="1"
              c:identifier="E_SOURCE_LDAP_SCOPE_SUBTREE"
              glib:nick="subtree">
        <doc xml:space="preserve">Sub-tree search scope.</doc>
      </member>
    </enumeration>
    <enumeration name="SourceLDAPSecurity"
                 version="3.18"
                 glib:type-name="ESourceLDAPSecurity"
                 glib:get-type="e_source_ldap_security_get_type"
                 c:type="ESourceLDAPSecurity">
      <doc xml:space="preserve">Defines what connection security should be used for LDAP sources.</doc>
      <member name="none"
              value="0"
              c:identifier="E_SOURCE_LDAP_SECURITY_NONE"
              glib:nick="none">
        <doc xml:space="preserve">Connect insecurely.</doc>
      </member>
      <member name="ldaps"
              value="1"
              c:identifier="E_SOURCE_LDAP_SECURITY_LDAPS"
              glib:nick="ldaps">
        <doc xml:space="preserve">Connect using secure LDAP (LDAPS).</doc>
      </member>
      <member name="starttls"
              value="2"
              c:identifier="E_SOURCE_LDAP_SECURITY_STARTTLS"
              glib:nick="starttls">
        <doc xml:space="preserve">Connect using STARTTLS.</doc>
      </member>
    </enumeration>
    <class name="SourceLocal"
           c:symbol-prefix="source_local"
           c:type="ESourceLocal"
           parent="SourceExtension"
           glib:type-name="ESourceLocal"
           glib:get-type="e_source_local_get_type"
           glib:type-struct="SourceLocalClass">
      <method name="dup_custom_file"
              c:identifier="e_source_local_dup_custom_file"
              introspectable="0">
        <return-value>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLocal" c:type="ESourceLocal*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_custom_file"
              c:identifier="e_source_local_get_custom_file"
              introspectable="0">
        <return-value>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLocal" c:type="ESourceLocal*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_custom_file"
              c:identifier="e_source_local_set_custom_file">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceLocal" c:type="ESourceLocal*"/>
          </instance-parameter>
          <parameter name="custom_file" transfer-ownership="none">
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </method>
      <property name="custom-file"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="Gio.File"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceLocalPrivate" c:type="ESourceLocalPrivate*"/>
      </field>
    </class>
    <record name="SourceLocalClass"
            c:type="ESourceLocalClass"
            glib:is-gtype-struct-for="SourceLocal">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceLocalPrivate"
            c:type="ESourceLocalPrivate"
            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_archive_folder"
              c:identifier="e_source_mail_account_dup_archive_folder"
              version="3.16">
        <doc xml:space="preserve">Thread-safe variation of e_source_mail_account_get_archive_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 #ESourceMailAccount:archive-folder</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="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_archive_folder"
              c:identifier="e_source_mail_account_get_archive_folder"
              version="3.16">
        <doc xml:space="preserve">Returns a string identifying the archive folder.
The format of the identifier string is defined by the client application.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an identifier of the archive folder</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="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_archive_folder"
              c:identifier="e_source_mail_account_set_archive_folder"
              version="3.16">
        <doc xml:space="preserve">Sets the folder for sent messages by an identifier string.
The format of the identifier string is defined by the client application.

The internal copy of @archive_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 #ESourceMailAccount</doc>
            <type name="SourceMailAccount" c:type="ESourceMailAccount*"/>
          </instance-parameter>
          <parameter name="archive_folder"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">an identifier for the archive folder, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </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"
                     nullable="1"
                     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="archive-folder"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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_by_default"
              c:identifier="e_source_openpgp_get_encrypt_by_default"
              version="3.18">
        <doc xml:space="preserve">Returns whether to digitally encrypt 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 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 #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_by_default"
              c:identifier="e_source_openpgp_set_encrypt_by_default"
              version="3.18">
        <doc xml:space="preserve">Sets whether to digitally encrypt 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="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_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-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="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="SourceProxy"
           c:symbol-prefix="source_proxy"
           c:type="ESourceProxy"
           version="3.12"
           parent="SourceExtension"
           glib:type-name="ESourceProxy"
           glib:get-type="e_source_proxy_get_type"
           glib:type-struct="SourceProxyClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <method name="dup_autoconfig_url"
              c:identifier="e_source_proxy_dup_autoconfig_url"
              version="3.12">
        <doc xml:space="preserve">Thread-safe variation of e_source_proxy_get_autoconfig_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 #ESourceProxy:autoconfig-url</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_ftp_host"
              c:identifier="e_source_proxy_dup_ftp_host"
              version="3.12">
        <doc xml:space="preserve">Thread-safe variation of e_source_proxy_get_ftp_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 #ESourceProxy:ftp-host</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_http_auth_password"
              c:identifier="e_source_proxy_dup_http_auth_password"
              version="3.12">
        <doc xml:space="preserve">Thread-safe variation of e_source_proxy_get_http_auth_password().
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 #ESourceProxy:http-auth-password</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_http_auth_user"
              c:identifier="e_source_proxy_dup_http_auth_user"
              version="3.12">
        <doc xml:space="preserve">Thread-safe variation of e_source_proxy_get_http_auth_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 #ESourceProxy:http-auth-user</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_http_host"
              c:identifier="e_source_proxy_dup_http_host"
              version="3.12">
        <doc xml:space="preserve">Thread-safe variation of e_source_proxy_get_http_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 #ESourceProxy:http-host</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_https_host"
              c:identifier="e_source_proxy_dup_https_host"
              version="3.12">
        <doc xml:space="preserve">Threads-safe variation of e_source_proxy_get_https_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 #ESourceProxy:https-host</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_ignore_hosts"
              c:identifier="e_source_proxy_dup_ignore_hosts"
              version="3.12">
        <doc xml:space="preserve">Thread-safe variation of e_source_proxy_get_ignore_hosts().
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
         #ESourceProxy:ignore-hosts</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="dup_socks_host"
              c:identifier="e_source_proxy_dup_socks_host"
              version="3.12">
        <doc xml:space="preserve">Thread-safe variation of e_source-proxy_get_socks_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 #ESourceProxy:socks-host</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_autoconfig_url"
              c:identifier="e_source_proxy_get_autoconfig_url"
              version="3.12">
        <doc xml:space="preserve">Returns the URL that provides proxy configuration values.  When the
@extension's #ESourceProxy:method is @E_PROXY_METHOD_AUTO, this URL
is used to look up proxy information for all protocols.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the autoconfiguration URL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ftp_host"
              c:identifier="e_source_proxy_get_ftp_host"
              version="3.12">
        <doc xml:space="preserve">Returns the machine name to proxy FTP through when @extension's
#ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">FTP proxy host name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ftp_port"
              c:identifier="e_source_proxy_get_ftp_port"
              version="3.12">
        <doc xml:space="preserve">Returns the port on the machine defined by #ESourceProxy:ftp-host to proxy
through when @extension's #ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">FTP proxy port</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_http_auth_password"
              c:identifier="e_source_proxy_get_http_auth_password"
              version="3.12">
        <doc xml:space="preserve">Returns the password to pass as authentication when doing HTTP proxying
and #ESourceProxy:http-use-auth is %TRUE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">HTTP proxy password</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_http_auth_user"
              c:identifier="e_source_proxy_get_http_auth_user"
              version="3.12">
        <doc xml:space="preserve">Returns the user name to pass as authentication when doing HTTP proxying
and #ESourceProxy:http-use-auth is %TRUE.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">HTTP proxy username</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_http_host"
              c:identifier="e_source_proxy_get_http_host"
              version="3.12">
        <doc xml:space="preserve">Returns the machine name to proxy HTTP through when @extension's
#ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">HTTP proxy host name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_http_port"
              c:identifier="e_source_proxy_get_http_port"
              version="3.12">
        <doc xml:space="preserve">Returns the port on the machine defined by #ESourceProxy:http-host to proxy
through when @extension's #ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">HTTP proxy port</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_http_use_auth"
              c:identifier="e_source_proxy_get_http_use_auth"
              version="3.12">
        <doc xml:space="preserve">Returns whether the HTTP proxy server at #ESourceProxy:http-host and
#ESourceProxy:http-port requires authentication.

The username/password combo is defined by #ESourceProxy:http-auth-user
and #ESourceProxy:http-auth-password, but only applies when @extension's
#ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">whether to authenticate HTTP proxy connections</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_https_host"
              c:identifier="e_source_proxy_get_https_host"
              version="3.12">
        <doc xml:space="preserve">Returns the machine name to proxy secure HTTP through when @extension's
#ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">secure HTTP proxy host name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_https_port"
              c:identifier="e_source_proxy_get_https_port"
              version="3.12">
        <doc xml:space="preserve">Returns the port on the machine defined by #ESourceProxy:https-host to proxy
through when @extension's #ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">secure HTTP proxy port</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_ignore_hosts"
              c:identifier="e_source_proxy_get_ignore_hosts"
              version="3.12">
        <doc xml:space="preserve">Returns a %NULL-terminated string array of hosts which are connected to
directly, rather than via the proxy (if it is active).  The array elements
can be hostnames, domains (using an initial wildcard like *.foo.com), IP
host addresses (both IPv4 and IPv6) and network addresses with a netmask
(something like 192.168.0.0/24).

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 hosts</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_method"
              c:identifier="e_source_proxy_get_method"
              version="3.12">
        <doc xml:space="preserve">Returns the proxy configuration method for @extension.

The proxy configuration method determines the behavior of
e_source_proxy_lookup().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the proxy configuration method</doc>
          <type name="ProxyMethod" c:type="EProxyMethod"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_socks_host"
              c:identifier="e_source_proxy_get_socks_host"
              version="3.12">
        <doc xml:space="preserve">Returns the machine name to use as a SOCKS proxy when @extension's
#ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">SOCKS proxy host name</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_socks_port"
              c:identifier="e_source_proxy_get_socks_port"
              version="3.12">
        <doc xml:space="preserve">Returns the port on the machine defined by #ESourceProxy:socks-host to proxy
through when @extension's #ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">SOCKS proxy port</doc>
          <type name="guint16" c:type="guint16"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_autoconfig_url"
              c:identifier="e_source_proxy_set_autoconfig_url"
              version="3.12">
        <doc xml:space="preserve">Sets the URL that provides proxy configuration values.  When the
@extension's #ESourceProxy:method is @E_PROXY_METHOD_AUTO, this URL
is used to look up proxy information for all protocols.</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="autoconfig_url" transfer-ownership="none">
            <doc xml:space="preserve">an autoconfiguration URL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ftp_host"
              c:identifier="e_source_proxy_set_ftp_host"
              version="3.12">
        <doc xml:space="preserve">Sets the machine name to proxy FTP through when @extension's
#ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="ftp_host" transfer-ownership="none">
            <doc xml:space="preserve">FTP proxy host name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ftp_port"
              c:identifier="e_source_proxy_set_ftp_port"
              version="3.12">
        <doc xml:space="preserve">Sets the port on the machine defined by #ESourceProxy:ftp-host to proxy
through when @extension's #ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="ftp_port" transfer-ownership="none">
            <doc xml:space="preserve">FTP proxy port</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_http_auth_password"
              c:identifier="e_source_proxy_set_http_auth_password"
              version="3.12">
        <doc xml:space="preserve">Sets the password to pass as authentication when doing HTTP proxying
and #ESourceProxy:http-use-auth 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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="http_auth_password" transfer-ownership="none">
            <doc xml:space="preserve">HTTP proxy password</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_http_auth_user"
              c:identifier="e_source_proxy_set_http_auth_user"
              version="3.12">
        <doc xml:space="preserve">Sets the user name to pass as authentication when doing HTTP proxying
and #ESourceProxy:http-use-auth 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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="http_auth_user" transfer-ownership="none">
            <doc xml:space="preserve">HTTP proxy username</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_http_host"
              c:identifier="e_source_proxy_set_http_host"
              version="3.12">
        <doc xml:space="preserve">Sets the machine name to proxy HTTP through when @extension's
#ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="http_host" transfer-ownership="none">
            <doc xml:space="preserve">HTTP proxy host name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_http_port"
              c:identifier="e_source_proxy_set_http_port"
              version="3.12">
        <doc xml:space="preserve">Sets the port on the machine defined by #ESourceProxy:http-host to proxy
through when @extension's #ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="http_port" transfer-ownership="none">
            <doc xml:space="preserve">HTTP proxy port</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_http_use_auth"
              c:identifier="e_source_proxy_set_http_use_auth"
              version="3.12">
        <doc xml:space="preserve">Sets whether the HTTP proxy server at #ESourceProxy:http-host and
#ESourceProxy:http-port requires authentication.

The username/password combo is defined by #ESourceProxy:http-auth-user
and #ESourceProxy:http-auth-password, but only applies when @extension's
#ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="http_use_auth" transfer-ownership="none">
            <doc xml:space="preserve">whether to authenticate HTTP proxy connections</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_https_host"
              c:identifier="e_source_proxy_set_https_host"
              version="3.12">
        <doc xml:space="preserve">Sets the machine name to proxy secure HTTP through when @extension's
#ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="https_host" transfer-ownership="none">
            <doc xml:space="preserve">secure HTTP proxy host name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_https_port"
              c:identifier="e_source_proxy_set_https_port"
              version="3.12">
        <doc xml:space="preserve">Sets the port on the machine defined by #ESourceProxy:https-host to proxy
through when @extension's #ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="https_port" transfer-ownership="none">
            <doc xml:space="preserve">secure HTTP proxy port</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ignore_hosts"
              c:identifier="e_source_proxy_set_ignore_hosts"
              version="3.12">
        <doc xml:space="preserve">Sets the hosts which are connected to directly, rather than via the proxy
(if it is active).  The array elements can be hostnames, domains (using an
initial wildcard like *.foo.com), IP host addresses (both IPv4 and IPv6)
and network addresses with a netmask (something like 192.168.0.0/24).</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="ignore_hosts" transfer-ownership="none">
            <doc xml:space="preserve">a %NULL-terminated string array of hosts</doc>
            <type name="utf8" c:type="const gchar* const*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_method"
              c:identifier="e_source_proxy_set_method"
              version="3.12">
        <doc xml:space="preserve">Sets the proxy configuration method for @extension.

The proxy configuration method determines the behavior of
e_source_proxy_lookup().</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="method" transfer-ownership="none">
            <doc xml:space="preserve">the proxy configuration method</doc>
            <type name="ProxyMethod" c:type="EProxyMethod"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_socks_host"
              c:identifier="e_source_proxy_set_socks_host"
              version="3.12">
        <doc xml:space="preserve">Sets the machine name to use as a SOCKS proxy when @extension's
#ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="socks_host" transfer-ownership="none">
            <doc xml:space="preserve">SOCKS proxy host name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_socks_port"
              c:identifier="e_source_proxy_set_socks_port"
              version="3.12">
        <doc xml:space="preserve">Sets the port on the machine defined by #ESourceProxy:socks-host to proxy
through when @extension's #ESourceProxy:method is @E_PROXY_METHOD_MANUAL.</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 #ESourceProxy</doc>
            <type name="SourceProxy" c:type="ESourceProxy*"/>
          </instance-parameter>
          <parameter name="socks_port" transfer-ownership="none">
            <doc xml:space="preserve">SOCKS proxy port</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
        </parameters>
      </method>
      <property name="autoconfig-url"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="ftp-host"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="ftp-port"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="http-auth-password"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="http-auth-user"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="http-host"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="http-port"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="http-use-auth"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="https-host"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="https-port"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="guint" c:type="guint"/>
      </property>
      <property name="ignore-hosts"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="method"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="ProxyMethod"/>
      </property>
      <property name="socks-host"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="socks-port"
                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="SourceProxyPrivate" c:type="ESourceProxyPrivate*"/>
      </field>
    </class>
    <record name="SourceProxyClass"
            c:type="ESourceProxyClass"
            glib:is-gtype-struct-for="SourceProxy">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceProxyPrivate"
            c:type="ESourceProxyPrivate"
            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.

Since 3.12 a singleton will be returned.  No strong reference is kept
internally, so it is the caller's responsibility to keep one.</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"
                     nullable="1"
                     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="debug_enabled"
                c:identifier="e_source_registry_debug_enabled"
                version="3.16">
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">Whether debugging is enabled, that is,
whether e_source_registry_debug_print() will produce any output.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
      </function>
      <function name="debug_print"
                c:identifier="e_source_registry_debug_print"
                version="3.16"
                introspectable="0">
        <doc xml:space="preserve">Prints the text only if a debugging is enabled with an environment
variable ESR_DEBUG=1.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve">a format string to print</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve">other arguments for the format</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <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.

Since 3.12 a singleton will be returned.  No strong reference is kept
internally, so it is the caller's responsibility to keep one.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     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"
                     nullable="1"
                     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="credentials_required">
        <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>
          <parameter name="reason" transfer-ownership="none">
            <type name="SourceCredentialsReason"
                  c:type="ESourceCredentialsReason"/>
          </parameter>
          <parameter name="certificate_pem" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="certificate_errors" transfer-ownership="none">
            <type name="Gio.TlsCertificateFlags"
                  c:type="GTlsCertificateFlags"/>
          </parameter>
          <parameter name="op_error" transfer-ownership="none">
            <type name="GLib.Error" c:type="const GError*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <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="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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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_proxy"
              c:identifier="e_source_registry_ref_builtin_proxy"
              version="3.12">
        <doc xml:space="preserve">Returns the built-in proxy profile #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 proxy profile #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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="credentials-required" when="last" no-recurse="1">
        <doc xml:space="preserve">The ::credentials-required signal is emitted when the @source
requires credentials to connect to (possibly remote)
data store. The credentials can be passed to the source using
e_source_authenticate() function. The signal is emitted in
the thread-default main context from the time the @registry was created.

Note: This is just a proxy signal for the ESource::credentials-required 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 requires credentials</doc>
            <type name="Source"/>
          </parameter>
          <parameter name="reason" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceCredentialsReason indicating why the credentials are requested</doc>
            <type name="SourceCredentialsReason"/>
          </parameter>
          <parameter name="certificate_pem" transfer-ownership="none">
            <doc xml:space="preserve">PEM-encoded secure connection certificate for failed SSL checks</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="certificate_errors" transfer-ownership="none">
            <doc xml:space="preserve">what failed with the SSL certificate</doc>
            <type name="Gio.TlsCertificateFlags"/>
          </parameter>
          <parameter name="op_error" transfer-ownership="none">
            <doc xml:space="preserve">a #GError with a description of the error, or %NULL</doc>
            <type name="GLib.Error"/>
          </parameter>
        </parameters>
      </glib:signal>
      <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>
      <field name="credentials_required">
        <callback name="credentials_required">
          <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>
            <parameter name="reason" transfer-ownership="none">
              <type name="SourceCredentialsReason"
                    c:type="ESourceCredentialsReason"/>
            </parameter>
            <parameter name="certificate_pem" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="certificate_errors" transfer-ownership="none">
              <type name="Gio.TlsCertificateFlags"
                    c:type="GTlsCertificateFlags"/>
            </parameter>
            <parameter name="op_error" transfer-ownership="none">
              <type name="GLib.Error" c:type="const GError*"/>
            </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"
                     nullable="1"
                     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.

If the @encryption_certificate 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"
                     nullable="1"
                     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"
                     nullable="1"
                     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.

If the @signing_certificate 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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="SourceWeather"
           c:symbol-prefix="source_weather"
           c:type="ESourceWeather"
           parent="SourceExtension"
           glib:type-name="ESourceWeather"
           glib:get-type="e_source_weather_get_type"
           glib:type-struct="SourceWeatherClass">
      <method name="dup_location" c:identifier="e_source_weather_dup_location">
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceWeather" c:type="ESourceWeather*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_location" c:identifier="e_source_weather_get_location">
        <return-value transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceWeather" c:type="ESourceWeather*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_units" c:identifier="e_source_weather_get_units">
        <return-value transfer-ownership="none">
          <type name="SourceWeatherUnits" c:type="ESourceWeatherUnits"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceWeather" c:type="ESourceWeather*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_location" c:identifier="e_source_weather_set_location">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceWeather" c:type="ESourceWeather*"/>
          </instance-parameter>
          <parameter name="location" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_units" c:identifier="e_source_weather_set_units">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <type name="SourceWeather" c:type="ESourceWeather*"/>
          </instance-parameter>
          <parameter name="units" transfer-ownership="none">
            <type name="SourceWeatherUnits" c:type="ESourceWeatherUnits"/>
          </parameter>
        </parameters>
      </method>
      <property name="location"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="units"
                writable="1"
                construct="1"
                transfer-ownership="none">
        <type name="SourceWeatherUnits"/>
      </property>
      <field name="parent">
        <type name="SourceExtension" c:type="ESourceExtension"/>
      </field>
      <field name="priv">
        <type name="SourceWeatherPrivate" c:type="ESourceWeatherPrivate*"/>
      </field>
    </class>
    <record name="SourceWeatherClass"
            c:type="ESourceWeatherClass"
            glib:is-gtype-struct-for="SourceWeather">
      <field name="parent_class">
        <type name="SourceExtensionClass" c:type="ESourceExtensionClass"/>
      </field>
    </record>
    <record name="SourceWeatherPrivate"
            c:type="ESourceWeatherPrivate"
            disguised="1">
    </record>
    <enumeration name="SourceWeatherUnits"
                 version="3.18"
                 glib:type-name="ESourceWeatherUnits"
                 glib:get-type="e_source_weather_units_get_type"
                 c:type="ESourceWeatherUnits">
      <doc xml:space="preserve">Units to be used in an #ESourceWeather extension.</doc>
      <member name="fahrenheit"
              value="0"
              c:identifier="E_SOURCE_WEATHER_UNITS_FAHRENHEIT"
              glib:nick="fahrenheit">
        <doc xml:space="preserve">Fahrenheit units</doc>
      </member>
      <member name="centigrade"
              value="1"
              c:identifier="E_SOURCE_WEATHER_UNITS_CENTIGRADE"
              glib:nick="centigrade">
        <doc xml:space="preserve">Centigrade units</doc>
      </member>
      <member name="kelvin"
              value="2"
              c:identifier="E_SOURCE_WEATHER_UNITS_KELVIN"
              glib:nick="kelvin">
        <doc xml:space="preserve">Kelvin units</doc>
      </member>
    </enumeration>
    <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_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_update_ssl_trust()
and e_source_webdav_verify_ssl_trust().</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="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"
                     nullable="1"
                     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"
                     nullable="1"
                     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_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"
                     nullable="1"
                     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"
                     nullable="1"
                     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"
                     nullable="1"
                     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="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>
      <method name="update_ssl_trust"
              c:identifier="e_source_webdav_update_ssl_trust"
              version="3.16">
        <doc xml:space="preserve">Updates 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="host" transfer-ownership="none">
            <doc xml:space="preserve">a host name to store the certificate for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">the invalid certificate of the connection over which @host is about
       to be sent</doc>
            <type name="Gio.TlsCertificate" c:type="GTlsCertificate*"/>
          </parameter>
          <parameter name="response" transfer-ownership="none">
            <doc xml:space="preserve">user's response from a trust prompt for @cert</doc>
            <type name="TrustPromptResponse" c:type="ETrustPromptResponse"/>
          </parameter>
        </parameters>
      </method>
      <method name="verify_ssl_trust"
              c:identifier="e_source_webdav_verify_ssl_trust">
        <doc xml:space="preserve">Verifies SSL trust for the given @host and @cert, as previously stored in the @extension
with e_source_webdav_update_ssl_trust().</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="host" transfer-ownership="none">
            <doc xml:space="preserve">a host name to store the certificate for</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cert" transfer-ownership="none">
            <doc xml:space="preserve">the invalid certificate of the connection over which @host is about
       to be sent</doc>
            <type name="Gio.TlsCertificate" c:type="GTlsCertificate*"/>
          </parameter>
          <parameter name="cert_errors" transfer-ownership="none">
            <type name="Gio.TlsCertificateFlags"
                  c:type="GTlsCertificateFlags"/>
          </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="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>
    <callback name="TypeFunc" c:type="ETypeFunc" version="3.4">
      <doc xml:space="preserve">Specifies the type of functions passed to e_type_traverse().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="type" transfer-ownership="none">
          <doc xml:space="preserve">a #GType</doc>
          <type name="GType" c:type="GType"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none" closure="1">
          <doc xml:space="preserve">user data passed to e_type_traverse()</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <bitfield name="WebDAVDiscoverSupports" c:type="EWebDAVDiscoverSupports">
      <member name="none"
              value="0"
              c:identifier="E_WEBDAV_DISCOVER_SUPPORTS_NONE">
      </member>
      <member name="contacts"
              value="1"
              c:identifier="E_WEBDAV_DISCOVER_SUPPORTS_CONTACTS">
      </member>
      <member name="events"
              value="2"
              c:identifier="E_WEBDAV_DISCOVER_SUPPORTS_EVENTS">
      </member>
      <member name="memos"
              value="4"
              c:identifier="E_WEBDAV_DISCOVER_SUPPORTS_MEMOS">
      </member>
      <member name="tasks"
              value="8"
              c:identifier="E_WEBDAV_DISCOVER_SUPPORTS_TASKS">
      </member>
    </bitfield>
    <record name="WebDAVDiscoveredSource" c:type="EWebDAVDiscoveredSource">
      <field name="href" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="supports" writable="1">
        <type name="guint32" c:type="guint32"/>
      </field>
      <field name="display_name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="description" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="color" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
    </record>
    <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>
    <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_bind_property"
              c:identifier="e_binding_bind_property"
              version="3.16"
              introspectable="0">
      <doc xml:space="preserve">Thread safe variant of g_object_bind_property(). See its documentation
for more information on arguments and return value.</doc>
      <return-value>
        <type name="GObject.Binding" c:type="GBinding*"/>
      </return-value>
      <parameters>
        <parameter name="source" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="source_property" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="target" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="target_property" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <type name="GObject.BindingFlags" c:type="GBindingFlags"/>
        </parameter>
      </parameters>
    </function>
    <function name="binding_bind_property_full"
              c:identifier="e_binding_bind_property_full"
              version="3.16"
              introspectable="0">
      <doc xml:space="preserve">Thread safe variant of g_object_bind_property_full(). See its documentation
for more information on arguments and return value.</doc>
      <return-value>
        <type name="GObject.Binding" c:type="GBinding*"/>
      </return-value>
      <parameters>
        <parameter name="source" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="source_property" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="target" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="target_property" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <type name="GObject.BindingFlags" c:type="GBindingFlags"/>
        </parameter>
        <parameter name="transform_to" transfer-ownership="none">
          <type name="GObject.BindingTransformFunc"
                c:type="GBindingTransformFunc"/>
        </parameter>
        <parameter name="transform_from"
                   transfer-ownership="none"
                   scope="notified"
                   closure="7"
                   destroy="8">
          <type name="GObject.BindingTransformFunc"
                c:type="GBindingTransformFunc"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="notify" transfer-ownership="none" scope="async">
          <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
        </parameter>
      </parameters>
    </function>
    <function name="binding_bind_property_with_closures"
              c:identifier="e_binding_bind_property_with_closures"
              version="3.16"
              introspectable="0">
      <doc xml:space="preserve">Thread safe variant of g_object_bind_property_with_closures(). See its
documentation for more information on arguments and return value.</doc>
      <return-value>
        <type name="GObject.Binding" c:type="GBinding*"/>
      </return-value>
      <parameters>
        <parameter name="source" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="source_property" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="target" transfer-ownership="none">
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="target_property" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <type name="GObject.BindingFlags" c:type="GBindingFlags"/>
        </parameter>
        <parameter name="transform_to" transfer-ownership="none">
          <type name="GObject.Closure" c:type="GClosure*"/>
        </parameter>
        <parameter name="transform_from" transfer-ownership="none">
          <type name="GObject.Closure" c:type="GClosure*"/>
        </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.

This function is thread safe.</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_dup_icon_file_for"
              c:identifier="e_categories_dup_icon_file_for"
              version="3.16">
      <doc xml:space="preserve">Gets the icon file associated with the given category and returns a copy of
it.

This function is thread safe.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">icon file name; free with g_free().</doc>
        <type name="utf8" c:type="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_dup_list"
              c:identifier="e_categories_dup_list"
              version="3.16">
      <doc xml:space="preserve">Returns a sorted list of all the category names currently configured.

This function is thread safe.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">a sorted #GList containing
the names of the categories. The list should be freed using g_list_free(),
and the names of the categories should be freed using g_free(). Everything
can be freed simultaneously using g_list_free_full().</doc>
        <type name="GLib.List" c:type="GList*">
          <type name="utf8"/>
        </type>
      </return-value>
    </function>
    <function name="categories_exist" c:identifier="e_categories_exist">
      <doc xml:space="preserve">Checks whether the given category is available in the configuration.

This function is thread safe.</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"
              deprecated="1"
              deprecated-version="3.16">
      <doc xml:space="preserve">Gets the icon file associated with the given category.

This function is mostly thread safe, but as the icon file name is not
copied, it may be freed by another thread after being returned by this
function. Use e_categories_dup_icon_file_for() instead.</doc>
      <doc-deprecated xml:space="preserve">This function is not entirely thread safe. Use
e_categories_dup_icon_file_for() instead.</doc-deprecated>
      <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"
              deprecated="1"
              deprecated-version="3.16">
      <doc xml:space="preserve">Returns a sorted list of all the category names currently configured.

This function is mostly thread safe, but as the category names are not
copied, they may be freed by another thread after being returned by this
function. Use e_categories_dup_list() instead.</doc>
      <doc-deprecated xml:space="preserve">This function is not entirely thread safe. Use
e_categories_dup_list() instead.</doc-deprecated>
      <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.

This function is thread safe.

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.

This function is thread safe.</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.

This function is thread safe.</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.

This function is thread safe.</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.

This function is thread safe.</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="collator_error_quark"
              c:identifier="e_collator_error_quark"
              moved-to="Collator.error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
    <function name="data_server_util_get_dbus_call_timeout"
              c:identifier="e_data_server_util_get_dbus_call_timeout"
              version="3.0"
              deprecated="1"
              deprecated-version="3.8">
      <doc xml:space="preserve">Returns the value set by e_data_server_util_set_dbus_call_timeout().</doc>
      <doc-deprecated xml:space="preserve">This value is not used anywhere.</doc-deprecated>
      <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="1"
              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>
      <doc-deprecated xml:space="preserve">This value is not used anywhere.</doc-deprecated>
      <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="..." transfer-ownership="none">
          <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"
                   nullable="1"
                   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"
                   nullable="1"
                   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"
                   nullable="1"
                   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="free_form_exp_to_sexp"
              c:identifier="e_free_form_exp_to_sexp"
              version="3.16">
      <doc xml:space="preserve">Converts the @free_form_exp to an S-Expression using the S-Expression
builders defined in the @symbols. The @symbols should have one symbol
with an empty string as its name, which is used for words which do not
have a symbol name prefix.

The @symbols is a NULL-terminated array of known symbols. The NULL should
be set for the symbol's name.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">converted @free_form_exp into S-Expression, %NULL on error.
   Free the returned string with a g_free(), when done with it.</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="free_form_exp" transfer-ownership="none">
          <doc xml:space="preserve">a Free Form Expression</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="symbols" transfer-ownership="none">
          <doc xml:space="preserve">known symbols, which can be used in the Free From Expression</doc>
          <type name="FreeFormExpSymbol" c:type="const EFreeFormExpSymbol*"/>
        </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">
          <doc xml:space="preserve">Maximum number of threads for this pool</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="thread_func" transfer-ownership="none" closure="2">
          <doc xml:space="preserve">Function to run for a given thread</doc>
          <type name="GLib.Func" c:type="GFunc"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <doc xml:space="preserve">The user data to pass to @thread_func</doc>
          <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="secret_store_delete_sync"
              c:identifier="e_secret_store_delete_sync"
              version="3.18"
              throws="1">
      <doc xml:space="preserve">Deletes the secret for @uid from either the default keyring or
session keyring.

Note the boolean return value indicates whether the delete operation
itself completed successfully, not whether the secret was found and
deleted. If no such secret was found, the function will still return
%TRUE. If an error occurs, the function sets @error and returns %FALSE.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uid" transfer-ownership="none">
          <doc xml:space="preserve">a unique identifier of the secret</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   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="secret_store_lookup_sync"
              c:identifier="e_secret_store_lookup_sync"
              version="3.18"
              throws="1">
      <doc xml:space="preserve">Looks up a secret for the @uid. Both the default and session keyrings
are queried.

Note the boolean return value indicates whether the lookup operation
itself completed successfully, not whether the secret was found. If
no secret was found, the function will set @out_secret to %NULL,
but still return %TRUE. If an error occurs, the function sets @error
and returns %FALSE.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uid" transfer-ownership="none">
          <doc xml:space="preserve">a unique identifier of the secret</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="out_secret"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">return location for the secret, or %NULL</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   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="secret_store_store_sync"
              c:identifier="e_secret_store_store_sync"
              version="3.18"
              throws="1">
      <doc xml:space="preserve">Stores the @secret for the @uid.

If @permanently is %TRUE, the secret is stored in the default keyring.
Otherwise the secret is stored in the memory-only session keyring. If
an error occurs, the function sets @error and returns %FALSE.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">%TRUE on success, %FALSE on error</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="uid" transfer-ownership="none">
          <doc xml:space="preserve">a unique identifier of the secret</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="secret" transfer-ownership="none">
          <doc xml:space="preserve">the secret to store</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="label" transfer-ownership="none">
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="permanently" transfer-ownership="none">
          <doc xml:space="preserve">store permanently or just for the session</doc>
          <type name="gboolean" c:type="gboolean"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   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="soup_ssl_trust_connect"
              c:identifier="e_soup_ssl_trust_connect"
              version="3.16"
              introspectable="0">
      <doc xml:space="preserve">Sets up automatic SSL certificate trust handling for @soup_message using the trust
data stored in @source's WebDAV extension. If @soup_message is about to be sent on
an SSL connection with an invalid certificate, the code checks if the WebDAV
extension already has a trust response for that certificate and verifies it
with e_source_webdav_verify_ssl_trust(). If the verification fails, then
the @soup_message send also fails.

This works by connecting to the "network-event" signal on @soup_message and
connecting to the "accept-certificate" signal on each #GTlsConnection for
which @soup_message reports a #G_SOCKET_CLIENT_TLS_HANDSHAKING event. These
handlers are torn down automatically when @soup_message is disposed. This process
is not thread-safe; it is sufficient for safety if all use of @soup_message's
session and the disposal of @soup_message occur in the same thread.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="soup_message" transfer-ownership="none">
          <doc xml:space="preserve">a #SoupMessage about to be sent to the source</doc>
          <type c:type="SoupMessage*"/>
        </parameter>
        <parameter name="source" transfer-ownership="none">
          <doc xml:space="preserve">an #ESource that uses WebDAV</doc>
          <type name="Source" c:type="ESource*"/>
        </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="timeout_add_seconds_with_name"
              c:identifier="e_timeout_add_seconds_with_name"
              version="3.12">
      <doc xml:space="preserve">Similar to g_timeout_add_seconds_full(), but also names the #GSource as
%name.

You might find e_named_timeout_add_seconds() or
e_named_timeout_add_seconds_full() more convenient.  Those macros name
the #GSource implicitly.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the ID (greater than 0) of the event source</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="priority" transfer-ownership="none">
          <doc xml:space="preserve">the priority of the timeout source, typically in the
           range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="interval" transfer-ownership="none">
          <doc xml:space="preserve">the time between calls to the function, in seconds</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="name"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">debug name for the source</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="function"
                   transfer-ownership="none"
                   scope="notified"
                   closure="4"
                   destroy="5">
          <doc xml:space="preserve">function to call</doc>
          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve">data to pass to @function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="notify"
                   transfer-ownership="none"
                   nullable="1"
                   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>
    </function>
    <function name="timeout_add_with_name"
              c:identifier="e_timeout_add_with_name"
              version="3.12">
      <doc xml:space="preserve">Similar to g_timeout_add_full(), but also names the #GSource as @name.

You might find e_named_timeout_add() or e_named_timeout_add_full() more
convenient.  Those macros name the #GSource implicitly.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">the ID (greather than 0) of the event source</doc>
        <type name="guint" c:type="guint"/>
      </return-value>
      <parameters>
        <parameter name="priority" transfer-ownership="none">
          <doc xml:space="preserve">the priority of the timeout source, typically in the
           range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="interval" transfer-ownership="none">
          <doc xml:space="preserve">the time between calls to the function, in milliseconds
           (1/1000ths of a second)</doc>
          <type name="guint" c:type="guint"/>
        </parameter>
        <parameter name="name"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">debug name for the source</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="function"
                   transfer-ownership="none"
                   scope="notified"
                   closure="4"
                   destroy="5">
          <doc xml:space="preserve">function to call</doc>
          <type name="GLib.SourceFunc" c:type="GSourceFunc"/>
        </parameter>
        <parameter name="data" transfer-ownership="none">
          <doc xml:space="preserve">data to pass to @function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
        <parameter name="notify"
                   transfer-ownership="none"
                   nullable="1"
                   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>
    </function>
    <function name="type_traverse"
              c:identifier="e_type_traverse"
              version="3.4"
              introspectable="0">
      <doc xml:space="preserve">Calls @func for all instantiable subtypes of @parent_type.

This is often useful for extending functionality by way of #EModule.
A module may register a subtype of @parent_type in its e_module_load()
function.  Then later on the application will call e_type_traverse()
to instantiate all registered subtypes of @parent_type.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="parent_type" transfer-ownership="none">
          <doc xml:space="preserve">the root #GType to traverse from</doc>
          <type name="GType" c:type="GType"/>
        </parameter>
        <parameter name="func" transfer-ownership="none" closure="2">
          <doc xml:space="preserve">the function to call for each visited #GType</doc>
          <type name="TypeFunc" c:type="ETypeFunc"/>
        </parameter>
        <parameter name="user_data" transfer-ownership="none">
          <doc xml:space="preserve">user data to pass to the function</doc>
          <type name="gpointer" c:type="gpointer"/>
        </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="1"
              deprecated-version="3.8">
      <doc xml:space="preserve">Copies #GSList of #GObject&lt;!-- --&gt;s at the end of @copy_to.</doc>
      <doc-deprecated xml:space="preserve">Use g_slist_copy_deep() instead, and optionally
                 g_slist_concat() to concatenate the copied list
                 to another #GSList.</doc-deprecated>
      <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"
                   nullable="1"
                   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="1"
              deprecated-version="3.8">
      <doc xml:space="preserve">Copies #GSList of strings at the end of @copy_to.</doc>
      <doc-deprecated xml:space="preserve">Use g_slist_copy_deep() instead, and optionally
                 g_slist_concat() to concatenate the copied list
                 to another #GSList.</doc-deprecated>
      <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"
                   nullable="1"
                   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="1"
              deprecated-version="3.8">
      <doc xml:space="preserve">Calls g_object_unref() on each member of @objects and then frees
also @objects itself.</doc>
      <doc-deprecated xml:space="preserve">Use g_slist_free_full() instead.</doc-deprecated>
      <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="1"
              deprecated-version="3.8">
      <doc xml:space="preserve">Frees memory previously allocated by e_util_strv_to_slist().</doc>
      <doc-deprecated xml:space="preserve">Use g_slist_free_full() instead.</doc-deprecated>
      <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_get_source_full_name"
              c:identifier="e_util_get_source_full_name">
      <doc xml:space="preserve">Constructs a full name of the @source with all of its parents
of the form: "&amp;lt;account-name&amp;gt; : &amp;lt;parent&amp;gt;/&amp;lt;source&amp;gt;" where
the "&amp;lt;parent&amp;gt;/" part can be repeated zero or more times, depending
on the deep level of the @source.</doc>
      <return-value transfer-ownership="full">
        <doc xml:space="preserve">Full name of the @source as a newly allocated
   string, which should be freed with g_free() when done with it.

Since 3.18</doc>
        <type name="utf8" c:type="gchar*"/>
      </return-value>
      <parameters>
        <parameter name="registry" transfer-ownership="none">
          <doc xml:space="preserve">an #ESourceRegistry</doc>
          <type name="gpointer" c:type="_ESourceRegistry*"/>
        </parameter>
        <parameter name="source" transfer-ownership="none">
          <doc xml:space="preserve">an #ESource</doc>
          <type name="gpointer" c:type="_ESource*"/>
        </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_safe_free_string"
              c:identifier="e_util_safe_free_string"
              version="3.16">
      <doc xml:space="preserve">Calls g_free() on @string, but before it rewrites its content with zeros.
This is suitable to free strings with passwords.</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="str" transfer-ownership="none">
          <doc xml:space="preserve">a string to free</doc>
          <type name="utf8" c:type="gchar*"/>
        </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"
                   nullable="1"
                   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_equal"
              c:identifier="e_util_strv_equal"
              version="3.12">
      <doc xml:space="preserve">Compares @v1 and @v2 for equality, handling %NULL gracefully.

The arguments types are generic for compatibility with #GEqualFunc.</doc>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve">whether @v1 and @v2 are identical</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="v1"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a %NULL-terminated string array, or %NULL</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </parameter>
        <parameter name="v2"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">another %NULL-terminated string array, or %NULL</doc>
          <type name="gpointer" c:type="gconstpointer"/>
        </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"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">a #GObject or %NULL</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="webdav_discover_free_discovered_sources"
              c:identifier="e_webdav_discover_free_discovered_sources"
              version="3.18"
              introspectable="0">
      <doc xml:space="preserve">Frees a @GSList of discovered sources returned from
e_webdav_discover_sources_finish() or e_webdav_discover_sources_sync().</doc>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="discovered_sources" transfer-ownership="none">
          <doc xml:space="preserve">A #GSList of discovered sources</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="webdav_discover_sources"
              c:identifier="e_webdav_discover_sources"
              version="3.18">
      <doc xml:space="preserve">Asynchronously runs discovery of the WebDAV sources (CalDAV and CardDAV), eventually
limited by the @only_supports filter, which can be %E_WEBDAV_DISCOVER_SUPPORTS_NONE
to search all types. Note that the list of returned calendars can be more general,
thus check for its actual support type for further filtering of the results.
The @url_use_path can be used to override actual server path, or even complete URL,
for the given @source.

When the operation is finished, @callback will be called. You can then
call e_webdav_discover_sources_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="source" transfer-ownership="none">
          <doc xml:space="preserve">an #ESource from which to take connection details</doc>
          <type name="Source" c:type="ESource*"/>
        </parameter>
        <parameter name="url_use_path"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">optional URL override, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="only_supports" transfer-ownership="none">
          <doc xml:space="preserve">bit-or of EWebDAVDiscoverSupports, to limit what type of sources to search</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="credentials"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">credentials to use for authentication to the server</doc>
          <type name="NamedParameters" c:type="const ENamedParameters*"/>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   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"
                   nullable="1"
                   allow-none="1"
                   scope="async"
                   closure="6">
          <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="webdav_discover_sources_finish"
              c:identifier="e_webdav_discover_sources_finish"
              version="3.18"
              introspectable="0"
              throws="1">
      <doc xml:space="preserve">Finishes the operation started with e_webdav_discover_sources(). If an
error occurred, the function will set @error and return %FALSE. The function
can return success and no discovered sources, the same as it can return failure,
but still set some output arguments, like the certificate related output
arguments with SOUP_STATUS_SSL_FAILED error.

The return value of @out_certificate_pem should be freed with g_free()
when no longer needed.

The return value of @out_discovered_sources should be freed
with e_webdav_discover_free_discovered_sources() when no longer needed.

The return value of @out_calendar_user_addresses should be freed
with g_slist_free_full (calendar_user_addresses, 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>
        <parameter name="source" transfer-ownership="none">
          <doc xml:space="preserve">an #ESource on which the operation was started</doc>
          <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_certificate_pem"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">(allow-none): optional return location
  for a server SSL certificate in PEM format, when the operation failed
  with an SSL error</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
        <parameter name="out_certificate_errors"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">(allow-none): optional #GTlsCertificateFlags,
  with certificate error flags when the operation failed with SSL error</doc>
          <type name="Gio.TlsCertificateFlags" c:type="GTlsCertificateFlags*"/>
        </parameter>
        <parameter name="out_discovered_sources"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">(element-type EWebDAVDiscoveredSource): a #GSList
  of all discovered sources</doc>
          <type name="GLib.SList" c:type="GSList**">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
        <parameter name="out_calendar_user_addresses"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">(allow-none): (element-type gchar *): a #GSList of
  all discovered mail addresses for calendar sources</doc>
          <type name="GLib.SList" c:type="GSList**">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
      </parameters>
    </function>
    <function name="webdav_discover_sources_sync"
              c:identifier="e_webdav_discover_sources_sync"
              version="3.18"
              introspectable="0"
              throws="1">
      <doc xml:space="preserve">Synchronously runs discovery of the WebDAV sources (CalDAV and CardDAV), eventually
limited by the @only_supports filter, which can be %E_WEBDAV_DISCOVER_SUPPORTS_NONE
to search all types. Note that the list of returned calendars can be more general,
thus check for its actual support type for further filtering of the results.
The @url_use_path can be used to override actual server path, or even complete URL,
for the given @source.

If an error occurred, the function will set @error and return %FALSE. The function
can return success and no discovered sources, the same as it can return failure,
but still set some output arguments, like the certificate related output
arguments with SOUP_STATUS_SSL_FAILED error.

The return value of @out_certificate_pem should be freed with g_free()
when no longer needed.

The return value of @out_discovered_sources should be freed
with e_webdav_discover_free_discovered_sources() when no longer needed.

The return value of @out_calendar_user_addresses should be freed
with g_slist_free_full (calendar_user_addresses, 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>
        <parameter name="source" transfer-ownership="none">
          <doc xml:space="preserve">an #ESource from which to take connection details</doc>
          <type name="Source" c:type="ESource*"/>
        </parameter>
        <parameter name="url_use_path"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">optional URL override, or %NULL</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="only_supports" transfer-ownership="none">
          <doc xml:space="preserve">bit-or of EWebDAVDiscoverSupports, to limit what type of sources to search</doc>
          <type name="guint32" c:type="guint32"/>
        </parameter>
        <parameter name="credentials"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve">credentials to use for authentication to the server</doc>
          <type name="NamedParameters" c:type="const ENamedParameters*"/>
        </parameter>
        <parameter name="out_certificate_pem"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">(allow-none): optional return location
  for a server SSL certificate in PEM format, when the operation failed
  with an SSL error</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
        <parameter name="out_certificate_errors"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">(allow-none): optional #GTlsCertificateFlags,
  with certificate error flags when the operation failed with SSL error</doc>
          <type name="Gio.TlsCertificateFlags" c:type="GTlsCertificateFlags*"/>
        </parameter>
        <parameter name="out_discovered_sources"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">(element-type EWebDAVDiscoveredSource): a #GSList
  of all discovered sources</doc>
          <type name="GLib.SList" c:type="GSList**">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
        <parameter name="out_calendar_user_addresses"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve">(allow-none): (element-type gchar *): a #GSList of
  all discovered mail addresses for calendar sources</doc>
          <type name="GLib.SList" c:type="GSList**">
            <type name="gpointer" c:type="gpointer"/>
          </type>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   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="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="utf8"/>
            <type name="utf8"/>
          </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="utf8"/>
            <type name="utf8"/>
          </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="utf8"/>
          <type name="utf8"/>
        </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>
