<?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="Camel" version="1.2"/>
  <include name="EDataServer" version="1.2"/>
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <include name="Soup" version="2.4"/>
  <include name="libxml2" version="2.0"/>
  <package name="libebackend-1.2"/>
  <c:include name="libebackend/libebackend.h"/>
  <namespace name="EBackend"
             version="1.2"
             shared-library="libcamel-1.2.so.62,libedataserver-1.2.so.26,libebackend-1.2.so.10"
             c:identifier-prefixes="E"
             c:symbol-prefixes="e">
    <enumeration name="AuthenticationSessionResult"
                 version="3.6"
                 glib:type-name="EAuthenticationSessionResult"
                 glib:get-type="e_authentication_session_result_get_type"
                 c:type="EAuthenticationSessionResult">
      <doc xml:space="preserve"
           filename="src/libebackend/e-backend-enums.h"
           line="25">Completion codes used by #EAuthenticationSession.</doc>
      <member name="error"
              value="0"
              c:identifier="E_AUTHENTICATION_SESSION_ERROR"
              glib:nick="error">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="27">An error occurred while authenticating.</doc>
      </member>
      <member name="success"
              value="1"
              c:identifier="E_AUTHENTICATION_SESSION_SUCCESS"
              glib:nick="success">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="29">Client reported successful authentication.</doc>
      </member>
      <member name="dismissed"
              value="2"
              c:identifier="E_AUTHENTICATION_SESSION_DISMISSED"
              glib:nick="dismissed">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="31">User dismissed the authentication prompt.</doc>
      </member>
    </enumeration>
    <function-macro name="BACKEND" c:identifier="E_BACKEND" introspectable="0">
      <source-position filename="src/libebackend/e-backend.h" line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BACKEND_CLASS"
                    c:identifier="E_BACKEND_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-backend.h" line="32"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BACKEND_FACTORY"
                    c:identifier="E_BACKEND_FACTORY"
                    introspectable="0">
      <source-position filename="src/libebackend/e-backend-factory.h"
                       line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BACKEND_FACTORY_CLASS"
                    c:identifier="E_BACKEND_FACTORY_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-backend-factory.h"
                       line="33"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BACKEND_FACTORY_GET_CLASS"
                    c:identifier="E_BACKEND_FACTORY_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-backend-factory.h"
                       line="42"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BACKEND_GET_CLASS"
                    c:identifier="E_BACKEND_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-backend.h" line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Backend"
           c:symbol-prefix="backend"
           c:type="EBackend"
           version="3.4"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="EBackend"
           glib:get-type="e_backend_get_type"
           glib:type-struct="BackendClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-backend.h"
           line="55">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-backend.h" line="101"/>
      <virtual-method name="authenticate_sync" throws="1">
        <source-position filename="src/libebackend/e-backend.h" line="92"/>
        <return-value transfer-ownership="none">
          <type name="EDataServer.SourceAuthenticationResult"
                c:type="ESourceAuthenticationResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="credentials" transfer-ownership="none">
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="out_certificate_pem" transfer-ownership="none">
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="out_certificate_errors" transfer-ownership="none">
            <type name="Gio.TlsCertificateFlags"
                  c:type="GTlsCertificateFlags*"/>
          </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="get_destination_address"
                      invoker="get_destination_address"
                      version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1536">Provides destination server host name and port to which
the backend connects. This is used to determine required
connection point for e_backend_is_destination_reachable().
The @host is a newly allocated string, which will be freed
with g_free(). When @backend sets both @host and @port, then
it should return %TRUE, indicating it's a remote backend.
Default implementation returns %FALSE, which is treated
like the backend is local, no checking for server reachability
is possible.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="1552">%TRUE, when it's a remote backend and provides both
  @host and @port; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1538">an #EBackend instance</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="host"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1539">destination server host name</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="port"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1540">destination server port</doc>
            <type name="guint16" c:type="guint16*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="prepare_shutdown"
                      invoker="prepare_shutdown"
                      version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1631">Let's the @backend know that it'll be shut down shortly, no client connects
to it anymore. The @backend can free any resources which reference it, for
example the opened views.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="89"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1633">an #EBackend instance</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="credentials_required"
              c:identifier="e_backend_credentials_required"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1180">Asynchronously calls the e_backend_credentials_required_sync() on the @backend,
to inform clients that credentials are required.

When the operation is finished, @callback will be called. You can then
call e_backend_credentials_required_finish() to get the result of the operation.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="124"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1182">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="reason" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1183">an #ESourceCredentialsReason, why the credentials are required</doc>
            <type name="EDataServer.SourceCredentialsReason"
                  c:type="ESourceCredentialsReason"/>
          </parameter>
          <parameter name="certificate_pem" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1184">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"
                 filename="src/libebackend/e-backend.c"
                 line="1185">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"
                 filename="src/libebackend/e-backend.c"
                 line="1186">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"
                 filename="src/libebackend/e-backend.c"
                 line="1187">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"
                 filename="src/libebackend/e-backend.c"
                 line="1188">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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1189">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="credentials_required_finish"
              c:identifier="e_backend_credentials_required_finish"
              version="3.16"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1229">Finishes the operation started with e_backend_credentials_required().

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="132"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="1239">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1231">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1232">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="credentials_required_sync"
              c:identifier="e_backend_credentials_required_sync"
              version="3.16"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1096">Synchronously lets the clients know that the backned requires credentials to be
properly opened. It's a proxy function for e_source_invoke_credentials_required_sync(),
where can be found more information about actual parameters meaning.

The provided credentials are received through #EBackendClass.authenticate_sync()
method asynchronously.

If an error occurs, the function sets @error and returns %FALSE.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="116"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="1115">%TRUE on success, %FALSE on error</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1098">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="reason" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1099">an #ESourceCredentialsReason, why the credentials are required</doc>
            <type name="EDataServer.SourceCredentialsReason"
                  c:type="ESourceCredentialsReason"/>
          </parameter>
          <parameter name="certificate_pem" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1100">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"
                 filename="src/libebackend/e-backend.c"
                 line="1101">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"
                 filename="src/libebackend/e-backend.c"
                 line="1102">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"
                 filename="src/libebackend/e-backend.c"
                 line="1103">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ensure_online_state_updated"
              c:identifier="e_backend_ensure_online_state_updated"
              version="3.18">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="937">Makes sure that the "online" property is updated, that is, if there
is any destination reachability test pending, it'll be done immediately
and the only state will be updated as well.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="107"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="939">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="940">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ensure_source_status_connected"
              c:identifier="e_backend_ensure_source_status_connected"
              version="3.18">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1354">Makes sure that the associated ESource::connection-status is connected. This is
useful in cases when the backend can connect to the destination without invoking
#EBackendClass.authenticate_sync(), possibly through e_backend_schedule_authenticate().</doc>
        <source-position filename="src/libebackend/e-backend.h" line="146"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1356">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_destination_address"
              c:identifier="e_backend_get_destination_address"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1536">Provides destination server host name and port to which
the backend connects. This is used to determine required
connection point for e_backend_is_destination_reachable().
The @host is a newly allocated string, which will be freed
with g_free(). When @backend sets both @host and @port, then
it should return %TRUE, indicating it's a remote backend.
Default implementation returns %FALSE, which is treated
like the backend is local, no checking for server reachability
is possible.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="165"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="1552">%TRUE, when it's a remote backend and provides both
  @host and @port; %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1538">an #EBackend instance</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="host"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1539">destination server host name</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="port"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1540">destination server port</doc>
            <type name="guint16" c:type="guint16*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_online"
              c:identifier="e_backend_get_online"
              version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="875">Returns the online state of @backend: %TRUE if @backend is online,
%FALSE if offline.

If the #EBackend:connectable property is non-%NULL, the @backend will
automatically determine whether the network service should be reachable,
and hence whether the @backend is #EBackend:online.  But subclasses may
override the online state if, for example, a connection attempt fails.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="104"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="887">the online state</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="877">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_source"
              c:identifier="e_backend_get_source"
              version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="982">Returns the #ESource to which @backend is paired.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="988">the #ESource to which @backend is paired</doc>
          <type name="EDataServer.Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="984">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_user_prompter"
              c:identifier="e_backend_get_user_prompter"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1379">Gets an instance of #EUserPrompter, associated with this @backend.

The returned instance is owned by the @backend.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="149"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="1387">an #EUserPrompter instance</doc>
          <type name="gpointer" c:type="_EUserPrompter*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1381">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_destination_reachable"
              c:identifier="e_backend_is_destination_reachable"
              version="3.8"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1575">Checks whether the @backend&lt;!-- --&gt;'s destination server, as returned
by e_backend_get_destination_address(), is reachable.
If the e_backend_get_destination_address() returns %FALSE, this function
returns %TRUE, meaning the destination is always reachable.
This uses #GNetworkMonitor&lt;!-- --&gt;'s g_network_monitor_can_reach()
for reachability tests.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="169"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="1588">%TRUE, when destination server address is reachable or
   the backend doesn't provide destination address; %FALSE if
   the backend destination server cannot be reached currently.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1577">an #EBackend instance</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1578">a #GCancellable instance, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prepare_shutdown"
              c:identifier="e_backend_prepare_shutdown"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1631">Let's the @backend know that it'll be shut down shortly, no client connects
to it anymore. The @backend can free any resources which reference it, for
example the opened views.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="173"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1633">an #EBackend instance</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_connectable"
              c:identifier="e_backend_ref_connectable"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1000">Returns the socket endpoint for the network service to which @backend
is a client, or %NULL if @backend does not use network sockets.

The initial value of the #EBackend:connectable property is derived from
the #ESourceAuthentication extension of the @backend's #EBackend:source
property, if the extension is present.

The returned #GSocketConnectable is referenced for thread-safety and
must be unreferenced with g_object_unref() when finished with it.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="112"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="1014">a #GSocketConnectable, or %NULL</doc>
          <type name="Gio.SocketConnectable" c:type="GSocketConnectable*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1002">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_main_context"
              c:identifier="e_backend_ref_main_context"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1074">Returns the #GMainContext on which event sources for @backend 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>
        <source-position filename="src/libebackend/e-backend.h" line="115"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="1084">a #GMainContext</doc>
          <type name="GLib.MainContext" c:type="GMainContext*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1076">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="schedule_authenticate"
              c:identifier="e_backend_schedule_authenticate"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1315">Schedules a new authenticate session, cancelling any previously run.
This is usually done automatically, when an 'authenticate' signal is
received for the associated #ESource. With %NULL @credentials an attempt
without it is run.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="144"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1317">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="credentials"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1318">a credentials to use to authenticate, or %NULL</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
        </parameters>
      </method>
      <method name="schedule_credentials_required"
              c:identifier="e_backend_schedule_credentials_required"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1282">Asynchronously invokes e_backend_credentials_required(), but installs its
own callback which only prints a runtime warning on the console when
the call fails. The @who_calls is a prefix of the console message.
This is useful when the caller just wants to start the operation
without having actual place where to show the operation result.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="136"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1284">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="reason" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1285">an #ESourceCredentialsReason, why the credentials are required</doc>
            <type name="EDataServer.SourceCredentialsReason"
                  c:type="ESourceCredentialsReason"/>
          </parameter>
          <parameter name="certificate_pem" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1286">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"
                 filename="src/libebackend/e-backend.c"
                 line="1287">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"
                 filename="src/libebackend/e-backend.c"
                 line="1288">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"
                 filename="src/libebackend/e-backend.c"
                 line="1289">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="who_calls"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1290">an identification who calls this</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_connectable"
              c:identifier="e_backend_set_connectable"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1035">Sets the socket endpoint for the network service to which @backend is
a client.  This can be %NULL if @backend does not use network sockets.

The initial value of the #EBackend:connectable property is derived from
the #ESourceAuthentication extension of the @backend's #EBackend:source
property, if the extension is present.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="113"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1037">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="connectable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1038">a #GSocketConnectable, or %NULL</doc>
            <type name="Gio.SocketConnectable" c:type="GSocketConnectable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_online"
              c:identifier="e_backend_set_online"
              version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="899">Sets the online state of @backend: %TRUE if @backend is online,
@FALSE if offline.

If the #EBackend:connectable property is non-%NULL, the @backend will
automatically determine whether the network service should be reachable,
and hence whether the @backend is #EBackend:online.  But subclasses may
override the online state if, for example, a connection attempt fails.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="105"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="901">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="online" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="902">the online state</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="trust_prompt"
              c:identifier="e_backend_trust_prompt"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1452">Initiates a user trust prompt with given @parameters.

When the operation is finished, @callback will be called. You can then
call e_backend_trust_prompt_finish() to get the result of the operation.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="155"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1454">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1455">an #ENamedParameters with values for the trust prompt</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1456">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"
                 filename="src/libebackend/e-backend.c"
                 line="1457">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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1458">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="trust_prompt_finish"
              c:identifier="e_backend_trust_prompt_finish"
              version="3.8"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1487">Finishes the operation started with e_backend_trust_prompt().
If an error occurred, the function will set @error and return
%E_TRUST_PROMPT_RESPONSE_UNKNOWN.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="161"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="1497">an #ETrustPromptResponse what user responded

Note: The function can return also %E_TRUST_PROMPT_RESPONSE_UNKNOWN,
   it's on error or if user closes the trust prompt dialog with other
   than the offered buttons. Usual behaviour in such case is to treat
   it as a temporary reject.</doc>
          <type name="EDataServer.TrustPromptResponse"
                c:type="ETrustPromptResponse"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1489">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1490">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="trust_prompt_sync"
              c:identifier="e_backend_trust_prompt_sync"
              version="3.8"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend.c"
             line="1399">Asks a user a trust prompt with given @parameters, and returns what
user responded. This blocks until the response is delivered.</doc>
        <source-position filename="src/libebackend/e-backend.h" line="151"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend.c"
               line="1409">an #ETrustPromptResponse what user responded

Note: The function can return also %E_TRUST_PROMPT_RESPONSE_UNKNOWN,
   it's on error or if user closes the trust prompt dialog with other
   than the offered buttons. Usual behaviour in such case is to treat
   it as a temporary reject.</doc>
          <type name="EDataServer.TrustPromptResponse"
                c:type="ETrustPromptResponse"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1401">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </instance-parameter>
          <parameter name="parameters" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1402">an #ENamedParameters with values for the trust prompt</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1403">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="connectable" writable="1" transfer-ownership="none">
        <type name="Gio.SocketConnectable"/>
      </property>
      <property name="main-context" transfer-ownership="none">
        <type name="GLib.MainContext"/>
      </property>
      <property name="online" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="source"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="EDataServer.Source"/>
      </property>
      <property name="user-prompter" transfer-ownership="none">
        <type name="UserPrompter"/>
      </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="BackendPrivate" c:type="EBackendPrivate*"/>
      </field>
    </class>
    <record name="BackendClass"
            c:type="EBackendClass"
            glib:is-gtype-struct-for="Backend"
            version="3.4">
      <doc xml:space="preserve"
           filename="src/libebackend/e-backend.h"
           line="69">Base class structure for the #EBackend class</doc>
      <source-position filename="src/libebackend/e-backend.h" line="101"/>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="get_destination_address">
        <callback name="get_destination_address">
          <source-position filename="src/libebackend/e-backend.h" line="85"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend.c"
                 line="1552">%TRUE, when it's a remote backend and provides both
  @host and @port; %FALSE otherwise.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-backend.c"
                   line="1538">an #EBackend instance</doc>
              <type name="Backend" c:type="EBackend*"/>
            </parameter>
            <parameter name="host"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-backend.c"
                   line="1539">destination server host name</doc>
              <type name="utf8" c:type="gchar**"/>
            </parameter>
            <parameter name="port"
                       direction="out"
                       caller-allocates="0"
                       transfer-ownership="full">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-backend.c"
                   line="1540">destination server port</doc>
              <type name="guint16" c:type="guint16*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="prepare_shutdown">
        <callback name="prepare_shutdown">
          <source-position filename="src/libebackend/e-backend.h" line="89"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-backend.c"
                   line="1633">an #EBackend instance</doc>
              <type name="Backend" c:type="EBackend*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="authenticate_sync">
        <callback name="authenticate_sync" throws="1">
          <source-position filename="src/libebackend/e-backend.h" line="92"/>
          <return-value transfer-ownership="none">
            <type name="EDataServer.SourceAuthenticationResult"
                  c:type="ESourceAuthenticationResult"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <type name="Backend" c:type="EBackend*"/>
            </parameter>
            <parameter name="credentials" transfer-ownership="none">
              <type name="EDataServer.NamedParameters"
                    c:type="const ENamedParameters*"/>
            </parameter>
            <parameter name="out_certificate_pem" transfer-ownership="none">
              <type name="utf8" c:type="gchar**"/>
            </parameter>
            <parameter name="out_certificate_errors" transfer-ownership="none">
              <type name="Gio.TlsCertificateFlags"
                    c:type="GTlsCertificateFlags*"/>
            </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" readable="0" private="1">
        <array zero-terminated="0" fixed-size="11">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="BackendFactory"
           c:symbol-prefix="backend_factory"
           c:type="EBackendFactory"
           version="3.4"
           parent="EDataServer.Extension"
           abstract="1"
           glib:type-name="EBackendFactory"
           glib:get-type="e_backend_factory_get_type"
           glib:type-struct="BackendFactoryClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-backend-factory.h"
           line="53">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-backend-factory.h"
                       line="93"/>
      <virtual-method name="get_hash_key" invoker="get_hash_key" version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-factory.c"
             line="60">Returns a hash key which uniquely identifies @factory.

Since only one instance of each #EBackendFactory subclass is ever created,
the hash key need only be unique among subclasses, not among instances of
each subclass.</doc>
        <source-position filename="src/libebackend/e-backend-factory.h"
                         line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend-factory.c"
               line="70">a hash key which uniquely identifies @factory</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend-factory.c"
                 line="62">an #EBackendFactory</doc>
            <type name="BackendFactory" c:type="EBackendFactory*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="new_backend" invoker="new_backend" version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-factory.c"
             line="88">Returns a new #EBackend instance for @source.</doc>
        <source-position filename="src/libebackend/e-backend-factory.h"
                         line="85"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend-factory.c"
               line="95">a new #EBackend instance for @source</doc>
          <type name="Backend" c:type="EBackend*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend-factory.c"
                 line="90">an #EBackendFactory</doc>
            <type name="BackendFactory" c:type="EBackendFactory*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend-factory.c"
                 line="91">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_hash_key"
              c:identifier="e_backend_factory_get_hash_key"
              version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-factory.c"
             line="60">Returns a hash key which uniquely identifies @factory.

Since only one instance of each #EBackendFactory subclass is ever created,
the hash key need only be unique among subclasses, not among instances of
each subclass.</doc>
        <source-position filename="src/libebackend/e-backend-factory.h"
                         line="96"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend-factory.c"
               line="70">a hash key which uniquely identifies @factory</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend-factory.c"
                 line="62">an #EBackendFactory</doc>
            <type name="BackendFactory" c:type="EBackendFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_module_filename"
              c:identifier="e_backend_factory_get_module_filename"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-factory.c"
             line="115">Returns the filename of the shared library for the module used
to load the backends provided by @factory.</doc>
        <source-position filename="src/libebackend/e-backend-factory.h"
                         line="99"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend-factory.c"
               line="122">the filename for the module associated to the @factory</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend-factory.c"
                 line="117">an #EBackendFactory</doc>
            <type name="BackendFactory" c:type="EBackendFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="new_backend"
              c:identifier="e_backend_factory_new_backend"
              version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-factory.c"
             line="88">Returns a new #EBackend instance for @source.</doc>
        <source-position filename="src/libebackend/e-backend-factory.h"
                         line="97"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend-factory.c"
               line="95">a new #EBackend instance for @source</doc>
          <type name="Backend" c:type="EBackend*"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend-factory.c"
                 line="90">an #EBackendFactory</doc>
            <type name="BackendFactory" c:type="EBackendFactory*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend-factory.c"
                 line="91">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="share_subprocess"
              c:identifier="e_backend_factory_share_subprocess"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-factory.c"
             line="140">Returns TRUE if the @factory wants to share the subprocess
for all backends provided by itself. Otherwise, returns FALSE.</doc>
        <source-position filename="src/libebackend/e-backend-factory.h"
                         line="101"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-backend-factory.c"
               line="147">TRUE if the @factory shares the subprocess for all its
         backends. Otherwise, FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend-factory.c"
                 line="142">an #EBackendFactory</doc>
            <type name="BackendFactory" c:type="EBackendFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="EDataServer.Extension" c:type="EExtension"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="BackendFactoryPrivate" c:type="EBackendFactoryPrivate*"/>
      </field>
    </class>
    <record name="BackendFactoryClass"
            c:type="EBackendFactoryClass"
            glib:is-gtype-struct-for="BackendFactory"
            version="3.4">
      <doc xml:space="preserve"
           filename="src/libebackend/e-backend-factory.h"
           line="67">Base class structure for the #EBackendFactory class</doc>
      <source-position filename="src/libebackend/e-backend-factory.h"
                       line="93"/>
      <field name="parent_class" readable="0" private="1">
        <type name="EDataServer.ExtensionClass" c:type="EExtensionClass"/>
      </field>
      <field name="get_hash_key">
        <callback name="get_hash_key">
          <source-position filename="src/libebackend/e-backend-factory.h"
                           line="84"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend-factory.c"
                 line="70">a hash key which uniquely identifies @factory</doc>
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="factory" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-backend-factory.c"
                   line="62">an #EBackendFactory</doc>
              <type name="BackendFactory" c:type="EBackendFactory*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="new_backend">
        <callback name="new_backend">
          <source-position filename="src/libebackend/e-backend-factory.h"
                           line="85"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-backend-factory.c"
                 line="95">a new #EBackend instance for @source</doc>
            <type name="Backend" c:type="EBackend*"/>
          </return-value>
          <parameters>
            <parameter name="factory" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-backend-factory.c"
                   line="90">an #EBackendFactory</doc>
              <type name="BackendFactory" c:type="EBackendFactory*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-backend-factory.c"
                   line="91">an #ESource</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="e_module">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-factory.h"
             line="71">An #EModule associated with this backend factory</doc>
        <type name="gpointer" c:type="_EModule*"/>
      </field>
      <field name="share_subprocess">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-factory.h"
             line="72">Whether subporcesses for this backend factory should share one process</doc>
        <type name="gboolean" c:type="gboolean"/>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="15">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="BackendFactoryPrivate"
            c:type="EBackendFactoryPrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-backend-factory.h"
                       line="51"/>
    </record>
    <record name="BackendPrivate" c:type="EBackendPrivate" disguised="1">
      <source-position filename="src/libebackend/e-backend.h" line="53"/>
    </record>
    <function-macro name="CACHE" c:identifier="E_CACHE" introspectable="0">
      <source-position filename="src/libebackend/e-cache.h" line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CACHE_CLASS"
                    c:identifier="E_CACHE_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-cache.h" line="34"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="CACHE_COLUMN_OBJECT"
              value="ECacheOBJ"
              c:type="E_CACHE_COLUMN_OBJECT">
      <source-position filename="src/libebackend/e-cache.h" line="54"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CACHE_COLUMN_REVISION"
              value="ECacheREV"
              c:type="E_CACHE_COLUMN_REVISION">
      <source-position filename="src/libebackend/e-cache.h" line="53"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CACHE_COLUMN_STATE"
              value="ECacheState"
              c:type="E_CACHE_COLUMN_STATE">
      <source-position filename="src/libebackend/e-cache.h" line="55"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CACHE_COLUMN_UID"
              value="ECacheUID"
              c:type="E_CACHE_COLUMN_UID">
      <source-position filename="src/libebackend/e-cache.h" line="52"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="CACHE_GET_CLASS"
                    c:identifier="E_CACHE_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-cache.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="CACHE_REAPER"
                    c:identifier="E_CACHE_REAPER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-cache-reaper.h" line="25"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="CACHE_TABLE_KEYS"
              value="ECacheKeys"
              c:type="E_CACHE_TABLE_KEYS">
      <source-position filename="src/libebackend/e-cache.h" line="50"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <constant name="CACHE_TABLE_OBJECTS"
              value="ECacheObjects"
              c:type="E_CACHE_TABLE_OBJECTS">
      <source-position filename="src/libebackend/e-cache.h" line="49"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="COLLECTION_BACKEND"
                    c:identifier="E_COLLECTION_BACKEND"
                    introspectable="0">
      <source-position filename="src/libebackend/e-collection-backend.h"
                       line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="COLLECTION_BACKEND_CLASS"
                    c:identifier="E_COLLECTION_BACKEND_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-collection-backend.h"
                       line="33"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="COLLECTION_BACKEND_FACTORY"
                    c:identifier="E_COLLECTION_BACKEND_FACTORY"
                    introspectable="0">
      <source-position filename="src/libebackend/e-collection-backend-factory.h"
                       line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="COLLECTION_BACKEND_FACTORY_CLASS"
                    c:identifier="E_COLLECTION_BACKEND_FACTORY_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-collection-backend-factory.h"
                       line="32"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="COLLECTION_BACKEND_FACTORY_GET_CLASS"
                    c:identifier="E_COLLECTION_BACKEND_FACTORY_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-collection-backend-factory.h"
                       line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="COLLECTION_BACKEND_GET_CLASS"
                    c:identifier="E_COLLECTION_BACKEND_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-collection-backend.h"
                       line="42"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="Cache"
           c:symbol-prefix="cache"
           c:type="ECache"
           version="3.26"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="ECache"
           glib:get-type="e_cache_get_type"
           glib:type-struct="CacheClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.h"
           line="323">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-cache.h" line="382"/>
      <function name="error_quark" c:identifier="e_cache_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <function name="sqlite_stmt_append_printf"
                c:identifier="e_cache_sqlite_stmt_append_printf"
                version="3.26"
                introspectable="0">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2772">Appends an SQLite statement fragment based on the @format and
its arguments to the @stmt.
The @format can contain any values recognized by sqlite3_mprintf().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="528"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="stmt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2774">a #GString statement to append to</doc>
            <type name="GLib.String" c:type="GString*"/>
          </parameter>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2775">a printf-like format</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2776">arguments for the @format</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <function name="sqlite_stmt_free"
                c:identifier="e_cache_sqlite_stmt_free"
                version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2833">Frees a statement previously constructed with e_cache_sqlite_stmt_printf().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="534"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="stmt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2835">a statement to free</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="sqlite_stmt_printf"
                c:identifier="e_cache_sqlite_stmt_printf"
                version="3.26"
                introspectable="0">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2804">Creates an SQLite statement based on the @format and its arguments.
The @format can contain any values recognized by sqlite3_mprintf().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="532"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2812">A new SQLite statement. Free the returned
   string with e_cache_sqlite_stmt_free() when no longer needed.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="format" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2806">a printf-like format</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="..." transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2807">arguments for the @format</doc>
            <varargs/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="before_put" throws="1">
        <source-position filename="src/libebackend/e-cache.h" line="366"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="revision" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="other_columns" transfer-ownership="none">
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </parameter>
          <parameter name="is_replace" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </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="before_remove" throws="1">
        <source-position filename="src/libebackend/e-cache.h" line="374"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uid" 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="clear_offline_changes_locked" throws="1">
        <source-position filename="src/libebackend/e-cache.h" line="359"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <type name="Cache" c:type="ECache*"/>
          </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="erase" invoker="erase" version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1193">Erases the cache and all of its content from the disk.
The only valid operation after this is to free the @cache.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="363"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1195">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="put_locked" throws="1">
        <source-position filename="src/libebackend/e-cache.h" line="342"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="revision" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="other_columns" transfer-ownership="none">
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </parameter>
          <parameter name="offline_state" transfer-ownership="none">
            <type name="OfflineState" c:type="EOfflineState"/>
          </parameter>
          <parameter name="is_replace" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </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="remove_all_locked" introspectable="0" throws="1">
        <source-position filename="src/libebackend/e-cache.h" line="355"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uids" transfer-ownership="none">
            <type name="GLib.SList" c:type="const GSList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </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="remove_locked" throws="1">
        <source-position filename="src/libebackend/e-cache.h" line="351"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uid" 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="revision_changed">
        <source-position filename="src/libebackend/e-cache.h" line="378"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="change_revision"
              c:identifier="e_cache_change_revision"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1068">Instructs the @cache to change its revision. In case the revision
change is frozen with e_cache_freeze_revision_change() it notes to
change the revision once the revision change is fully thaw.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="398"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1070">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="clear_offline_changes"
              c:identifier="e_cache_clear_offline_changes"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2463">Marks all objects as being fully synchronized with the server and
removes those which are marked as locally deleted.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="486"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2472">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2465">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2466">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="contains" c:identifier="e_cache_contains" version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1243">Checkes whether the @cache contains an object with
the given @uid.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="404"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1252">Whether the object had been found.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1245">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1246">a unique identifier of an object</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="deleted_flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1247">one of #ECacheDeletedFlag enum</doc>
            <type name="CacheDeletedFlag" c:type="ECacheDeletedFlag"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy_missing_to_column_values"
              c:identifier="e_cache_copy_missing_to_column_values"
              version="3.32">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2281">Adds every column value which is not part of the @other_columns to it,
except of E_CACHE_COLUMN_UID, E_CACHE_COLUMN_REVISION, E_CACHE_COLUMN_OBJECT
and E_CACHE_COLUMN_STATE columns.

This can be used within the callback of e_cache_foreach_update().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="466"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2283">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="ncols" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2284">count of columns, items in column_names and column_values</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="column_names" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2285">column names</doc>
            <array length="0" zero-terminated="0" c:type="const gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="column_values" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2286">column values</doc>
            <array length="0" zero-terminated="0" c:type="const gchar**">
              <type name="utf8"/>
            </array>
          </parameter>
          <parameter name="other_columns"
                     direction="inout"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2287">an #ECacheColumnValues to fill</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dup_key"
              c:identifier="e_cache_dup_key"
              version="3.26"
              throws="1">
        <source-position filename="src/libebackend/e-cache.h" line="495"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2530">a value of the @key. Free the returned string
   with g_free(), when no longer needed.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2526">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2527">a key name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dup_revision"
              c:identifier="e_cache_dup_revision"
              version="3.26">
        <source-position filename="src/libebackend/e-cache.h" line="395"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1032">A revision of the whole @cache. This is meant to be
   used by the descendants. Free the returned pointer with g_free(), when no
   longer needed.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1030">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="erase" c:identifier="e_cache_erase" version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1193">Erases the cache and all of its content from the disk.
The only valid operation after this is to free the @cache.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="403"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1195">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="foreach"
              c:identifier="e_cache_foreach"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1940">Calls @func for each found object, which satisfies the criteria
for both @deleted_flag and @where_clause.

Note the @func should not call any SQLite commands, because it's invoked
within a SELECT statement execution.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="452"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1956">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1942">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="deleted_flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1943">one of #ECacheDeletedFlag enum</doc>
            <type name="CacheDeletedFlag" c:type="ECacheDeletedFlag"/>
          </parameter>
          <parameter name="where_clause"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1944">an optional SQLite WHERE clause part, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1945">an #ECacheForeachFunc function to call for each object</doc>
            <type name="CacheForeachFunc" c:type="ECacheForeachFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1946">user data for the @func</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1947">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="foreach_update"
              c:identifier="e_cache_foreach_update"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2124">Calls @func for each found object, which satisfies the criteria for both
@deleted_flag and @where_clause, letting the caller update values where
necessary. The return value of @func is used to determine whether the call
was successful, not whether there are any changes to be saved. If anything
fails during the call then the all changes are reverted.

When there are requested any changes by the @func, this function also
calls e_cache_copy_missing_to_column_values() to ensure no descendant
column data is lost.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="459"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2144">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2126">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="deleted_flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2127">one of #ECacheDeletedFlag enum</doc>
            <type name="CacheDeletedFlag" c:type="ECacheDeletedFlag"/>
          </parameter>
          <parameter name="where_clause"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2128">an optional SQLite WHERE clause part, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2129">an #ECacheUpdateFunc function to call for each object</doc>
            <type name="CacheUpdateFunc" c:type="ECacheUpdateFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2130">user data for the @func</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2131">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="freeze_revision_change"
              c:identifier="e_cache_freeze_revision_change"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1116">Freezes automatic revision change for the @cache. The function
can be called multiple times, but each such call requires its
pair function e_cache_thaw_revision_change() call. See also
e_cache_change_revision().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="399"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1118">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get" c:identifier="e_cache_get" version="3.26" throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1376">Returns an object with the given @uid. This function does not consider locally
deleted objects. The @out_revision is set to the object revision, if not %NULL.
Free it with g_free() when no longer needed. Similarly the @out_other_columns
contains a column name to column value strings for additional columns which had
been requested when calling e_cache_initialize_sync(), if not %NULL.
Free the returned #ECacheColumnValues with e_cache_column_values_free(), when
no longer needed.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="407"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1395">An object with the given @uid. Free it
   with g_free(), when no longer needed. Returns %NULL on error, like when
   the object could not be found.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1378">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1379">a unique identifier of an object</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_revision"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1380">an out variable for a revision
   of the object, or %NULL to ignore</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="out_other_columns"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1382">an out
   variable for #ECacheColumnValues other columns, as defined when creating the @cache, or %NULL to ignore</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1384">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_count"
              c:identifier="e_cache_get_count"
              version="3.26"
              throws="1">
        <source-position filename="src/libebackend/e-cache.h" line="436"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1727">Count of objects stored in the @cache.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1722">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="deleted_flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1723">one of #ECacheDeletedFlag enum</doc>
            <type name="CacheDeletedFlag" c:type="ECacheDeletedFlag"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1724">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_filename"
              c:identifier="e_cache_get_filename"
              version="3.26">
        <source-position filename="src/libebackend/e-cache.h" line="391"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="966">a filename of the @cache, with which it had been initialized.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="964">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_key_int"
              c:identifier="e_cache_get_key_int"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2578">Reads the user @key value as an integer.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="502"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2586">The user @key value or -1 on error.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2580">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2581">a key name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_object_include_deleted"
              c:identifier="e_cache_get_object_include_deleted"
              version="3.30"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1415">The same as e_cache_get(), only considers also locally deleted objects.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="413"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1428">An object with the given @uid. Free it
   with g_free(), when no longer needed. Returns %NULL on error, like when
   the object could not be found.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1417">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1418">a unique identifier of an object</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_revision"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1419">an out variable for a revision
   of the object, or %NULL to ignore</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="out_other_columns"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1421">an out
   variable for #ECacheColumnValues other columns, as defined when creating the @cache, or %NULL to ignore</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1423">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_objects"
              c:identifier="e_cache_get_objects"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1833">Gets a list of objects stored in the @cache, optionally together with
their revisions. The uids are not returned in any particular order,
but the position between @out_objects and @out_revisions matches
the same object.

Both @out_objects and @out_revisions contain newly allocated #GSList, which
should be freed with g_slist_free_full (slist, g_free); when no longer needed.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="446"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1851">Whether succeeded. It doesn't necessarily mean that there was
   any object stored in the @cache.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1835">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="deleted_flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1836">one of #ECacheDeletedFlag enum</doc>
            <type name="CacheDeletedFlag" c:type="ECacheDeletedFlag"/>
          </parameter>
          <parameter name="out_objects"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1837">a pointer to #GSList to store the found objects to</doc>
            <type name="GLib.SList" c:type="GSList**">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="out_revisions"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1838">a pointer to #GSList to store
   the found revisions to, or %NULL</doc>
            <type name="GLib.SList" c:type="GSList**">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1840">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_offline_changes"
              c:identifier="e_cache_get_offline_changes"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2424">Gathers the list of all offline changes being done so far.
The returned #GSList contains #ECacheOfflineChange structure.
Use e_cache_clear_offline_changes() to clear all offline
changes at once.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="483"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2435">A newly allocated list of all
   offline changes. Free it with g_slist_free_full (slist, e_cache_offline_change_free);
   when no longer needed.</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="CacheOfflineChange"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2426">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2427">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_offline_state"
              c:identifier="e_cache_get_offline_state"
              version="3.26"
              throws="1">
        <source-position filename="src/libebackend/e-cache.h" line="474"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2330">Current offline state #EOfflineState for the given object.
   It returns %E_OFFLINE_STATE_UNKNOWN when the object could not be
   found or other error happened.</doc>
          <type name="OfflineState" c:type="EOfflineState"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2325">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2326">a unique identifier of an object</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2327">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_sqlitedb"
              c:identifier="e_cache_get_sqlitedb"
              version="3.26">
        <source-position filename="src/libebackend/e-cache.h" line="513"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2704">An SQLite3 database pointer. It is owned by the @cache.</doc>
          <type name="gpointer" c:type="gpointer"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2702">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_uids"
              c:identifier="e_cache_get_uids"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1789">Gets a list of unique object identifiers stored in the @cache, optionally
together with their revisions. The uids are not returned in any particular
order, but the position between @out_uids and @out_revisions matches
the same object.

Both @out_uids and @out_revisions contain newly allocated #GSList, which
should be freed with g_slist_free_full (slist, g_free); when no longer needed.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="440"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1807">Whether succeeded. It doesn't necessarily mean that there was
   any object stored in the @cache.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1791">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="deleted_flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1792">one of #ECacheDeletedFlag enum</doc>
            <type name="CacheDeletedFlag" c:type="ECacheDeletedFlag"/>
          </parameter>
          <parameter name="out_uids"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1793">a pointer to #GSList to store the found uid to</doc>
            <type name="GLib.SList" c:type="GSList**">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="out_revisions"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1794">a pointer to #GSList to store
   the found revisions to, or %NULL</doc>
            <type name="GLib.SList" c:type="GSList**">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1796">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_version"
              c:identifier="e_cache_get_version"
              version="3.26">
        <source-position filename="src/libebackend/e-cache.h" line="392"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="982">A cache data version. This is meant to be used by the descendants.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="980">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="initialize_sync"
              c:identifier="e_cache_initialize_sync"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="906">Initializes the @cache and opens the @filename database.
This should be called by the descendant.

The @other_columns are added to the objects table (@E_CACHE_TABLE_OBJECTS).
Values for these columns are returned by e_cache_get()
and can be stored with e_cache_put().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="386"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="922">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="908">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="909">a filename of an SQLite database to use</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="other_columns"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="910">an optional
   #GSList with additional columns to add to the objects table</doc>
            <type name="GLib.SList" c:type="const GSList*">
              <type name="CacheColumnInfo"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="912">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_revision_change_frozen"
              c:identifier="e_cache_is_revision_change_frozen"
              version="3.26">
        <source-position filename="src/libebackend/e-cache.h" line="401"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1174">Whether automatic revision change for the @cache
   is currently frozen.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1172">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="lock" c:identifier="e_cache_lock" version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2610">Locks the @cache thus other threads cannot use it.
This can be called recursively within one thread.
Each call should have its pair e_cache_unlock().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="507"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2612">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="lock_type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2613">an #ECacheLockType</doc>
            <type name="CacheLockType" c:type="ECacheLockType"/>
          </parameter>
        </parameters>
      </method>
      <method name="put" c:identifier="e_cache_put" version="3.26" throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1496">Stores an object into the cache. Depending on @offline_flag, this update
the object's offline state accordingly. When the @offline_flag is set
to %E_CACHE_IS_ONLINE, then it's set to #E_OFFLINE_STATE_SYNCED, like
to be fully synchronized with the server, regardless of its previous
offline state. Overwriting locally deleted object behaves like an addition
of a completely new object.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="420"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1514">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1498">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1499">a unique identifier of an object</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="revision"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1500">a revision of the object</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="object" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1501">the object itself</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="other_columns"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1502">an #ECacheColumnValues with other columns to set; can be %NULL</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </parameter>
          <parameter name="offline_flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1503">one of #ECacheOfflineFlag, whether putting this object in offline</doc>
            <type name="CacheOfflineFlag" c:type="ECacheOfflineFlag"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1504">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove"
              c:identifier="e_cache_remove"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1566">Removes the object with the given @uid from the @cache. Based on the @offline_flag,
it can remove also any information about locally made offline changes. Removing
the object with %E_CACHE_IS_OFFLINE will still remember it for later use
with e_cache_get_offline_changes().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="428"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1579">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1568">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1569">a unique identifier of an object</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="offline_flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1570">one of #ECacheOfflineFlag, whether removing the object in offline</doc>
            <type name="CacheOfflineFlag" c:type="ECacheOfflineFlag"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1571">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_all"
              c:identifier="e_cache_remove_all"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1634">Removes all objects from the @cache in one call.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="433"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="1642">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1636">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1637">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_key"
              c:identifier="e_cache_set_key"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2499">Sets a @value of the user @key, or deletes it, if the @value is %NULL.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="491"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2508">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2501">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2502">a key name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2503">a value to set, or %NULL to delete the key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_key_int"
              c:identifier="e_cache_set_key_int"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2546">Sets an integer @value for the user @key.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="498"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2555">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2548">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2549">a key name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2550">an integer value to set</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_offline_state"
              c:identifier="e_cache_set_offline_state"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2364">Sets an offline @state for the object identified by @uid.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="478"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2374">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2366">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2367">a unique identifier of an object</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2368">an #EOfflineState to set</doc>
            <type name="OfflineState" c:type="EOfflineState"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2369">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_revision"
              c:identifier="e_cache_set_revision"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1046">Sets the @revision of the whole @cache. This is not meant to be
used by the descendants, because the revision is updated automatically
when needed. The descendants can listen to "revision-changed" signal.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="396"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1048">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="revision"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1049">a revision to set; use %NULL to unset it</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_version"
              c:identifier="e_cache_set_version"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1004">Sets a cache data version. This is meant to be used by the descendants.
The @version should be greater than zero.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="393"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1006">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="version" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1007">a cache data version to set</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="sqlite_exec"
              c:identifier="e_cache_sqlite_exec"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2716">Executes an SQLite statement. Use e_cache_sqlite_select() for
SELECT statements.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="514"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2726">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2718">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="sql_stmt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2719">an SQLite statement to execute</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2720">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="sqlite_maybe_vacuum"
              c:identifier="e_cache_sqlite_maybe_vacuum"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2848">Runs vacuum (compacts the database file), if needed.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="524"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2856">Whether succeeded. It doesn't mean that the vacuum had been run,
   only that no error happened during the call.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2850">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2851">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="sqlite_select"
              c:identifier="e_cache_sqlite_select"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2741">Executes a SELECT statement @sql_stmt and calls @func for each row of the result.
Use e_cache_sqlite_exec() for statements which do not return row sets.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="518"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="2753">Whether succeeded.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2743">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="sql_stmt" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2744">an SQLite SELECT statement to execute</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="func"
                     transfer-ownership="none"
                     scope="call"
                     closure="2">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2745">an #ECacheSelectFunc function to call for each row</doc>
            <type name="CacheSelectFunc" c:type="ECacheSelectFunc"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2746">user data for @func</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2747">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="thaw_revision_change"
              c:identifier="e_cache_thaw_revision_change"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="1140">Thaws automatic revision change for the @cache. It's the pair
function of e_cache_freeze_revision_change().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="400"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="1142">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="unlock" c:identifier="e_cache_unlock" version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="2664">Unlocks the cache which was previouly locked with e_cache_lock().
The cache locked with #E_CACHE_LOCK_WRITE should use either
@action #E_CACHE_UNLOCK_COMMIT or #E_CACHE_UNLOCK_ROLLBACK,
while the #E_CACHE_LOCK_READ should use #E_CACHE_UNLOCK_NONE @action.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="509"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2666">an #ECache</doc>
            <type name="Cache" c:type="ECache*"/>
          </instance-parameter>
          <parameter name="action" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="2667">an #ECacheUnlockAction</doc>
            <type name="CacheUnlockAction" c:type="ECacheUnlockAction"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="CachePrivate" c:type="ECachePrivate*"/>
      </field>
      <glib:signal name="before-put" when="last">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </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>
          <parameter name="p1" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="p2" transfer-ownership="none">
            <type name="CacheColumnValues"/>
          </parameter>
          <parameter name="p3" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="p4"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable"/>
          </parameter>
          <parameter name="p5"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="before-remove" when="last">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="p0"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable"/>
          </parameter>
          <parameter name="p1"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="revision-changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="CacheClass"
            c:type="ECacheClass"
            glib:is-gtype-struct-for="Cache">
      <source-position filename="src/libebackend/e-cache.h" line="382"/>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="put_locked">
        <callback name="put_locked" throws="1">
          <source-position filename="src/libebackend/e-cache.h" line="342"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="cache" transfer-ownership="none">
              <type name="Cache" c:type="ECache*"/>
            </parameter>
            <parameter name="uid" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="revision" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="object" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="other_columns" transfer-ownership="none">
              <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
            </parameter>
            <parameter name="offline_state" transfer-ownership="none">
              <type name="OfflineState" c:type="EOfflineState"/>
            </parameter>
            <parameter name="is_replace" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </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="remove_locked">
        <callback name="remove_locked" throws="1">
          <source-position filename="src/libebackend/e-cache.h" line="351"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="cache" transfer-ownership="none">
              <type name="Cache" c:type="ECache*"/>
            </parameter>
            <parameter name="uid" 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="remove_all_locked" introspectable="0">
        <callback name="remove_all_locked" introspectable="0" throws="1">
          <source-position filename="src/libebackend/e-cache.h" line="355"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="cache" transfer-ownership="none">
              <type name="Cache" c:type="ECache*"/>
            </parameter>
            <parameter name="uids" transfer-ownership="none">
              <type name="GLib.SList" c:type="const GSList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </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="clear_offline_changes_locked">
        <callback name="clear_offline_changes_locked" throws="1">
          <source-position filename="src/libebackend/e-cache.h" line="359"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="cache" transfer-ownership="none">
              <type name="Cache" c:type="ECache*"/>
            </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="erase">
        <callback name="erase">
          <source-position filename="src/libebackend/e-cache.h" line="363"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="cache" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-cache.c"
                   line="1195">an #ECache</doc>
              <type name="Cache" c:type="ECache*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="before_put">
        <callback name="before_put" throws="1">
          <source-position filename="src/libebackend/e-cache.h" line="366"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="cache" transfer-ownership="none">
              <type name="Cache" c:type="ECache*"/>
            </parameter>
            <parameter name="uid" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="revision" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="object" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="other_columns" transfer-ownership="none">
              <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
            </parameter>
            <parameter name="is_replace" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </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="before_remove">
        <callback name="before_remove" throws="1">
          <source-position filename="src/libebackend/e-cache.h" line="374"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="cache" transfer-ownership="none">
              <type name="Cache" c:type="ECache*"/>
            </parameter>
            <parameter name="uid" 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="revision_changed">
        <callback name="revision_changed">
          <source-position filename="src/libebackend/e-cache.h" line="378"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="cache" transfer-ownership="none">
              <type name="Cache" c:type="ECache*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="10">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="CacheColumnInfo"
            c:type="ECacheColumnInfo"
            glib:type-name="ECacheColumnInfo"
            glib:get-type="e_cache_column_info_get_type"
            c:symbol-prefix="cache_column_info">
      <source-position filename="src/libebackend/e-cache.h" line="160"/>
      <field name="name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="type" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="index_name" writable="1">
        <type name="utf8" c:type="gchar*"/>
      </field>
      <constructor name="new"
                   c:identifier="e_cache_column_info_new"
                   version="3.26">
        <source-position filename="src/libebackend/e-cache.h" line="165"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="443">A new #ECacheColumnInfo. Free it with
   e_cache_column_info_free() when no longer needed.</doc>
          <type name="CacheColumnInfo" c:type="ECacheColumnInfo*"/>
        </return-value>
        <parameters>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="439">a column name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="440">a column type</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="index_name"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="441">an index name for this column, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy"
              c:identifier="e_cache_column_info_copy"
              version="3.26">
        <source-position filename="src/libebackend/e-cache.h" line="169"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="470">Copy of the given @info. Free it with
   e_cache_column_info_free() when no longer needed.
   If the @info is %NULL, then returns %NULL as well.</doc>
          <type name="CacheColumnInfo" c:type="ECacheColumnInfo*"/>
        </return-value>
        <parameters>
          <instance-parameter name="info"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="468">a source #ECacheColumnInfo to copy, or %NULL</doc>
            <type name="CacheColumnInfo" c:type="const ECacheColumnInfo*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="free"
                c:identifier="e_cache_column_info_free"
                version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="485">Frees the @info structure, previously allocated with e_cache_column_info_new()
or e_cache_column_info_copy().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="170"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="info"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="487">an #ECacheColumnInfo</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <record name="CacheColumnValues"
            c:type="ECacheColumnValues"
            glib:type-name="ECacheColumnValues"
            glib:get-type="e_cache_column_values_get_type"
            c:symbol-prefix="cache_column_values">
      <source-position filename="src/libebackend/e-cache.h" line="97"/>
      <constructor name="new"
                   c:identifier="e_cache_column_values_new"
                   version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="92">Creates a new #ECacheColumnValues to store values for additional columns.
The column names are compared case insensitively.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="102"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="98">a new #ECacheColumnValues. Free with e_cache_column_values_free(),
   when no longer needed.</doc>
          <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
        </return-value>
      </constructor>
      <method name="contains"
              c:identifier="e_cache_column_values_contains"
              version="3.26">
        <source-position filename="src/libebackend/e-cache.h" line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="234">Whether @other_columns contains column named @name.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="other_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="231">an #ECacheColumnValues</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="232">a column name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="copy"
              c:identifier="e_cache_column_values_copy"
              version="3.26">
        <source-position filename="src/libebackend/e-cache.h" line="104"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="113">Copy of the @other_columns. Free with
   e_cache_column_values_free(), when no longer needed.</doc>
          <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
        </return-value>
        <parameters>
          <instance-parameter name="other_columns"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="111">an #ECacheColumnValues</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="free"
              c:identifier="e_cache_column_values_free"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="138">Frees previously allocated @other_columns with
e_cache_column_values_new() or e_cache_column_values_copy().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="105"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="other_columns"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="140">an #ECacheColumnValues</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_size"
              c:identifier="e_cache_column_values_get_size"
              version="3.26">
        <source-position filename="src/libebackend/e-cache.h" line="122"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="325">How many columns are stored in the @other_columns.</doc>
          <type name="guint" c:type="guint"/>
        </return-value>
        <parameters>
          <instance-parameter name="other_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="323">an #ECacheColumnValues</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="init_iter"
              c:identifier="e_cache_column_values_init_iter"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="339">Initialized the @iter, thus the @other_columns can be traversed
with g_hash_table_iter_next(). The key is a column name and
the value is the corresponding column value.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="123"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="other_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="341">an #ECacheColumnValues</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </instance-parameter>
          <parameter name="iter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="342">a #GHashTableIter</doc>
            <type name="GLib.HashTableIter" c:type="GHashTableIter*"/>
          </parameter>
        </parameters>
      </method>
      <method name="lookup"
              c:identifier="e_cache_column_values_lookup"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="291">Looks up currently stored value for the column named @name.
As the values can be %NULL one cannot distinguish between
a column which doesn't have stored any value and a column
which has stored %NULL value. Use e_cache_column_values_contains()
to check whether such column exitst in the @other_columns.
The returned pointer is owned by @other_columns and is valid until
the value is overwritten of the @other_columns freed.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="120"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="304">Stored value for the column named @name, or %NULL, if
   no such column values is stored.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="other_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="293">an #ECacheColumnValues</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="294">a column name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="put"
              c:identifier="e_cache_column_values_put"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="154">Puts the @value for column @name. If contains a value for the same
column, then it is replaced. This creates a copy of both @name
and @value.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="106"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="other_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="156">an #ECacheColumnValues</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="157">a column name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="158">a column value</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove"
              c:identifier="e_cache_column_values_remove"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="250">Removes value for the column named @name from @other_columns.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="117"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="257">Whether such column existed and had been removed.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="other_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="252">an #ECacheColumnValues</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="253">a column name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_all"
              c:identifier="e_cache_column_values_remove_all"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="273">Removes all values from the @other_columns, leaving it empty.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="119"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="other_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="275">an #ECacheColumnValues</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="take"
              c:identifier="e_cache_column_values_take"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="204">Puts the @value for column @name. If contains a value for the same
column, then it is replaced. This creates takes ownership of both
the @name and the @value.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="112"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="other_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="206">an #ECacheColumnValues</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="207">a column name</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="208">a column value</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="take_value"
              c:identifier="e_cache_column_values_take_value"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="179">Puts the @value for column @name. If contains a value for the same
column, then it is replaced. This creates a copy of the @name, but
takes owner ship of the @value.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="109"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="other_columns" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="181">an #ECacheColumnValues</doc>
            <type name="CacheColumnValues" c:type="ECacheColumnValues*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="182">a column name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value"
                     transfer-ownership="full"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="183">a column value</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </method>
    </record>
    <enumeration name="CacheDeletedFlag"
                 version="3.26"
                 c:type="ECacheDeletedFlag">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.h"
           line="202">Declares whether to exclude or include locally deleted objects.</doc>
      <source-position filename="src/libebackend/e-cache.h" line="214"/>
      <member name="exclude_deleted"
              value="0"
              c:identifier="E_CACHE_EXCLUDE_DELETED">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="204">Do not include locally deleted objects</doc>
      </member>
      <member name="include_deleted"
              value="1"
              c:identifier="E_CACHE_INCLUDE_DELETED">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="205">Include locally deleted objects</doc>
      </member>
    </enumeration>
    <enumeration name="CacheError" version="3.26" c:type="ECacheError">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.h"
           line="69">Defines the types of possible errors reported by the #ECache</doc>
      <source-position filename="src/libebackend/e-cache.h" line="95"/>
      <member name="engine" value="0" c:identifier="E_CACHE_ERROR_ENGINE">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="71">An error was reported from the SQLite engine</doc>
      </member>
      <member name="constraint"
              value="1"
              c:identifier="E_CACHE_ERROR_CONSTRAINT">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="72">The error occurred due to an explicit constraint, like
   when attempting to add two objects with the same UID.</doc>
      </member>
      <member name="not_found"
              value="2"
              c:identifier="E_CACHE_ERROR_NOT_FOUND">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="74">An object was not found by UID (this is
   different from a query that returns no results, which is not an error).</doc>
      </member>
      <member name="invalid_query"
              value="3"
              c:identifier="E_CACHE_ERROR_INVALID_QUERY">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="76">A query was invalid.</doc>
      </member>
      <member name="unsupported_field"
              value="4"
              c:identifier="E_CACHE_ERROR_UNSUPPORTED_FIELD">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="77">A field requested for inclusion in summary is not supported.</doc>
      </member>
      <member name="unsupported_query"
              value="5"
              c:identifier="E_CACHE_ERROR_UNSUPPORTED_QUERY">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="78">A query was not supported.</doc>
      </member>
      <member name="end_of_list"
              value="6"
              c:identifier="E_CACHE_ERROR_END_OF_LIST">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="79">An attempt was made to fetch results past the end of a the list.</doc>
      </member>
      <member name="load" value="7" c:identifier="E_CACHE_ERROR_LOAD">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="80">An error occured while loading or creating the database.</doc>
      </member>
    </enumeration>
    <callback name="CacheForeachFunc"
              c:type="ECacheForeachFunc"
              version="3.26">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.h"
           line="237">A callback called for each object row when using e_cache_foreach() function.</doc>
      <source-position filename="src/libebackend/e-cache.h" line="255"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="251">%TRUE to continue, %FALSE to stop walk through.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="cache" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="239">an #ECache</doc>
          <type name="Cache" c:type="ECache*"/>
        </parameter>
        <parameter name="uid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="240">a unique object identifier</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="revision" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="241">the object revision</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="object" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="242">the object itself</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="offline_state" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="243">objects offline state, one of #EOfflineState</doc>
          <type name="OfflineState" c:type="EOfflineState"/>
        </parameter>
        <parameter name="ncols" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="244">count of columns, items in column_names and column_values</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="column_names" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="245">column names</doc>
          <array length="5" zero-terminated="0" c:type="const gchar**">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="column_values" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="246">column values</doc>
          <array length="5" zero-terminated="0" c:type="const gchar**">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="8">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="247">user data, as used in e_cache_foreach()</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="CacheLockType" version="3.26" c:type="ECacheLockType">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.h"
           line="172">Indicates the type of lock requested in e_cache_lock().</doc>
      <source-position filename="src/libebackend/e-cache.h" line="184"/>
      <member name="read" value="0" c:identifier="E_CACHE_LOCK_READ">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="174">Obtain a lock for reading.</doc>
      </member>
      <member name="write" value="1" c:identifier="E_CACHE_LOCK_WRITE">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="175">Obtain a lock for writing. This also starts a transaction.</doc>
      </member>
    </enumeration>
    <record name="CacheOfflineChange"
            c:type="ECacheOfflineChange"
            version="3.26"
            glib:type-name="ECacheOfflineChange"
            glib:get-type="e_cache_offline_change_get_type"
            c:symbol-prefix="cache_offline_change">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.h"
           line="126">Holds the information about offline change for one object.</doc>
      <source-position filename="src/libebackend/e-cache.h" line="142"/>
      <field name="uid" writable="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="128">UID of the object</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="revision" writable="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="129">stored revision of the object</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="object" writable="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="130">the object itself</doc>
        <type name="utf8" c:type="gchar*"/>
      </field>
      <field name="state" writable="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="131">an #EOfflineState of the object</doc>
        <type name="OfflineState" c:type="EOfflineState"/>
      </field>
      <constructor name="new"
                   c:identifier="e_cache_offline_change_new"
                   version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="362">Creates a new #ECacheOfflineChange with the offline @state
information for the given @uid.</doc>
        <source-position filename="src/libebackend/e-cache.h" line="148"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="372">A new #ECacheOfflineChange. Free it with
   e_cache_offline_change_free() when no longer needed.</doc>
          <type name="CacheOfflineChange" c:type="ECacheOfflineChange*"/>
        </return-value>
        <parameters>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="364">a unique object identifier</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="revision"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="365">a revision of the object</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="object"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="366">object itself</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="state" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="367">an #EOfflineState</doc>
            <type name="OfflineState" c:type="EOfflineState"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="copy"
              c:identifier="e_cache_offline_change_copy"
              version="3.26">
        <source-position filename="src/libebackend/e-cache.h" line="153"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="400">Copy of the given @change. Free it with
   e_cache_offline_change_free() when no longer needed.
   If the @change is %NULL, then returns %NULL as well.</doc>
          <type name="CacheOfflineChange" c:type="ECacheOfflineChange*"/>
        </return-value>
        <parameters>
          <instance-parameter name="change"
                              transfer-ownership="none"
                              nullable="1"
                              allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="398">a source #ECacheOfflineChange to copy, or %NULL</doc>
            <type name="CacheOfflineChange"
                  c:type="const ECacheOfflineChange*"/>
          </instance-parameter>
        </parameters>
      </method>
      <function name="free"
                c:identifier="e_cache_offline_change_free"
                version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.c"
             line="415">Frees the @change structure, previously allocated with e_cache_offline_change_new()
or e_cache_offline_change_copy().</doc>
        <source-position filename="src/libebackend/e-cache.h" line="154"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="change"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache.c"
                 line="417">an #ECacheOfflineChange</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
    </record>
    <enumeration name="CacheOfflineFlag"
                 version="3.26"
                 c:type="ECacheOfflineFlag">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.h"
           line="216">Declares whether the operation is done in online or offline.
This influences the offline state of the related objects.</doc>
      <source-position filename="src/libebackend/e-cache.h" line="231"/>
      <member name="offline_unknown"
              value="-1"
              c:identifier="E_CACHE_OFFLINE_UNKNOWN">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="218">Do not know current online/offline state</doc>
      </member>
      <member name="is_online" value="0" c:identifier="E_CACHE_IS_ONLINE">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="219">The operation is done in online</doc>
      </member>
      <member name="is_offline" value="1" c:identifier="E_CACHE_IS_OFFLINE">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="220">The operation is done in offline</doc>
      </member>
    </enumeration>
    <record name="CachePrivate" c:type="ECachePrivate" disguised="1">
      <source-position filename="src/libebackend/e-cache.h" line="235"/>
    </record>
    <class name="CacheReaper"
           c:symbol-prefix="cache_reaper"
           c:type="ECacheReaper"
           parent="EDataServer.Extension"
           glib:type-name="ECacheReaper"
           glib:get-type="e_cache_reaper_get_type"
           glib:type-struct="CacheReaperClass">
      <source-position filename="src/libebackend/e-cache-reaper.h" line="36"/>
      <implements name="EDataServer.Extensible"/>
      <function name="type_register"
                c:identifier="e_cache_reaper_type_register">
        <source-position filename="src/libebackend/e-cache-reaper.h"
                         line="38"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="type_module" transfer-ownership="none">
            <type name="GObject.TypeModule" c:type="GTypeModule*"/>
          </parameter>
        </parameters>
      </function>
      <method name="add_private_directory"
              c:identifier="e_cache_reaper_add_private_directory">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache-reaper.c"
             line="677">Let's the @cache_reaper know about a private directory named @name,
thus it won't delete it from cache or data directories. The @name
is just a directory name, not a path.

Since 3.18</doc>
        <source-position filename="src/libebackend/e-cache-reaper.h"
                         line="42"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache_reaper" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache-reaper.c"
                 line="679">an #ECacheReaper</doc>
            <type name="CacheReaper" c:type="ECacheReaper*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache-reaper.c"
                 line="680">directory name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_private_directory"
              c:identifier="e_cache_reaper_remove_private_directory">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache-reaper.c"
             line="703">Remove private directory named @name from the list of private
directories in the @cache_reaper, previously added with
e_cache_reaper_add_private_directory().

Since 3.18</doc>
        <source-position filename="src/libebackend/e-cache-reaper.h"
                         line="44"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache_reaper" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache-reaper.c"
                 line="705">an #ECacheReaper</doc>
            <type name="CacheReaper" c:type="ECacheReaper*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-cache-reaper.c"
                 line="706">directory name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
    </class>
    <record name="CacheReaperClass"
            c:type="ECacheReaperClass"
            disguised="1"
            glib:is-gtype-struct-for="CacheReaper">
      <source-position filename="src/libebackend/e-cache-reaper.h" line="36"/>
    </record>
    <callback name="CacheSelectFunc" c:type="ECacheSelectFunc" version="3.26">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.h"
           line="302">A callback called for each row of a SELECT statement executed
with e_cache_sqlite_select() function.</doc>
      <source-position filename="src/libebackend/e-cache.h" line="317"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="313">%TRUE to continue, %FALSE to stop walk through.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="cache" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="304">an #ECache</doc>
          <type name="Cache" c:type="ECache*"/>
        </parameter>
        <parameter name="ncols" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="305">count of columns, items in column_names and column_values</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="column_names" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="306">column names</doc>
          <array length="1" zero-terminated="0" c:type="const gchar**">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="column_values" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="307">column values</doc>
          <array length="1" zero-terminated="0" c:type="const gchar**">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="4">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="308">user data, as used in e_cache_sqlite_select()</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <enumeration name="CacheUnlockAction"
                 version="3.26"
                 c:type="ECacheUnlockAction">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.h"
           line="186">Indicates what type of action to take while unlocking the cache with e_cache_unlock().</doc>
      <source-position filename="src/libebackend/e-cache.h" line="200"/>
      <member name="none" value="0" c:identifier="E_CACHE_UNLOCK_NONE">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="188">Just unlock, this is appropriate for locks which were obtained with %E_CACHE_LOCK_READ.</doc>
      </member>
      <member name="commit" value="1" c:identifier="E_CACHE_UNLOCK_COMMIT">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="189">Commit any modifications which were made while the lock was held.</doc>
      </member>
      <member name="rollback" value="2" c:identifier="E_CACHE_UNLOCK_ROLLBACK">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="190">Rollback any modifications which were made while the lock was held.</doc>
      </member>
    </enumeration>
    <callback name="CacheUpdateFunc" c:type="ECacheUpdateFunc" version="3.26">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.h"
           line="265">A callback called for each object row when using e_cache_foreach_update() function.
When all out parameters are left untouched, then the row is not changed.</doc>
      <source-position filename="src/libebackend/e-cache.h" line="288"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/libebackend/e-cache.h"
             line="284">%TRUE to continue, %FALSE to stop walk through.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="cache" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="267">an #ECache</doc>
          <type name="Cache" c:type="ECache*"/>
        </parameter>
        <parameter name="uid" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="268">a unique object identifier</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="revision" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="269">the object revision</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="object" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="270">the object itself</doc>
          <type name="utf8" c:type="const gchar*"/>
        </parameter>
        <parameter name="offline_state" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="271">objects offline state, one of #EOfflineState</doc>
          <type name="OfflineState" c:type="EOfflineState"/>
        </parameter>
        <parameter name="ncols" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="272">count of columns, items in column_names and column_values</doc>
          <type name="gint" c:type="gint"/>
        </parameter>
        <parameter name="column_names" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="273">column names</doc>
          <array length="5" zero-terminated="0" c:type="const gchar**">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="column_values" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="274">column values</doc>
          <array length="5" zero-terminated="0" c:type="const gchar**">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="out_revision"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="275">the new object revision to set; keep it untouched to not change</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
        <parameter name="out_object"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="276">the new object to set; keep it untouched to not change</doc>
          <type name="utf8" c:type="gchar**"/>
        </parameter>
        <parameter name="out_offline_state"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="277">the offline state to set; the default is the same as @offline_state</doc>
          <type name="OfflineState" c:type="EOfflineState*"/>
        </parameter>
        <parameter name="out_other_columns"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="278">an #ECacheColumnValues with other columns to set; keep it untouched to not change any</doc>
          <type name="CacheColumnValues" c:type="ECacheColumnValues**"/>
        </parameter>
        <parameter name="user_data"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1"
                   closure="12">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.h"
               line="279">user data, as used in e_cache_foreach_update()</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </callback>
    <class name="CollectionBackend"
           c:symbol-prefix="collection_backend"
           c:type="ECollectionBackend"
           version="3.6"
           parent="Backend"
           glib:type-name="ECollectionBackend"
           glib:get-type="e_collection_backend_get_type"
           glib:type-struct="CollectionBackendClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-collection-backend.h"
           line="55">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-collection-backend.h"
                       line="114"/>
      <virtual-method name="child_added">
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="79"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="child_source" transfer-ownership="none">
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="child_removed">
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="81"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="child_source" transfer-ownership="none">
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="create_resource"
                      invoker="create_resource"
                      version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1747">Asynchronously creates a server-side resource described by @source.
For example, if @source describes a new calendar, an equivalent calendar
is created on the server.

It is the implementor's responsibility to examine @source and determine
what the equivalent server-side resource would be.  If this cannot be
determined without ambiguity, the function must return an error.

After the server-side resource is successfully created, the implementor
must also add an #ESource to @backend's #ECollectionBackend:server.  This
can either be done immediately or in response to some "resource created"
notification from the server.  The added #ESource can be @source itself
or a different #ESource instance that describes the new resource.

When the operation is finished, @callback will be called.  You can then
call e_collection_backend_create_resource_finish() to get the result of
the operation.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="89"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1749">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1750">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1751">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"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1752">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"
                     nullable="1"
                     allow-none="1"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1753">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="create_resource_finish"
                      invoker="create_resource_finish"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1795">Finishes the operation started with e_collection_backend_create_resource().

If an error occurred, the function will set @error and return %FALSE.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1805">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1797">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1798">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="create_resource_sync"
                      invoker="create_resource_sync"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1701">Creates a server-side resource described by @source.  For example, if
@source describes a new calendar, an equivalent calendar is created on
the server.

It is the implementor's responsibility to examine @source and determine
what the equivalent server-side resource would be.  If this cannot be
determined without ambiguity, the function must return an error.

After the server-side resource is successfully created, the implementor
must also add an #ESource to @backend's #ECollectionBackend:server.  This
can either be done immediately or in response to some "resource created"
notification from the server.  The added #ESource can be @source itself
or a different #ESource instance that describes the new resource.

If an error occurs, the function will set @error and return %FALSE.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1724">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1703">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1704">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1705">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="delete_resource"
                      invoker="delete_resource"
                      version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1866">Asynchronously deletes a server-side resource described by @source.
The @source must be a child of @backend's collection #EBackend:source.

After the server-side resource is successfully deleted, the implementor
must also remove @source from the @backend's #ECollectionBackend:server.
This can either be done immediately or in response to some "resource
deleted" notification from the server.

When the operation is finished, @callback will be called.  You can then
call e_collection_backend_delete_resource_finish() to get the result of
the operation.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="102"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1868">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1869">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1870">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"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1871">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"
                     nullable="1"
                     allow-none="1"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1872">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="delete_resource_finish"
                      invoker="delete_resource_finish"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1908">Finishes the operation started with e_collection_backend_delete_resource().

If an error occurred, the function will set @error and return %FALSE.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="107"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1918">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1910">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1911">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="delete_resource_sync"
                      invoker="delete_resource_sync"
                      version="3.6"
                      throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1826">Deletes a server-side resource described by @source.  The @source must
be a child of @backend's collection #EBackend:source.

After the server-side resource is successfully deleted, the implementor
must also remove @source from the @backend's #ECollectionBackend:server.
This can either be done immediately or in response to some "resource
deleted" notification from the server.

If an error occurs, the function will set @error and return %FALSE.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="98"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1843">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1828">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1829">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1830">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="dup_resource_id"
                      invoker="dup_resource_id"
                      version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1470">Extracts the resource ID for @child_source, which is supposed to be a
stable and unique server-assigned identifier for the remote resource
described by @child_source.  If @child_source is not actually a child
of the collection #EBackend:source owned by @backend, the function
returns %NULL.

The returned string should be freed with g_free() when no longer needed.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="75"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1483">a newly-allocated resource ID for @child_source, or %NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1472">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="child_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1473">an #ESource managed by @backend</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="populate">
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="74"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="authenticate_children"
              c:identifier="e_collection_backend_authenticate_children"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1960">Authenticates all enabled children sources with the given @crendetials.
This is usually called when the collection source successfully used
the @credentials to connect to the (possibly) remote data store, to
open the childern too. Already connected child sources are skipped.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="170"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1962">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="credentials" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1963">credentials to authenticate with</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
        </parameters>
      </method>
      <method name="claim_all_resources"
              c:identifier="e_collection_backend_claim_all_resources"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1523">Claims all previously used sources that have not yet been claimed by
e_collection_backend_new_child() and returns them in a #GList.  Note
that previously used sources can only be claimed once, so subsequent
calls to this function for @backend will return %NULL.

The @backend is then expected to compare the returned list with a
current list of resources from a remote server, create new #ESource
instances as needed with e_collection_backend_new_child(), discard
unneeded #ESource instances with e_source_remove(), and export the
remaining instances with e_source_registry_server_add_source().

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 #GList 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>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="132"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1548">a list of previously used sources</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="EDataServer.Source"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1525">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="create_resource"
              c:identifier="e_collection_backend_create_resource"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1747">Asynchronously creates a server-side resource described by @source.
For example, if @source describes a new calendar, an equivalent calendar
is created on the server.

It is the implementor's responsibility to examine @source and determine
what the equivalent server-side resource would be.  If this cannot be
determined without ambiguity, the function must return an error.

After the server-side resource is successfully created, the implementor
must also add an #ESource to @backend's #ECollectionBackend:server.  This
can either be done immediately or in response to some "resource created"
notification from the server.  The added #ESource can be @source itself
or a different #ESource instance that describes the new resource.

When the operation is finished, @callback will be called.  You can then
call e_collection_backend_create_resource_finish() to get the result of
the operation.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="145"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1749">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1750">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1751">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"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1752">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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1753">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_resource_finish"
              c:identifier="e_collection_backend_create_resource_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1795">Finishes the operation started with e_collection_backend_create_resource().

If an error occurred, the function will set @error and return %FALSE.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="151"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1805">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1797">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1798">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="create_resource_sync"
              c:identifier="e_collection_backend_create_resource_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1701">Creates a server-side resource described by @source.  For example, if
@source describes a new calendar, an equivalent calendar is created on
the server.

It is the implementor's responsibility to examine @source and determine
what the equivalent server-side resource would be.  If this cannot be
determined without ambiguity, the function must return an error.

After the server-side resource is successfully created, the implementor
must also add an #ESource to @backend's #ECollectionBackend:server.  This
can either be done immediately or in response to some "resource created"
notification from the server.  The added #ESource can be @source itself
or a different #ESource instance that describes the new resource.

If an error occurs, the function will set @error and return %FALSE.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1724">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1703">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1704">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1705">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_resource"
              c:identifier="e_collection_backend_delete_resource"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1866">Asynchronously deletes a server-side resource described by @source.
The @source must be a child of @backend's collection #EBackend:source.

After the server-side resource is successfully deleted, the implementor
must also remove @source from the @backend's #ECollectionBackend:server.
This can either be done immediately or in response to some "resource
deleted" notification from the server.

When the operation is finished, @callback will be called.  You can then
call e_collection_backend_delete_resource_finish() to get the result of
the operation.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="160"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1868">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1869">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1870">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"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1871">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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1872">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_resource_finish"
              c:identifier="e_collection_backend_delete_resource_finish"
              version="3.6"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1908">Finishes the operation started with e_collection_backend_delete_resource().

If an error occurred, the function will set @error and return %FALSE.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="166"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1918">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1910">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1911">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_resource_sync"
              c:identifier="e_collection_backend_delete_resource_sync"
              version="3.6"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1826">Deletes a server-side resource described by @source.  The @source must
be a child of @backend's collection #EBackend:source.

After the server-side resource is successfully deleted, the implementor
must also remove @source from the @backend's #ECollectionBackend:server.
This can either be done immediately or in response to some "resource
deleted" notification from the server.

If an error occurs, the function will set @error and return %FALSE.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="155"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1843">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1828">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1829">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1830">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="dup_resource_id"
              c:identifier="e_collection_backend_dup_resource_id"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1470">Extracts the resource ID for @child_source, which is supposed to be a
stable and unique server-assigned identifier for the remote resource
described by @child_source.  If @child_source is not actually a child
of the collection #EBackend:source owned by @backend, the function
returns %NULL.

The returned string should be freed with g_free() when no longer needed.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="129"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1483">a newly-allocated resource ID for @child_source, or %NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1472">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="child_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1473">an #ESource managed by @backend</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="freeze_populate"
              c:identifier="e_collection_backend_freeze_populate"
              version="3.38">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="2046">Freezes populate of the backend's content. This is used to avoid calling
populate multiple times in parallel.
Every call to this function should be followed by the call
of e_collection_backend_thaw_populate() to reverse the effect of this function,
regardless of the return value of this function.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="177"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="2056">%TRUE, when this is the first freeze call</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="2048">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_cache_dir"
              c:identifier="e_collection_backend_get_cache_dir"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1448">Returns the private cache directory path for @backend, which is named
after the #ESource:uid of @backend's collection #EBackend:source.

The cache directory is meant to store key files for backend-created
data sources.  See also: e_server_side_source_set_write_directory()</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="127"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1458">the cache directory for @backend</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1450">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_part_enabled"
              c:identifier="e_collection_backend_get_part_enabled"
              version="3.40">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="2085">Checks whether the @backend has enabled at least of the @parts.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="181"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="2092">%TRUE, when at least one of the @parts is enabled and
   the backend's #ESource is enabled as well.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="2087">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="parts" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="2088">a bit-or of #ECollectionBackendParts with parts to be checked</doc>
            <type name="CollectionBackendParts"
                  c:type="ECollectionBackendParts"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_populate_frozen"
              c:identifier="e_collection_backend_get_populate_frozen"
              version="3.38">
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="175"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="2034">Whether the backend has currently frozen (disabled) populate of its content.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="2032">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_new_source"
              c:identifier="e_collection_backend_is_new_source"
              version="3.32">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1361">Returns whether the @source is a newly created child or not. New sources
are remembered between two populate calls only.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="119"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1369">%TRUE, when the @source is a new child; %FALSE when
   it had been known before.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1363">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1364">a child #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="list_calendar_sources"
              c:identifier="e_collection_backend_list_calendar_sources"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1572">Returns a list of calendar sources belonging to the data source
collection managed by @backend.

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 #GList 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>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="134"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1589">a list of calendar sources</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="EDataServer.Source"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1574">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_contacts_sources"
              c:identifier="e_collection_backend_list_contacts_sources"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1615">Returns a list of address book sources belonging to the data source
collection managed by @backend.

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 #GList 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>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="136"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1632">a list of address book sources</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="EDataServer.Source"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1617">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_mail_sources"
              c:identifier="e_collection_backend_list_mail_sources"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1658">Returns a list of mail sources belonging to the data source collection
managed by @backend.

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 #GList 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>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="138"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1675">a list of mail sources</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="EDataServer.Source"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1660">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="new_child"
              c:identifier="e_collection_backend_new_child"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1310">Creates a new #EServerSideSource as a child of the collection
#EBackend:source owned by @backend.  If possible, the #EServerSideSource
is drawn from a cache of previously used sources indexed by @resource_id
so that locally cached data from previous sessions can be reused.

The returned data source should be passed to
e_source_registry_server_add_source() to export it over D-Bus.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="117"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1323">a newly-created data source</doc>
          <type name="EDataServer.Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1312">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
          <parameter name="resource_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1313">a stable and unique resource ID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_proxy_resolver"
              c:identifier="e_collection_backend_ref_proxy_resolver"
              version="3.12">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1394">Returns the #GProxyResolver for @backend (if applicable), as indicated
by the #ESourceAuthentication:proxy-uid of @backend's #EBackend:source
or one of its ancestors.

The returned #GProxyResolver is referenced for thread-safety and must
be unreferenced with g_object_unref() when finished with it.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="123"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1405">a #GProxyResolver, or %NULL</doc>
          <type name="Gio.ProxyResolver" c:type="GProxyResolver*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1396">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_server"
              c:identifier="e_collection_backend_ref_server"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1426">Returns the #ESourceRegistryServer to which @backend belongs.

The returned #ESourceRegistryServer is referenced for thread-safety.
Unreference the #ESourceRegistryServer with g_object_unref() when
finished with it.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="126"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-collection-backend.c"
               line="1436">the #ESourceRegistryServer for @backend</doc>
          <type name="SourceRegistryServer" c:type="_ESourceRegistryServer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1428">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="schedule_populate"
              c:identifier="e_collection_backend_schedule_populate"
              version="3.30">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="2012">Schedules a call to populate() of the @backend on idle.
The function does nothing in case the @backend is offline.</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="173"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="2014">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="thaw_populate"
              c:identifier="e_collection_backend_thaw_populate"
              version="3.38">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="2068">Thaws populate of the backend's content. This is a pair function
for e_collection_backend_freeze_populate().</doc>
        <source-position filename="src/libebackend/e-collection-backend.h"
                         line="179"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="2070">an #ECollectionBackend</doc>
            <type name="CollectionBackend" c:type="ECollectionBackend*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="proxy-resolver" transfer-ownership="none">
        <type name="Gio.ProxyResolver"/>
      </property>
      <property name="server"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="SourceRegistryServer"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="Backend" c:type="EBackend"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="CollectionBackendPrivate"
              c:type="ECollectionBackendPrivate*"/>
      </field>
      <glib:signal name="child-added" when="last">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1237">Emitted when an #EServerSideSource is added to @backend's
#ECollectionBackend:server as a child of @backend's collection
#EBackend:source.

You can think of this as a filtered version of
#ESourceRegistryServer's #ESourceRegistryServer::source-added
signal which only lets through sources relevant to @backend.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="child_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1240">the newly-added child #EServerSideSource</doc>
            <type name="ServerSideSource"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="child-removed" when="last">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend.c"
             line="1259">Emitted when an #EServerSideSource that is a child of
@backend's collection #EBackend:source is removed from
@backend's #ECollectionBackend:server.

You can think of this as a filtered version of
#ESourceRegistryServer's #ESourceRegistryServer::source-removed
signal which only lets through sources relevant to @backend.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="child_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1262">the child #EServerSideSource that got removed</doc>
            <type name="ServerSideSource"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="CollectionBackendClass"
            c:type="ECollectionBackendClass"
            glib:is-gtype-struct-for="CollectionBackend">
      <source-position filename="src/libebackend/e-collection-backend.h"
                       line="114"/>
      <field name="parent_class" readable="0" private="1">
        <type name="BackendClass" c:type="EBackendClass"/>
      </field>
      <field name="populate">
        <callback name="populate">
          <source-position filename="src/libebackend/e-collection-backend.h"
                           line="74"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <type name="CollectionBackend" c:type="ECollectionBackend*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="dup_resource_id">
        <callback name="dup_resource_id">
          <source-position filename="src/libebackend/e-collection-backend.h"
                           line="75"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1483">a newly-allocated resource ID for @child_source, or %NULL</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1472">an #ECollectionBackend</doc>
              <type name="CollectionBackend" c:type="ECollectionBackend*"/>
            </parameter>
            <parameter name="child_source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1473">an #ESource managed by @backend</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="child_added">
        <callback name="child_added">
          <source-position filename="src/libebackend/e-collection-backend.h"
                           line="79"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <type name="CollectionBackend" c:type="ECollectionBackend*"/>
            </parameter>
            <parameter name="child_source" transfer-ownership="none">
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="child_removed">
        <callback name="child_removed">
          <source-position filename="src/libebackend/e-collection-backend.h"
                           line="81"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <type name="CollectionBackend" c:type="ECollectionBackend*"/>
            </parameter>
            <parameter name="child_source" transfer-ownership="none">
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_resource_sync">
        <callback name="create_resource_sync" throws="1">
          <source-position filename="src/libebackend/e-collection-backend.h"
                           line="85"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1724">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1703">an #ECollectionBackend</doc>
              <type name="CollectionBackend" c:type="ECollectionBackend*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1704">an #ESource</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1705">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_resource">
        <callback name="create_resource">
          <source-position filename="src/libebackend/e-collection-backend.h"
                           line="89"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1749">an #ECollectionBackend</doc>
              <type name="CollectionBackend" c:type="ECollectionBackend*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1750">an #ESource</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1751">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"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1752">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"
                       nullable="1"
                       allow-none="1"
                       closure="4">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1753">data to pass to the callback function</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_resource_finish">
        <callback name="create_resource_finish" throws="1">
          <source-position filename="src/libebackend/e-collection-backend.h"
                           line="94"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1805">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1797">an #ECollectionBackend</doc>
              <type name="CollectionBackend" c:type="ECollectionBackend*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1798">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="delete_resource_sync">
        <callback name="delete_resource_sync" throws="1">
          <source-position filename="src/libebackend/e-collection-backend.h"
                           line="98"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1843">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1828">an #ECollectionBackend</doc>
              <type name="CollectionBackend" c:type="ECollectionBackend*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1829">an #ESource</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1830">optional #GCancellable object, or %NULL</doc>
              <type name="Gio.Cancellable" c:type="GCancellable*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="delete_resource">
        <callback name="delete_resource">
          <source-position filename="src/libebackend/e-collection-backend.h"
                           line="102"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1868">an #ECollectionBackend</doc>
              <type name="CollectionBackend" c:type="ECollectionBackend*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1869">an #ESource</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1870">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"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1871">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"
                       nullable="1"
                       allow-none="1"
                       closure="4">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1872">data to pass to the callback function</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="delete_resource_finish">
        <callback name="delete_resource_finish" throws="1">
          <source-position filename="src/libebackend/e-collection-backend.h"
                           line="107"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend.c"
                 line="1918">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1910">an #ECollectionBackend</doc>
              <type name="CollectionBackend" c:type="ECollectionBackend*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend.c"
                   line="1911">a #GAsyncResult</doc>
              <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="10">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <class name="CollectionBackendFactory"
           c:symbol-prefix="collection_backend_factory"
           c:type="ECollectionBackendFactory"
           version="3.6"
           parent="BackendFactory"
           glib:type-name="ECollectionBackendFactory"
           glib:get-type="e_collection_backend_factory_get_type"
           glib:type-struct="CollectionBackendFactoryClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-collection-backend-factory.h"
           line="52">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-collection-backend-factory.h"
                       line="81"/>
      <virtual-method name="prepare_mail" invoker="prepare_mail" version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend-factory.c"
             line="162">Convenience function to populate a set of #ESource instances with mail
account information to be added to an #ECollectionBackend.  This is mainly
used for vendor-specific collection backends like Google or Yahoo! where
the host, port, and security details are known ahead of time and only
user-specific information needs to be filled in.</doc>
        <source-position filename="src/libebackend/e-collection-backend-factory.h"
                         line="74"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend-factory.c"
                 line="164">an #ECollectionBackendFactory</doc>
            <type name="CollectionBackendFactory"
                  c:type="ECollectionBackendFactory*"/>
          </instance-parameter>
          <parameter name="mail_account_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend-factory.c"
                 line="165">an #ESource to hold mail account information</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="mail_identity_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend-factory.c"
                 line="166">an #ESource to hold mail identity information</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="mail_transport_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend-factory.c"
                 line="167">an #ESource to hold mail transport information</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="prepare_mail"
              c:identifier="e_collection_backend_factory_prepare_mail"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-collection-backend-factory.c"
             line="162">Convenience function to populate a set of #ESource instances with mail
account information to be added to an #ECollectionBackend.  This is mainly
used for vendor-specific collection backends like Google or Yahoo! where
the host, port, and security details are known ahead of time and only
user-specific information needs to be filled in.</doc>
        <source-position filename="src/libebackend/e-collection-backend-factory.h"
                         line="85"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend-factory.c"
                 line="164">an #ECollectionBackendFactory</doc>
            <type name="CollectionBackendFactory"
                  c:type="ECollectionBackendFactory*"/>
          </instance-parameter>
          <parameter name="mail_account_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend-factory.c"
                 line="165">an #ESource to hold mail account information</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="mail_identity_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend-factory.c"
                 line="166">an #ESource to hold mail identity information</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="mail_transport_source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-collection-backend-factory.c"
                 line="167">an #ESource to hold mail transport information</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="BackendFactory" c:type="EBackendFactory"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="CollectionBackendFactoryPrivate"
              c:type="ECollectionBackendFactoryPrivate*"/>
      </field>
    </class>
    <record name="CollectionBackendFactoryClass"
            c:type="ECollectionBackendFactoryClass"
            glib:is-gtype-struct-for="CollectionBackendFactory">
      <source-position filename="src/libebackend/e-collection-backend-factory.h"
                       line="81"/>
      <field name="parent_class" readable="0" private="1">
        <type name="BackendFactoryClass" c:type="EBackendFactoryClass"/>
      </field>
      <field name="factory_name" readable="0" private="1">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="backend_type" readable="0" private="1">
        <type name="GType" c:type="GType"/>
      </field>
      <field name="prepare_mail">
        <callback name="prepare_mail">
          <source-position filename="src/libebackend/e-collection-backend-factory.h"
                           line="74"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="factory" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend-factory.c"
                   line="164">an #ECollectionBackendFactory</doc>
              <type name="CollectionBackendFactory"
                    c:type="ECollectionBackendFactory*"/>
            </parameter>
            <parameter name="mail_account_source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend-factory.c"
                   line="165">an #ESource to hold mail account information</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
            <parameter name="mail_identity_source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend-factory.c"
                   line="166">an #ESource to hold mail identity information</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
            <parameter name="mail_transport_source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-collection-backend-factory.c"
                   line="167">an #ESource to hold mail transport information</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved" readable="0" private="1">
        <array zero-terminated="0" fixed-size="16">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="CollectionBackendFactoryPrivate"
            c:type="ECollectionBackendFactoryPrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-collection-backend-factory.h"
                       line="50"/>
    </record>
    <bitfield name="CollectionBackendParts"
              version="3.40"
              glib:type-name="ECollectionBackendParts"
              glib:get-type="e_collection_backend_parts_get_type"
              c:type="ECollectionBackendParts">
      <doc xml:space="preserve"
           filename="src/libebackend/e-backend-enums.h"
           line="106">Flags to check whether at least one of the asked for parts is enabled.</doc>
      <member name="none"
              value="0"
              c:identifier="E_COLLECTION_BACKEND_PART_NONE"
              glib:nick="none">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="108">None part.</doc>
      </member>
      <member name="calendar"
              value="1"
              c:identifier="E_COLLECTION_BACKEND_PART_CALENDAR"
              glib:nick="calendar">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="109">Check the calendar part.</doc>
      </member>
      <member name="contacts"
              value="2"
              c:identifier="E_COLLECTION_BACKEND_PART_CONTACTS"
              glib:nick="contacts">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="110">Check the contacts part.</doc>
      </member>
      <member name="mail"
              value="4"
              c:identifier="E_COLLECTION_BACKEND_PART_MAIL"
              glib:nick="mail">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="111">Check the mail part.</doc>
      </member>
      <member name="any"
              value="-1"
              c:identifier="E_COLLECTION_BACKEND_PART_ANY"
              glib:nick="any">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="112">Shortcut to have all parts checked.</doc>
      </member>
    </bitfield>
    <record name="CollectionBackendPrivate"
            c:type="ECollectionBackendPrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-collection-backend.h"
                       line="53"/>
    </record>
    <function-macro name="DATA_FACTORY"
                    c:identifier="E_DATA_FACTORY"
                    introspectable="0">
      <source-position filename="src/libebackend/e-data-factory.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DATA_FACTORY_CLASS"
                    c:identifier="E_DATA_FACTORY_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-data-factory.h" line="33"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DATA_FACTORY_GET_CLASS"
                    c:identifier="E_DATA_FACTORY_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-data-factory.h" line="42"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DBUS_SERVER"
                    c:identifier="E_DBUS_SERVER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-dbus-server.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DBUS_SERVER_CLASS"
                    c:identifier="E_DBUS_SERVER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-dbus-server.h" line="33"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DBUS_SERVER_GET_CLASS"
                    c:identifier="E_DBUS_SERVER_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-dbus-server.h" line="42"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="DBusServer"
           c:symbol-prefix="dbus_server"
           c:type="EDBusServer"
           version="3.4"
           parent="GObject.Object"
           abstract="1"
           glib:type-name="EDBusServer"
           glib:get-type="e_dbus_server_get_type"
           glib:type-struct="DBusServerClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-dbus-server.h"
           line="53">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-dbus-server.h" line="86"/>
      <implements name="EDataServer.Extensible"/>
      <virtual-method name="bus_acquired">
        <source-position filename="src/libebackend/e-dbus-server.h" line="74"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <type name="DBusServer" c:type="EDBusServer*"/>
          </instance-parameter>
          <parameter name="connection" transfer-ownership="none">
            <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="bus_name_acquired">
        <source-position filename="src/libebackend/e-dbus-server.h" line="76"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <type name="DBusServer" c:type="EDBusServer*"/>
          </instance-parameter>
          <parameter name="connection" transfer-ownership="none">
            <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="bus_name_lost">
        <source-position filename="src/libebackend/e-dbus-server.h" line="78"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <type name="DBusServer" c:type="EDBusServer*"/>
          </instance-parameter>
          <parameter name="connection" transfer-ownership="none">
            <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="quit_server">
        <source-position filename="src/libebackend/e-dbus-server.h" line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <type name="DBusServer" c:type="EDBusServer*"/>
          </instance-parameter>
          <parameter name="code" transfer-ownership="none">
            <type name="DBusServerExitCode" c:type="EDBusServerExitCode"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="run_server">
        <source-position filename="src/libebackend/e-dbus-server.h" line="81"/>
        <return-value transfer-ownership="none">
          <type name="DBusServerExitCode" c:type="EDBusServerExitCode"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <type name="DBusServer" c:type="EDBusServer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="hold" c:identifier="e_dbus_server_hold" version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-dbus-server.c"
             line="542">Increases the use count of @server.

Use this function to indicate that the server has a reason to continue
to run.  To cancel the hold, call e_dbus_server_release().</doc>
        <source-position filename="src/libebackend/e-dbus-server.h" line="94"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-dbus-server.c"
                 line="544">an #EDBusServer</doc>
            <type name="DBusServer" c:type="EDBusServer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load_modules"
              c:identifier="e_dbus_server_load_modules"
              version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-dbus-server.c"
             line="656">This function should be called once during @server initialization to
load all available library modules to extend the @server's functionality.</doc>
        <source-position filename="src/libebackend/e-dbus-server.h" line="96"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-dbus-server.c"
                 line="658">an #EDBusServer</doc>
            <type name="DBusServer" c:type="EDBusServer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="quit" c:identifier="e_dbus_server_quit" version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-dbus-server.c"
             line="521">Emits the #EDBusServer::quit signal with the given @code.

By default the @server will quit its main loop and cause
e_dbus_server_run() to return @code.</doc>
        <source-position filename="src/libebackend/e-dbus-server.h" line="92"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-dbus-server.c"
                 line="523">an #EDBusServer</doc>
            <type name="DBusServer" c:type="EDBusServer*"/>
          </instance-parameter>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-dbus-server.c"
                 line="524">an #EDBusServerExitCode</doc>
            <type name="DBusServerExitCode" c:type="EDBusServerExitCode"/>
          </parameter>
        </parameters>
      </method>
      <method name="release"
              c:identifier="e_dbus_server_release"
              version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-dbus-server.c"
             line="570">Decreates the use count of @server.

When the use count reaches zero, the server will stop running.

Never call this function except to cancel the effect of a previous call
to e_dbus_server_hold().</doc>
        <source-position filename="src/libebackend/e-dbus-server.h" line="95"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-dbus-server.c"
                 line="572">an #EDBusServer</doc>
            <type name="DBusServer" c:type="EDBusServer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="run" c:identifier="e_dbus_server_run" version="3.4">
        <doc xml:space="preserve"
             filename="src/libebackend/e-dbus-server.c"
             line="481">Emits the #EDBusServer::run signal.

By default the @server will start its main loop and attempt to acquire
its well-known session bus name.  If the @server's main loop is already
running, the function will immediately return #E_DBUS_SERVER_EXIT_NONE.
Otherwise the function blocks until e_dbus_server_quit() is called.

If @wait_for_client is %TRUE, the @server will continue running until
the first client connection is made instead of quitting on its own if
no client connection is made within the first few seconds.</doc>
        <source-position filename="src/libebackend/e-dbus-server.h" line="90"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-dbus-server.c"
               line="497">the exit code passed to e_dbus_server_quit()</doc>
          <type name="DBusServerExitCode" c:type="EDBusServerExitCode"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-dbus-server.c"
                 line="483">an #EDBusServer</doc>
            <type name="DBusServer" c:type="EDBusServer*"/>
          </instance-parameter>
          <parameter name="wait_for_client" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-dbus-server.c"
                 line="484">continue running until a client connects</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="DBusServerPrivate" c:type="EDBusServerPrivate*"/>
      </field>
      <glib:signal name="bus-acquired" when="last">
        <doc xml:space="preserve"
             filename="src/libebackend/e-dbus-server.c"
             line="370">Emitted when @server acquires a connection to the session bus.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="connection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-dbus-server.c"
                 line="373">the #GDBusConnection to the session bus</doc>
            <type name="Gio.DBusConnection"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="bus-name-acquired" when="last">
        <doc xml:space="preserve"
             filename="src/libebackend/e-dbus-server.c"
             line="386">Emitted when @server acquires its well-known session bus name.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="connection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-dbus-server.c"
                 line="389">the #GDBusConnection to the session bus</doc>
            <type name="Gio.DBusConnection"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="bus-name-lost" when="last">
        <doc xml:space="preserve"
             filename="src/libebackend/e-dbus-server.c"
             line="402">Emitted when @server loses its well-known session bus name
or the session bus connection has been closed.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="connection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-dbus-server.c"
                 line="405">the #GDBusconnection to the session bus,
             or %NULL if the connection has been closed</doc>
            <type name="Gio.DBusConnection"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="quit-server" when="last">
        <doc xml:space="preserve"
             filename="src/libebackend/e-dbus-server.c"
             line="437">Emitted to request that @server quit its main loop.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="code" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-dbus-server.c"
                 line="440">an #EDBusServerExitCode</doc>
            <type name="DBusServerExitCode"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="run-server" when="last">
        <doc xml:space="preserve"
             filename="src/libebackend/e-dbus-server.c"
             line="420">Emitted to request that @server start its main loop and
attempt to acquire its well-known session bus name.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-dbus-server.c"
               line="427">an #EDBusServerExitCode</doc>
          <type name="DBusServerExitCode"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="DBusServerClass"
            c:type="EDBusServerClass"
            glib:is-gtype-struct-for="DBusServer">
      <source-position filename="src/libebackend/e-dbus-server.h" line="86"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="bus_name">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="module_directory">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="bus_acquired">
        <callback name="bus_acquired">
          <source-position filename="src/libebackend/e-dbus-server.h"
                           line="74"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <type name="DBusServer" c:type="EDBusServer*"/>
            </parameter>
            <parameter name="connection" transfer-ownership="none">
              <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="bus_name_acquired">
        <callback name="bus_name_acquired">
          <source-position filename="src/libebackend/e-dbus-server.h"
                           line="76"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <type name="DBusServer" c:type="EDBusServer*"/>
            </parameter>
            <parameter name="connection" transfer-ownership="none">
              <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="bus_name_lost">
        <callback name="bus_name_lost">
          <source-position filename="src/libebackend/e-dbus-server.h"
                           line="78"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <type name="DBusServer" c:type="EDBusServer*"/>
            </parameter>
            <parameter name="connection" transfer-ownership="none">
              <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="run_server">
        <callback name="run_server">
          <source-position filename="src/libebackend/e-dbus-server.h"
                           line="81"/>
          <return-value transfer-ownership="none">
            <type name="DBusServerExitCode" c:type="EDBusServerExitCode"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <type name="DBusServer" c:type="EDBusServer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="quit_server">
        <callback name="quit_server">
          <source-position filename="src/libebackend/e-dbus-server.h"
                           line="82"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <type name="DBusServer" c:type="EDBusServer*"/>
            </parameter>
            <parameter name="code" transfer-ownership="none">
              <type name="DBusServerExitCode" c:type="EDBusServerExitCode"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved">
        <array zero-terminated="0" fixed-size="14">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <enumeration name="DBusServerExitCode"
                 version="3.6"
                 glib:type-name="EDBusServerExitCode"
                 glib:get-type="e_dbus_server_exit_code_get_type"
                 c:type="EDBusServerExitCode">
      <doc xml:space="preserve"
           filename="src/libebackend/e-backend-enums.h"
           line="44">Exit codes submitted to e_dbus_server_quit() and returned by
e_dbus_server_run().</doc>
      <member name="none"
              value="0"
              c:identifier="E_DBUS_SERVER_EXIT_NONE"
              glib:nick="none">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="46">The server's run state is unchanged.</doc>
      </member>
      <member name="normal"
              value="1"
              c:identifier="E_DBUS_SERVER_EXIT_NORMAL"
              glib:nick="normal">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="48">Normal termination.  The process itself may now terminate.</doc>
      </member>
      <member name="reload"
              value="2"
              c:identifier="E_DBUS_SERVER_EXIT_RELOAD"
              glib:nick="reload">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="50">The server should reload its configuration and start again.
  Servers that do not support reloading may wish to intercept
  this exit code and stop the #EDBusServer::quit-server emission.</doc>
      </member>
    </enumeration>
    <record name="DBusServerPrivate" c:type="EDBusServerPrivate" disguised="1">
      <source-position filename="src/libebackend/e-dbus-server.h" line="51"/>
    </record>
    <class name="DataFactory"
           c:symbol-prefix="data_factory"
           c:type="EDataFactory"
           version="3.4"
           parent="DBusServer"
           glib:type-name="EDataFactory"
           glib:get-type="e_data_factory_get_type"
           glib:type-struct="DataFactoryClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-data-factory.h"
           line="53">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-data-factory.h" line="98"/>
      <implements name="EDataServer.Extensible"/>
      <implements name="Gio.Initable"/>
      <virtual-method name="complete_open">
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
          <parameter name="invocation" transfer-ownership="none">
            <type name="Gio.DBusMethodInvocation"
                  c:type="GDBusMethodInvocation*"/>
          </parameter>
          <parameter name="object_path" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="bus_name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="extension_name" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="create_backend" invoker="create_backend">
        <doc xml:space="preserve"
             filename="src/libebackend/e-data-factory.c"
             line="1732">Used only when backend-per-process is off.

Free the returned pointer with g_object_unref(), if not NULL and no longer
needed.</doc>
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="88"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-data-factory.c"
               line="1741">a newly-created #EBackend</doc>
          <type name="Backend" c:type="EBackend*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1734">an #EDataFactory</doc>
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
          <parameter name="backend_factory" transfer-ownership="none">
            <type name="BackendFactory" c:type="EBackendFactory*"/>
          </parameter>
          <parameter name="source" transfer-ownership="none">
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="open_backend" invoker="open_backend" throws="1">
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="91"/>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
          <parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="EBackend*"/>
          </parameter>
          <parameter name="connection" transfer-ownership="none">
            <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="backend_closed"
              c:identifier="e_data_factory_backend_closed">
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="129"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
          <parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="EBackend*"/>
          </parameter>
        </parameters>
      </method>
      <method name="backend_closed_by_sender"
              c:identifier="e_data_factory_backend_closed_by_sender">
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="131"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
          <parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="EBackend*"/>
          </parameter>
          <parameter name="sender" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="construct_path"
              c:identifier="e_data_factory_construct_path"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-data-factory.c"
             line="1324">Returns a new and unique object path for a D-Bus interface based
in the data object path prefix of the @data_factory</doc>
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="108"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-data-factory.c"
               line="1331">a newly allocated string, representing the object path for
         the D-Bus interface.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1326">an #EDataFactory</doc>
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="create_backend"
              c:identifier="e_data_factory_create_backend">
        <doc xml:space="preserve"
             filename="src/libebackend/e-data-factory.c"
             line="1732">Used only when backend-per-process is off.

Free the returned pointer with g_object_unref(), if not NULL and no longer
needed.</doc>
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="121"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-data-factory.c"
               line="1741">a newly-created #EBackend</doc>
          <type name="Backend" c:type="EBackend*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1734">an #EDataFactory</doc>
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
          <parameter name="backend_factory" transfer-ownership="none">
            <type name="BackendFactory" c:type="EBackendFactory*"/>
          </parameter>
          <parameter name="source" transfer-ownership="none">
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_backend_per_process"
              c:identifier="e_data_factory_get_backend_per_process">
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="117"/>
        <return-value transfer-ownership="none">
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_registry"
              c:identifier="e_data_factory_get_registry"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-data-factory.c"
             line="1306">Returns the #ESourceRegistry owned by @data_factory.</doc>
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="107"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-data-factory.c"
               line="1312">the #ESourceRegistry</doc>
          <type name="EDataServer.SourceRegistry" c:type="ESourceRegistry*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1308">an #EDataFactory</doc>
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_reload_supported"
              c:identifier="e_data_factory_get_reload_supported">
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="115"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_opened_backends"
              c:identifier="e_data_factory_list_opened_backends">
        <doc xml:space="preserve"
             filename="src/libebackend/e-data-factory.c"
             line="1811">Lists the currently opened backends.

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 #GSList itself with g_slist_free().

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

|[
  g_slist_free_full (list, g_object_unref);
]|</doc>
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="135"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-data-factory.c"
               line="1827">a #GSList of #EBackend</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="Backend"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1813">an #EDataFactory</doc>
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open_backend"
              c:identifier="e_data_factory_open_backend"
              throws="1">
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="124"/>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
          <parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="EBackend*"/>
          </parameter>
          <parameter name="connection" transfer-ownership="none">
            <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_backend_factory"
              c:identifier="e_data_factory_ref_backend_factory"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-data-factory.c"
             line="1258">Returns the #EBackendFactory for "@backend_name:@extension_name", or
%NULL if no such factory is registered.

The returned #EBackendFactory is referenced for thread-safety.
Unreference the #EBackendFactory with g_object_unref() when finished
with it.</doc>
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="102"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-data-factory.c"
               line="1271">the #EBackendFactory for @hash_key, or %NULL</doc>
          <type name="BackendFactory" c:type="EBackendFactory*"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1260">an #EDataFactory</doc>
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
          <parameter name="backend_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1261">a backend name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="extension_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1262">an extension name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="spawn_subprocess_backend"
              c:identifier="e_data_factory_spawn_subprocess_backend"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-data-factory.c"
             line="1653">Spawns a new subprocess for a backend type and returns the object path
of the new subprocess to the client, in the way the client can talk
directly to the running backend. If the backend already has a subprocess
running, the used object path is returned to the client.</doc>
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="109"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1655">an #EDataFactory</doc>
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
          <parameter name="invocation" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1656">a #GDBusMethodInvocation</doc>
            <type name="Gio.DBusMethodInvocation"
                  c:type="GDBusMethodInvocation*"/>
          </parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1657">an #ESource UID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="extension_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1658">an extension name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="subprocess_path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1659">a path of an executable responsible for running the subprocess</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="use_backend_per_process"
              c:identifier="e_data_factory_use_backend_per_process">
        <source-position filename="src/libebackend/e-data-factory.h"
                         line="119"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="data_factory" transfer-ownership="none">
            <type name="DataFactory" c:type="EDataFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="backend-per-process"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gint" c:type="gint"/>
      </property>
      <property name="registry" transfer-ownership="none">
        <type name="EDataServer.SourceRegistry"/>
      </property>
      <property name="reload-supported"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="DBusServer" c:type="EDBusServer"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="DataFactoryPrivate" c:type="EDataFactoryPrivate*"/>
      </field>
    </class>
    <record name="DataFactoryClass"
            c:type="EDataFactoryClass"
            glib:is-gtype-struct-for="DataFactory">
      <source-position filename="src/libebackend/e-data-factory.h" line="98"/>
      <field name="parent_class">
        <type name="DBusServerClass" c:type="EDBusServerClass"/>
      </field>
      <field name="backend_factory_type">
        <type name="GType" c:type="GType"/>
      </field>
      <field name="factory_object_path">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="data_object_path_prefix">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="subprocess_object_path_prefix">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="subprocess_bus_name_prefix">
        <type name="utf8" c:type="const gchar*"/>
      </field>
      <field name="get_dbus_interface_skeleton" introspectable="0">
        <callback name="get_dbus_interface_skeleton" introspectable="0">
          <source-position filename="src/libebackend/e-data-factory.h"
                           line="79"/>
          <return-value>
            <type name="Gio.DBusInterfaceSkeleton"
                  c:type="GDBusInterfaceSkeleton*"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <type name="DBusServer" c:type="EDBusServer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_factory_name">
        <callback name="get_factory_name">
          <source-position filename="src/libebackend/e-data-factory.h"
                           line="81"/>
          <return-value transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </return-value>
          <parameters>
            <parameter name="backend_factory" transfer-ownership="none">
              <type name="BackendFactory" c:type="EBackendFactory*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="complete_open">
        <callback name="complete_open">
          <source-position filename="src/libebackend/e-data-factory.h"
                           line="82"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="data_factory" transfer-ownership="none">
              <type name="DataFactory" c:type="EDataFactory*"/>
            </parameter>
            <parameter name="invocation" transfer-ownership="none">
              <type name="Gio.DBusMethodInvocation"
                    c:type="GDBusMethodInvocation*"/>
            </parameter>
            <parameter name="object_path" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="bus_name" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="extension_name" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="create_backend">
        <callback name="create_backend">
          <source-position filename="src/libebackend/e-data-factory.h"
                           line="88"/>
          <return-value transfer-ownership="full">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-data-factory.c"
                 line="1741">a newly-created #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </return-value>
          <parameters>
            <parameter name="data_factory" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-data-factory.c"
                   line="1734">an #EDataFactory</doc>
              <type name="DataFactory" c:type="EDataFactory*"/>
            </parameter>
            <parameter name="backend_factory" transfer-ownership="none">
              <type name="BackendFactory" c:type="EBackendFactory*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="open_backend">
        <callback name="open_backend" throws="1">
          <source-position filename="src/libebackend/e-data-factory.h"
                           line="91"/>
          <return-value transfer-ownership="full">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="data_factory" transfer-ownership="none">
              <type name="DataFactory" c:type="EDataFactory*"/>
            </parameter>
            <parameter name="backend" transfer-ownership="none">
              <type name="Backend" c:type="EBackend*"/>
            </parameter>
            <parameter name="connection" transfer-ownership="none">
              <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
            </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" fixed-size="13">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="DataFactoryPrivate"
            c:type="EDataFactoryPrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-data-factory.h" line="51"/>
    </record>
    <constant name="EDS_REGISTRY_MODULES"
              value="EDS_REGISTRY_MODULES"
              c:type="EDS_REGISTRY_MODULES">
      <doc xml:space="preserve"
           filename="src/libebackend/e-source-registry-server.h"
           line="62">This environment variable configures where the registry
server loads it's backend modules from.</doc>
      <source-position filename="src/libebackend/e-source-registry-server.h"
                       line="66"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="FILE_CACHE"
                    c:identifier="E_FILE_CACHE"
                    introspectable="0">
      <source-position filename="src/libebackend/e-file-cache.h" line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILE_CACHE_CLASS"
                    c:identifier="E_FILE_CACHE_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-file-cache.h" line="35"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="FILE_CACHE_GET_CLASS"
                    c:identifier="E_FILE_CACHE_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-file-cache.h" line="44"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="FileCache"
           c:symbol-prefix="file_cache"
           c:type="EFileCache"
           parent="GObject.Object"
           glib:type-name="EFileCache"
           glib:get-type="e_file_cache_get_type"
           glib:type-struct="FileCacheClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-file-cache.h"
           line="55">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-file-cache.h" line="69"/>
      <constructor name="new" c:identifier="e_file_cache_new">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="182">Creates a new #EFileCache object, which implements a cache of
objects.  Useful for remote backends.</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="72"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-file-cache.c"
               line="189">a new #EFileCache</doc>
          <type name="FileCache" c:type="EFileCache*"/>
        </return-value>
        <parameters>
          <parameter name="filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="184">filename where the cache is kept</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <method name="add_object" c:identifier="e_file_cache_add_object">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="413">Adds a new @key / @value entry to @cache.  If an object corresponding
to @key already exists in @cache, the function returns %FALSE.</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="79"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-file-cache.c"
               line="422">%TRUE if successful, %FALSE if @key already exists</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="415">an #EFileCache</doc>
            <type name="FileCache" c:type="EFileCache*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="416">the hash key of the object to add</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="417">the object to add</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="clean" c:identifier="e_file_cache_clean">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="270">Clean up the cache's contents.</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="74"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-file-cache.c"
               line="276">%TRUE always</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="272">an #EFileCache</doc>
            <type name="FileCache" c:type="EFileCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="freeze_changes" c:identifier="e_file_cache_freeze_changes">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="509">Disables temporarily all writes to disk for @cache.</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="87"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="511">an #EFileCache</doc>
            <type name="FileCache" c:type="EFileCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_filename" c:identifier="e_file_cache_get_filename">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="544">Gets the name of the file where the cache is being stored.</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="89"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-file-cache.c"
               line="550">The name of the cache.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="546">A %EFileCache object.</doc>
            <type name="FileCache" c:type="EFileCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_keys" c:identifier="e_file_cache_get_keys">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="390">Returns a list of keys in @cache.  The keys are owned by @cache and must
not be modified or freed.  Free the returned list with g_slist_free().</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="78"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="src/libebackend/e-file-cache.c"
               line="397">a list of keys</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="392">an #EFileCache</doc>
            <type name="FileCache" c:type="EFileCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_object" c:identifier="e_file_cache_get_object">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="327">Returns the object corresponding to @key.  If no such object exists
in @cache, the function returns %NULL.</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="75"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-file-cache.c"
               line="335">the object corresponding to @key</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="329">an #EFileCache</doc>
            <type name="FileCache" c:type="EFileCache*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="330">the hash key of the object to find</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_objects" c:identifier="e_file_cache_get_objects">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="367">Returns a list of objects in @cache.  The objects are owned by @cache and
must not be modified or freed.  Free the returned list with g_slist_free().</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="77"/>
        <return-value transfer-ownership="container">
          <doc xml:space="preserve"
               filename="src/libebackend/e-file-cache.c"
               line="374">a list of objects</doc>
          <type name="GLib.SList" c:type="GSList*">
            <type name="utf8"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="369">an #EFileCache</doc>
            <type name="FileCache" c:type="EFileCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove" c:identifier="e_file_cache_remove">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="199">Remove the cache from disk.</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-file-cache.c"
               line="205">%TRUE if successful, %FALSE if a file error occurred</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="201">an #EFileCache</doc>
            <type name="FileCache" c:type="EFileCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_object" c:identifier="e_file_cache_remove_object">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="474">Removes the object corresponding to @key from @cache.
If no such object exists in @cache, the function returns %FALSE.</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-file-cache.c"
               line="482">%TRUE if successful, %FALSE if @key was not found</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="476">an #EFileCache</doc>
            <type name="FileCache" c:type="EFileCache*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="477">the hash key of the object to remove</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="replace_object" c:identifier="e_file_cache_replace_object">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="446">Replaces the object corresponding to @key with @new_value.
If no such object exists in @cache, the function returns %FALSE.</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="82"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-file-cache.c"
               line="455">%TRUE if successful, %FALSE if @key was not found</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="448">an #EFileCache</doc>
            <type name="FileCache" c:type="EFileCache*"/>
          </instance-parameter>
          <parameter name="key" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="449">the hash key of the object to replace</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="new_value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="450">the new object for @key</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="thaw_changes" c:identifier="e_file_cache_thaw_changes">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="524">Reverts the affects of e_file_cache_freeze_changes().
Each change to @cache is once again written to disk.</doc>
        <source-position filename="src/libebackend/e-file-cache.h" line="88"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cache" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-file-cache.c"
                 line="526">an #EFileCache</doc>
            <type name="FileCache" c:type="EFileCache*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="filename"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/libebackend/e-file-cache.c"
             line="158">The filename of the cache.</doc>
        <type name="utf8" c:type="gchar*"/>
      </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="FileCachePrivate" c:type="EFileCachePrivate*"/>
      </field>
    </class>
    <record name="FileCacheClass"
            c:type="EFileCacheClass"
            glib:is-gtype-struct-for="FileCache">
      <source-position filename="src/libebackend/e-file-cache.h" line="69"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="FileCachePrivate" c:type="EFileCachePrivate" disguised="1">
      <source-position filename="src/libebackend/e-file-cache.h" line="53"/>
    </record>
    <function-macro name="IS_BACKEND"
                    c:identifier="E_IS_BACKEND"
                    introspectable="0">
      <source-position filename="src/libebackend/e-backend.h" line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BACKEND_CLASS"
                    c:identifier="E_IS_BACKEND_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-backend.h" line="38"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BACKEND_FACTORY"
                    c:identifier="E_IS_BACKEND_FACTORY"
                    introspectable="0">
      <source-position filename="src/libebackend/e-backend-factory.h"
                       line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BACKEND_FACTORY_CLASS"
                    c:identifier="E_IS_BACKEND_FACTORY_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-backend-factory.h"
                       line="39"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CACHE"
                    c:identifier="E_IS_CACHE"
                    introspectable="0">
      <source-position filename="src/libebackend/e-cache.h" line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CACHE_CLASS"
                    c:identifier="E_IS_CACHE_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-cache.h" line="40"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_CACHE_REAPER"
                    c:identifier="E_IS_CACHE_REAPER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-cache-reaper.h" line="28"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_COLLECTION_BACKEND"
                    c:identifier="E_IS_COLLECTION_BACKEND"
                    introspectable="0">
      <source-position filename="src/libebackend/e-collection-backend.h"
                       line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_COLLECTION_BACKEND_CLASS"
                    c:identifier="E_IS_COLLECTION_BACKEND_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-collection-backend.h"
                       line="39"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_COLLECTION_BACKEND_FACTORY"
                    c:identifier="E_IS_COLLECTION_BACKEND_FACTORY"
                    introspectable="0">
      <source-position filename="src/libebackend/e-collection-backend-factory.h"
                       line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_COLLECTION_BACKEND_FACTORY_CLASS"
                    c:identifier="E_IS_COLLECTION_BACKEND_FACTORY_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-collection-backend-factory.h"
                       line="38"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DATA_FACTORY"
                    c:identifier="E_IS_DATA_FACTORY"
                    introspectable="0">
      <source-position filename="src/libebackend/e-data-factory.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DATA_FACTORY_CLASS"
                    c:identifier="E_IS_DATA_FACTORY_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-data-factory.h" line="39"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DBUS_SERVER"
                    c:identifier="E_IS_DBUS_SERVER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-dbus-server.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DBUS_SERVER_CLASS"
                    c:identifier="E_IS_DBUS_SERVER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-dbus-server.h" line="39"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILE_CACHE"
                    c:identifier="E_IS_FILE_CACHE"
                    introspectable="0">
      <source-position filename="src/libebackend/e-file-cache.h" line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_FILE_CACHE_CLASS"
                    c:identifier="E_IS_FILE_CACHE_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-file-cache.h" line="41"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_OAUTH2_SUPPORT"
                    c:identifier="E_IS_OAUTH2_SUPPORT"
                    introspectable="0">
      <source-position filename="src/libebackend/e-oauth2-support.h"
                       line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_OFFLINE_LISTENER"
                    c:identifier="E_IS_OFFLINE_LISTENER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-offline-listener.h"
                       line="40"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_OFFLINE_LISTENER_CLASS"
                    c:identifier="E_IS_OFFLINE_LISTENER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-offline-listener.h"
                       line="43"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SERVER_SIDE_SOURCE"
                    c:identifier="E_IS_SERVER_SIDE_SOURCE"
                    introspectable="0">
      <source-position filename="src/libebackend/e-server-side-source.h"
                       line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SERVER_SIDE_SOURCE_CLASS"
                    c:identifier="E_IS_SERVER_SIDE_SOURCE_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-server-side-source.h"
                       line="39"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SERVER_SIDE_SOURCE_CREDENTIALS_PROVIDER"
                    c:identifier="E_IS_SERVER_SIDE_SOURCE_CREDENTIALS_PROVIDER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-server-side-source-credentials-provider.h"
                       line="40"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SERVER_SIDE_SOURCE_CREDENTIALS_PROVIDER_CLASS"
                    c:identifier="E_IS_SERVER_SIDE_SOURCE_CREDENTIALS_PROVIDER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-server-side-source-credentials-provider.h"
                       line="43"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SOURCE_REGISTRY_SERVER"
                    c:identifier="E_IS_SOURCE_REGISTRY_SERVER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-source-registry-server.h"
                       line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SOURCE_REGISTRY_SERVER_CLASS"
                    c:identifier="E_IS_SOURCE_REGISTRY_SERVER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-source-registry-server.h"
                       line="44"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SUBPROCESS_FACTORY"
                    c:identifier="E_IS_SUBPROCESS_FACTORY"
                    introspectable="0">
      <source-position filename="src/libebackend/e-subprocess-factory.h"
                       line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SUBPROCESS_FACTORY_CLASS"
                    c:identifier="E_IS_SUBPROCESS_FACTORY_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-subprocess-factory.h"
                       line="38"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USER_PROMPTER"
                    c:identifier="E_IS_USER_PROMPTER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter.h" line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USER_PROMPTER_CLASS"
                    c:identifier="E_IS_USER_PROMPTER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter.h" line="39"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USER_PROMPTER_SERVER"
                    c:identifier="E_IS_USER_PROMPTER_SERVER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter-server.h"
                       line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USER_PROMPTER_SERVER_CLASS"
                    c:identifier="E_IS_USER_PROMPTER_SERVER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter-server.h"
                       line="35"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USER_PROMPTER_SERVER_EXTENSION"
                    c:identifier="E_IS_USER_PROMPTER_SERVER_EXTENSION"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                       line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_USER_PROMPTER_SERVER_EXTENSION_CLASS"
                    c:identifier="E_IS_USER_PROMPTER_SERVER_EXTENSION_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                       line="34"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_WEBDAV_COLLECTION_BACKEND"
                    c:identifier="E_IS_WEBDAV_COLLECTION_BACKEND"
                    introspectable="0">
      <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                       line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_WEBDAV_COLLECTION_BACKEND_CLASS"
                    c:identifier="E_IS_WEBDAV_COLLECTION_BACKEND_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                       line="40"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="OAUTH2_SUPPORT"
                    c:identifier="E_OAUTH2_SUPPORT"
                    introspectable="0">
      <source-position filename="src/libebackend/e-oauth2-support.h"
                       line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="OAUTH2_SUPPORT_GET_INTERFACE"
                    c:identifier="E_OAUTH2_SUPPORT_GET_INTERFACE"
                    introspectable="0">
      <source-position filename="src/libebackend/e-oauth2-support.h"
                       line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <interface name="OAuth2Support"
               c:symbol-prefix="oauth2_support"
               c:type="EOAuth2Support"
               version="3.8"
               glib:type-name="EOAuth2Support"
               glib:get-type="e_oauth2_support_get_type"
               glib:type-struct="OAuth2SupportInterface">
      <source-position filename="src/libebackend/e-oauth2-support.h"
                       line="84"/>
      <virtual-method name="get_access_token"
                      invoker="get_access_token"
                      version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-oauth2-support.c"
             line="193">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_oauth2_support_get_access_token_finish() to get the result of the
operation.</doc>
        <source-position filename="src/libebackend/e-oauth2-support.h"
                         line="73"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="support" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="195">an #EOAuth2Support</doc>
            <type name="OAuth2Support" c:type="EOAuth2Support*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="196">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="197">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"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="198">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"
                     nullable="1"
                     allow-none="1"
                     closure="3">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="199">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_access_token_finish"
                      invoker="get_access_token_finish"
                      version="3.8"
                      throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-oauth2-support.c"
             line="229">Finishes the operation started with e_oauth2_support_get_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>
        <source-position filename="src/libebackend/e-oauth2-support.h"
                         line="78"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-oauth2-support.c"
               line="242">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="support" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="231">an #EOAuth2Support</doc>
            <type name="OAuth2Support" c:type="EOAuth2Support*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="232">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"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="233">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"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="234">return location for the token expiry, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="get_access_token_sync"
                      invoker="get_access_token_sync"
                      version="3.8"
                      throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-oauth2-support.c"
             line="153">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>
        <source-position filename="src/libebackend/e-oauth2-support.h"
                         line="64"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-oauth2-support.c"
               line="168">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="support" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="155">an #EOAuth2Support</doc>
            <type name="OAuth2Support" c:type="EOAuth2Support*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="156">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="157">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"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="158">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"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="159">return location for the token expiry, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_access_token"
              c:identifier="e_oauth2_support_get_access_token"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-oauth2-support.c"
             line="193">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_oauth2_support_get_access_token_finish() to get the result of the
operation.</doc>
        <source-position filename="src/libebackend/e-oauth2-support.h"
                         line="94"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="support" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="195">an #EOAuth2Support</doc>
            <type name="OAuth2Support" c:type="EOAuth2Support*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="196">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="197">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"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="198">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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="199">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_access_token_finish"
              c:identifier="e_oauth2_support_get_access_token_finish"
              version="3.8"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-oauth2-support.c"
             line="229">Finishes the operation started with e_oauth2_support_get_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>
        <source-position filename="src/libebackend/e-oauth2-support.h"
                         line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-oauth2-support.c"
               line="242">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="support" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="231">an #EOAuth2Support</doc>
            <type name="OAuth2Support" c:type="EOAuth2Support*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="232">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"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="233">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"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="234">return location for the token expiry, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_access_token_sync"
              c:identifier="e_oauth2_support_get_access_token_sync"
              version="3.8"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-oauth2-support.c"
             line="153">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>
        <source-position filename="src/libebackend/e-oauth2-support.h"
                         line="87"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-oauth2-support.c"
               line="168">%TRUE on success, %FALSE on failure</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="support" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="155">an #EOAuth2Support</doc>
            <type name="OAuth2Support" c:type="EOAuth2Support*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="156">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="157">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"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="158">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"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="159">return location for the token expiry, or %NULL</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
    </interface>
    <record name="OAuth2SupportInterface"
            c:type="EOAuth2SupportInterface"
            glib:is-gtype-struct-for="OAuth2Support"
            version="3.8">
      <source-position filename="src/libebackend/e-oauth2-support.h"
                       line="84"/>
      <field name="parent_interface" readable="0" private="1">
        <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
      </field>
      <field name="get_access_token_sync">
        <callback name="get_access_token_sync" throws="1">
          <source-position filename="src/libebackend/e-oauth2-support.h"
                           line="64"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="168">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="support" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="155">an #EOAuth2Support</doc>
              <type name="OAuth2Support" c:type="EOAuth2Support*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="156">an #ESource</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="157">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"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="158">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"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="159">return location for the token expiry, or %NULL</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_access_token">
        <callback name="get_access_token">
          <source-position filename="src/libebackend/e-oauth2-support.h"
                           line="73"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="support" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="195">an #EOAuth2Support</doc>
              <type name="OAuth2Support" c:type="EOAuth2Support*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="196">an #ESource</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
            <parameter name="cancellable"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="197">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"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="198">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"
                       nullable="1"
                       allow-none="1"
                       closure="4">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="199">data to pass to the callback function</doc>
              <type name="gpointer" c:type="gpointer"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="get_access_token_finish">
        <callback name="get_access_token_finish" throws="1">
          <source-position filename="src/libebackend/e-oauth2-support.h"
                           line="78"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-oauth2-support.c"
                 line="242">%TRUE on success, %FALSE on failure</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="support" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="231">an #EOAuth2Support</doc>
              <type name="OAuth2Support" c:type="EOAuth2Support*"/>
            </parameter>
            <parameter name="result" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="232">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"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="233">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"
                   filename="src/libebackend/e-oauth2-support.c"
                   line="234">return location for the token expiry, or %NULL</doc>
              <type name="gint" c:type="gint*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <function-macro name="OFFLINE_LISTENER"
                    c:identifier="E_OFFLINE_LISTENER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-offline-listener.h"
                       line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="OFFLINE_LISTENER_CLASS"
                    c:identifier="E_OFFLINE_LISTENER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-offline-listener.h"
                       line="37"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="OFFLINE_LISTENER_GET_CLASS"
                    c:identifier="E_OFFLINE_LISTENER_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-offline-listener.h"
                       line="46"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <enumeration name="OfflineState"
                 version="3.26"
                 glib:type-name="EOfflineState"
                 glib:get-type="e_offline_state_get_type"
                 c:type="EOfflineState">
      <doc xml:space="preserve"
           filename="src/libebackend/e-backend-enums.h"
           line="85">Defines offline state of an object. Locally changed objects require
synchronization with their remote storage.</doc>
      <member name="unknown"
              value="-1"
              c:identifier="E_OFFLINE_STATE_UNKNOWN"
              glib:nick="unknown">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="87">Unknown offline state.</doc>
      </member>
      <member name="synced"
              value="0"
              c:identifier="E_OFFLINE_STATE_SYNCED"
              glib:nick="synced">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="88">The object if synchnized with no local changes.</doc>
      </member>
      <member name="locally_created"
              value="1"
              c:identifier="E_OFFLINE_STATE_LOCALLY_CREATED"
              glib:nick="locally-created">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="89">The object is locally created.</doc>
      </member>
      <member name="locally_modified"
              value="2"
              c:identifier="E_OFFLINE_STATE_LOCALLY_MODIFIED"
              glib:nick="locally-modified">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="90">The object is locally modified.</doc>
      </member>
      <member name="locally_deleted"
              value="3"
              c:identifier="E_OFFLINE_STATE_LOCALLY_DELETED"
              glib:nick="locally-deleted">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="91">The object is locally deleted.</doc>
      </member>
    </enumeration>
    <function-macro name="SERVER_SIDE_SOURCE"
                    c:identifier="E_SERVER_SIDE_SOURCE"
                    introspectable="0">
      <source-position filename="src/libebackend/e-server-side-source.h"
                       line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERVER_SIDE_SOURCE_CLASS"
                    c:identifier="E_SERVER_SIDE_SOURCE_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-server-side-source.h"
                       line="33"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERVER_SIDE_SOURCE_CREDENTIALS_PROVIDER"
                    c:identifier="E_SERVER_SIDE_SOURCE_CREDENTIALS_PROVIDER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-server-side-source-credentials-provider.h"
                       line="34"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERVER_SIDE_SOURCE_CREDENTIALS_PROVIDER_CLASS"
                    c:identifier="E_SERVER_SIDE_SOURCE_CREDENTIALS_PROVIDER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-server-side-source-credentials-provider.h"
                       line="37"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERVER_SIDE_SOURCE_CREDENTIALS_PROVIDER_GET_CLASS"
                    c:identifier="E_SERVER_SIDE_SOURCE_CREDENTIALS_PROVIDER_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-server-side-source-credentials-provider.h"
                       line="46"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SERVER_SIDE_SOURCE_GET_CLASS"
                    c:identifier="E_SERVER_SIDE_SOURCE_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-server-side-source.h"
                       line="42"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SOURCE_REGISTRY_SERVER"
                    c:identifier="E_SOURCE_REGISTRY_SERVER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-source-registry-server.h"
                       line="35"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SOURCE_REGISTRY_SERVER_CLASS"
                    c:identifier="E_SOURCE_REGISTRY_SERVER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-source-registry-server.h"
                       line="38"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SOURCE_REGISTRY_SERVER_GET_CLASS"
                    c:identifier="E_SOURCE_REGISTRY_SERVER_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-source-registry-server.h"
                       line="47"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="SOURCE_REGISTRY_SERVER_OBJECT_PATH"
              value="/org/gnome/evolution/dataserver/SourceManager"
              c:type="E_SOURCE_REGISTRY_SERVER_OBJECT_PATH"
              version="3.6">
      <doc xml:space="preserve"
           filename="src/libebackend/e-source-registry-server.h"
           line="52">D-Bus object path of the data source server.</doc>
      <source-position filename="src/libebackend/e-source-registry-server.h"
                       line="58"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <function-macro name="SUBPROCESS_FACTORY"
                    c:identifier="E_SUBPROCESS_FACTORY"
                    introspectable="0">
      <source-position filename="src/libebackend/e-subprocess-factory.h"
                       line="29"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SUBPROCESS_FACTORY_CLASS"
                    c:identifier="E_SUBPROCESS_FACTORY_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-subprocess-factory.h"
                       line="32"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SUBPROCESS_FACTORY_GET_CLASS"
                    c:identifier="E_SUBPROCESS_FACTORY_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-subprocess-factory.h"
                       line="41"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="ServerSideSource"
           c:symbol-prefix="server_side_source"
           c:type="EServerSideSource"
           version="3.6"
           parent="EDataServer.Source"
           glib:type-name="EServerSideSource"
           glib:get-type="e_server_side_source_get_type"
           glib:type-struct="ServerSideSourceClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-server-side-source.h"
           line="53">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-server-side-source.h"
                       line="69"/>
      <implements name="Gio.Initable"/>
      <implements name="Gio.ProxyResolver"/>
      <constructor name="new"
                   c:identifier="e_server_side_source_new"
                   version="3.6"
                   throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="1875">Creates a new #EServerSideSource which belongs to @server.  If @file
is non-%NULL and points to an existing file, the #EServerSideSource is
initialized from the file content.  If a read error occurs or the file
contains syntax errors, the function sets @error and returns %NULL.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="79"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="1886">a new #EServerSideSource, or %NULL</doc>
          <type name="EDataServer.Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="1877">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="1878">a #GFile, or %NULL</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </constructor>
      <constructor name="new_memory_only"
                   c:identifier="e_server_side_source_new_memory_only"
                   version="3.6"
                   throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="1925">Creates a memory-only #EServerSideSource which belongs to @server.
No on-disk key file is created for this data source, so it will not
be remembered across sessions.

Data source collections are often populated with memory-only data
sources to serve as proxies for resources discovered on a remote server.
These data sources are usually neither #EServerSideSource:writable nor
#EServerSideSource:removable by clients, at least not directly.

If an error occurs while instantiating the #EServerSideSource, the
function sets @error and returns %NULL.  Although at this time there
are no known error conditions for memory-only data sources.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="82"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="1944">a new memory-only #EServerSideSource, or %NULL</doc>
          <type name="EDataServer.Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="1927">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="1928">a unique identifier, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="get_user_dir"
                c:identifier="e_server_side_source_get_user_dir"
                version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="1766">Returns the directory where user-specific data source files are stored.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="1771">the user-specific data source directory</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
      </function>
      <function name="new_user_file"
                c:identifier="e_server_side_source_new_user_file"
                version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="1789">Generates a unique file name for a new user-specific data source.
If @uid is non-%NULL it will be used in the basename of the file,
otherwise a unique basename will be generated using e_util_generate_uid().

The returned #GFile can then be passed to e_server_side_source_new().
Unreference the #GFile with g_object_unref() when finished with it.

Note the data source file itself is not created here, only its name.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="74"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="1802">the #GFile for a new data source</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="1791">unique identifier for a data source, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="uid_from_file"
                c:identifier="e_server_side_source_uid_from_file"
                version="3.6"
                throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="1834">Extracts a unique identity string from the base name of @file.
If the base name of @file is missing a '.source' extension, the
function sets @error and returns %NULL.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="76"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="1843">the unique identity string for @file, or %NULL</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="1836">a #GFile for a data source</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
        </parameters>
      </function>
      <method name="get_exported"
              c:identifier="e_server_side_source_get_exported"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2121">Returns whether @source has been exported over D-Bus.

The function returns %FALSE after @source is initially created, %TRUE
after passing @source uid to e_source_registry_server_ref_source() (provided
that @source's #ESource:parent is also exported).</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="93"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="2131">whether @source has been exported</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2123">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_file"
              c:identifier="e_server_side_source_get_file"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2060">Returns the #GFile from which data source content is loaded and to
which changes are saved.  Note the @source may not have a #GFile.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="89"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="2067">the #GFile for @source, or %NULL</doc>
          <type name="Gio.File" c:type="GFile*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2062">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_node"
              c:identifier="e_server_side_source_get_node"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2079">Returns the #GNode representing the @source's hierarchical placement,
or %NULL if @source has not been placed in the data source hierarchy.
The data member of the #GNode points back to @source.  This is an easy
way to traverse ancestor and descendant data sources.

Note that accessing other data sources this way is not thread-safe,
and this therefore function may be replaced at some later date.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="90"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="2091">a #GNode, or %NULL</doc>
          <type name="GLib.Node" c:type="GNode*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2081">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_server"
              c:identifier="e_server_side_source_get_server"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2103">Returns the #ESourceRegistryServer to which @source belongs.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="92"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="2109">the #ESourceRegistryServer for @source</doc>
          <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2105">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_write_directory"
              c:identifier="e_server_side_source_get_write_directory"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2159">Returns the local directory path where changes to @source are written.

By default, changes are written to the local directory path returned by
e_server_side_source_get_user_dir(), but an #ECollectionBackend may wish
to override this to use its own private cache directory for data sources
it creates automatically.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="95"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="2170">the directory where changes are written</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2161">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="load"
              c:identifier="e_server_side_source_load"
              version="3.6"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="1972">Reloads data source content from the file pointed to by the
#EServerSideSource:file property.

If the #EServerSideSource:file property is %NULL or the file it points
to does not exist, the function does nothing and returns %TRUE.

If a read error occurs or the file contains syntax errors, the function
sets @error and returns %FALSE.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="1987">%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"
                 filename="src/libebackend/e-server-side-source.c"
                 line="1974">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="1975">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_oauth2_support"
              c:identifier="e_server_side_source_ref_oauth2_support"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2427">Returns the object implementing the #EOAuth2SupportInterface,
or %NULL if @source does not support OAuth 2.0 authentication.

The returned #EOAuth2Support object is referenced for thread-safety.
Unreference the object with g_object_unref() when finished with it.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="113"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source.c"
               line="2437">an #EOAuth2Support object, or %NULL</doc>
          <type name="OAuth2Support" c:type="EOAuth2Support*"/>
        </return-value>
        <parameters>
          <instance-parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2429">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_oauth2_support"
              c:identifier="e_server_side_source_set_oauth2_support"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2449">Indicates whether @source supports OAuth 2.0 authentication.

If @oauth2_support is non-%NULL, the OAuth2Support D-Bus interface is
exported at the object path for @source.  If @oauth2_support is %NULL,
the OAuth2Support D-Bus interface is unexported at the object path for
@source, and any attempt by clients to call
e_source_get_oauth2_access_token() will fail.

Requests for OAuth 2.0 access tokens are forwarded to @oauth2_support,
which implements the #EOAuth2SupportInterface.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="115"/>
        <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"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2451">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
          <parameter name="oauth2_support" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2452">an #EOAuth2Support object, or %NULL</doc>
            <type name="OAuth2Support" c:type="EOAuth2Support*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_remote_creatable"
              c:identifier="e_server_side_source_set_remote_creatable"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2314">Indicates whether @source can be used to create resources on a remote
server.  Typically this is only set to %TRUE for collection sources.

If %TRUE, the RemoteCreatable D-Bus interface is exported at the object
path for @source.  If %FALSE, the RemoteCreatable D-Bus interface is
unexported at the object path for @source, and any attempt by clients
to call e_source_remote_create() will fail.

Unlike the #ESource:removable and #ESource:writable properties, this
is enforced for both clients of the registry D-Bus service and within
the registry D-Bus service itself.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="106"/>
        <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"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2316">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
          <parameter name="remote_creatable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2317">whether to export the RemoteCreatable interface</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_remote_deletable"
              c:identifier="e_server_side_source_set_remote_deletable"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2370">Indicates whether @source can be used to delete resources on a remote
server.  Typically this is only set to %TRUE for sources created by an
#ECollectionBackend to represent a remote resource.

If %TRUE, the RemoteDeletable D-Bus interface is exported at the object
path for @source.  If %FALSE, the RemoteDeletable D-Bus interface is
unexported at the object path for @source, and any attempt by clients
to call e_source_remote_delete() will fail.

Unlike the #ESource:removable and #ESource:writable properties, this
is enforced for both clients of the registry D-Bus server and within
the registry D-Bus service itself.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="109"/>
        <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"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2372">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
          <parameter name="remote_deletable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2373">whether to export the RemoteDeletable interface</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_removable"
              c:identifier="e_server_side_source_set_removable"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2212">Sets whether to allow registry clients to remove @source and its
descendants.  If %TRUE, the Removable D-Bus interface is exported at
the object path for @source.  If %FALSE, the Removable D-Bus interface
is unexported at the object path for @source, and any attempt by clients
to call e_source_remove() will fail.

Note this is only enforced for clients of the registry D-Bus service.
The service itself may remove any data source at any time.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="100"/>
        <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"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2214">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
          <parameter name="removable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2215">whether to export the Removable interface</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_writable"
              c:identifier="e_server_side_source_set_writable"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2263">Sets whether to allow registry clients to alter the content of @source.
If %TRUE, the Writable D-Bus interface is exported at the object path
for @source.  If %FALSE, the Writable D-Bus interface is unexported at
the object path for @source, and any attempt by clients to call
e_source_write() will fail.

Note this is only enforced for clients of the registry D-Bus service.
The service itself can write to any data source at any time.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="103"/>
        <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"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2265">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
          <parameter name="writable" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2266">whether to export the Writable interface</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_write_directory"
              c:identifier="e_server_side_source_set_write_directory"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source.c"
             line="2182">Sets the local directory path where changes to @source are to be written.

By default, changes are written to the local directory path returned by
e_server_side_source_get_user_dir(), but an #ECollectionBackend may wish
to override this to use its own private cache directory for data sources
it creates automatically.</doc>
        <source-position filename="src/libebackend/e-server-side-source.h"
                         line="97"/>
        <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"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2184">an #EServerSideSource</doc>
            <type name="ServerSideSource" c:type="EServerSideSource*"/>
          </instance-parameter>
          <parameter name="write_directory" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source.c"
                 line="2185">the directory where changes are to be written</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <property name="exported" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="file"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Gio.File"/>
      </property>
      <property name="oauth2-support" writable="1" transfer-ownership="none">
        <type name="OAuth2Support"/>
      </property>
      <property name="remote-creatable" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="remote-deletable" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="removable" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="server"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="SourceRegistryServer"/>
      </property>
      <property name="writable" writable="1" transfer-ownership="none">
        <type name="gboolean" c:type="gboolean"/>
      </property>
      <property name="write-directory" writable="1" transfer-ownership="none">
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="EDataServer.Source" c:type="ESource"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ServerSideSourcePrivate"
              c:type="EServerSideSourcePrivate*"/>
      </field>
    </class>
    <record name="ServerSideSourceClass"
            c:type="EServerSideSourceClass"
            glib:is-gtype-struct-for="ServerSideSource">
      <source-position filename="src/libebackend/e-server-side-source.h"
                       line="69"/>
      <field name="parent_class">
        <type name="EDataServer.SourceClass" c:type="ESourceClass"/>
      </field>
    </record>
    <class name="ServerSideSourceCredentialsProvider"
           c:symbol-prefix="server_side_source_credentials_provider"
           c:type="EServerSideSourceCredentialsProvider"
           version="3.16"
           parent="EDataServer.SourceCredentialsProvider"
           glib:type-name="EServerSideSourceCredentialsProvider"
           glib:get-type="e_server_side_source_credentials_provider_get_type"
           glib:type-struct="ServerSideSourceCredentialsProviderClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-server-side-source-credentials-provider.h"
           line="57">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-server-side-source-credentials-provider.h"
                       line="73"/>
      <implements name="EDataServer.Extensible"/>
      <constructor name="new"
                   c:identifier="e_server_side_source_credentials_provider_new"
                   version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-server-side-source-credentials-provider.c"
             line="69">Creates a new #EServerSideSourceCredentialsProvider, which is meant to abstract
credential management for #ESource&lt;!-- --&gt;-s.</doc>
        <source-position filename="src/libebackend/e-server-side-source-credentials-provider.h"
                         line="77"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-server-side-source-credentials-provider.c"
               line="76">a new #EServerSideSourceCredentialsProvider</doc>
          <type name="EDataServer.SourceCredentialsProvider"
                c:type="ESourceCredentialsProvider*"/>
        </return-value>
        <parameters>
          <parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-server-side-source-credentials-provider.c"
                 line="71">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </parameter>
        </parameters>
      </constructor>
      <field name="parent" readable="0" private="1">
        <type name="EDataServer.SourceCredentialsProvider"
              c:type="ESourceCredentialsProvider"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="ServerSideSourceCredentialsProviderPrivate"
              c:type="EServerSideSourceCredentialsProviderPrivate*"/>
      </field>
    </class>
    <record name="ServerSideSourceCredentialsProviderClass"
            c:type="EServerSideSourceCredentialsProviderClass"
            glib:is-gtype-struct-for="ServerSideSourceCredentialsProvider">
      <source-position filename="src/libebackend/e-server-side-source-credentials-provider.h"
                       line="73"/>
      <field name="parent_class">
        <type name="EDataServer.SourceCredentialsProviderClass"
              c:type="ESourceCredentialsProviderClass"/>
      </field>
    </record>
    <record name="ServerSideSourceCredentialsProviderPrivate"
            c:type="EServerSideSourceCredentialsProviderPrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-server-side-source-credentials-provider.h"
                       line="55"/>
    </record>
    <record name="ServerSideSourcePrivate"
            c:type="EServerSideSourcePrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-server-side-source.h"
                       line="51"/>
    </record>
    <bitfield name="SourcePermissionFlags"
              version="3.6"
              glib:type-name="ESourcePermissionFlags"
              glib:get-type="e_source_permission_flags_get_type"
              c:type="ESourcePermissionFlags">
      <doc xml:space="preserve"
           filename="src/libebackend/e-backend-enums.h"
           line="66">Initial permissions for a newly-loaded data source key file.</doc>
      <member name="none"
              value="0"
              c:identifier="E_SOURCE_PERMISSION_NONE"
              glib:nick="none">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="68">The data source gets no initial permissions.</doc>
      </member>
      <member name="writable"
              value="1"
              c:identifier="E_SOURCE_PERMISSION_WRITABLE"
              glib:nick="writable">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="70">The data source is initially writable.</doc>
      </member>
      <member name="removable"
              value="2"
              c:identifier="E_SOURCE_PERMISSION_REMOVABLE"
              glib:nick="removable">
        <doc xml:space="preserve"
             filename="src/libebackend/e-backend-enums.h"
             line="72">The data source is initially removable.</doc>
      </member>
    </bitfield>
    <class name="SourceRegistryServer"
           c:symbol-prefix="source_registry_server"
           c:type="ESourceRegistryServer"
           version="3.6"
           parent="DataFactory"
           glib:type-name="ESourceRegistryServer"
           glib:get-type="e_source_registry_server_get_type"
           glib:type-struct="SourceRegistryServerClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-source-registry-server.h"
           line="76">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-source-registry-server.h"
                       line="108"/>
      <implements name="OAuth2Support"/>
      <implements name="EDataServer.Extensible"/>
      <implements name="Gio.Initable"/>
      <constructor name="new"
                   c:identifier="e_source_registry_server_new"
                   version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1271">Creates a new instance of #ESourceRegistryServer.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="112"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="1276">a new instance of #ESourceRegistryServer</doc>
          <type name="DBusServer" c:type="EDBusServer*"/>
        </return-value>
      </constructor>
      <virtual-method name="files_loaded">
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="97"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="load_error" invoker="load_error" version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1895">Emits the #ESourceRegistryServer::load-error signal.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="94"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1897">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1898">the #GFile that failed to load</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1899">a #GError describing the load error</doc>
            <type name="GLib.Error" c:type="const GError*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="source_added">
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="98"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="source_removed">
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="100"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="tweak_key_file">
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="102"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="key_file" transfer-ownership="none">
            <type name="GLib.KeyFile" c:type="GKeyFile*"/>
          </parameter>
          <parameter name="uid" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="add_source"
              c:identifier="e_source_registry_server_add_source"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1321">Adds @source to @server.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="119"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1323">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1324">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="find_extension"
              c:identifier="e_source_registry_server_find_extension"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1996">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>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="151"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="2022">an #ESource, or %NULL if no match was found</doc>
          <type name="EDataServer.Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1998">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1999">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="extension_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="2000">the extension name to find</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_oauth2_services"
              c:identifier="e_source_registry_server_get_oauth2_services"
              version="3.28">
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="117"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="1309">an #EOAuth2Services instance owned by @server</doc>
          <type name="EDataServer.OAuth2Services" c:type="EOAuth2Services*"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1307">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_sources"
              c:identifier="e_source_registry_server_list_sources"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1941">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 #GList 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>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="148"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="1960">a sorted list of sources</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="EDataServer.Source"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1943">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="extension_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1944">an extension name, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_directory"
              c:identifier="e_source_registry_server_load_directory"
              version="3.6"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1541">Loads data source key files in @path.  Because multiple errors can
occur when loading multiple files, @error is only set if @path can
not be opened.  If a key file fails to load, the error is broadcast
through the #ESourceRegistryServer::load-error signal.

If the #E_SOURCE_PERMISSION_REMOVABLE flag is given, then the @server
will emit signals on the D-Bus interface when key files are created or
deleted in @path.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="125"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="1557">%TRUE if @path was successfully opened, but this
         does not imply the key files were successfully loaded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1543">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1544">the path to the directory to load</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1545">permission flags for files loaded from @path</doc>
            <type name="SourcePermissionFlags"
                  c:type="ESourcePermissionFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_error"
              c:identifier="e_source_registry_server_load_error"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1895">Emits the #ESourceRegistryServer::load-error signal.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="141"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1897">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1898">the #GFile that failed to load</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1899">a #GError describing the load error</doc>
            <type name="GLib.Error" c:type="const GError*"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_file"
              c:identifier="e_source_registry_server_load_file"
              version="3.6"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1789">Creates an #ESource for a native key file and adds it to @server.
If an error occurs, the function returns %NULL and sets @error.

The returned #ESource is referenced for thread-safety.  Unreference
the #ESource with g_object_unref() when finished with it.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="136"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="1802">the newly-added #ESource, or %NULL on error</doc>
          <type name="EDataServer.Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1791">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1792">the data source key file to load</doc>
            <type name="Gio.File" c:type="GFile*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1793">initial permission flags for the data source</doc>
            <type name="SourcePermissionFlags"
                  c:type="ESourcePermissionFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="load_resource"
              c:identifier="e_source_registry_server_load_resource"
              version="3.8"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1662">Loads data source key files from @resource by enumerating the children
at @path and calling e_source_registry_server_load_file() on each child.
Because multiple errors can occur when loading multiple files, @error is
only set if @path is invalid.  If a key file fails to load, the error is
broadcast through the #ESourceRegistryServer::load-error signal.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="130"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="1676">%TRUE if @path was successfully located, but this does not
         imply the key files were successfully loaded</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1664">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="resource" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1665">a #GResource containing data source key files</doc>
            <type name="Gio.Resource" c:type="GResource*"/>
          </parameter>
          <parameter name="path" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1666">the path to the data source key files inside @resource</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1667">permission flags for files loaded from @path</doc>
            <type name="SourcePermissionFlags"
                  c:type="ESourcePermissionFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_backend"
              c:identifier="e_source_registry_server_ref_backend"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="2058">Returns the #ECollectionBackend associated with @source, or %NULL if
there is no #ECollectionBackend associated with @source.

An #ESource is associated with an #ECollectionBackend if the #ESource has
an #ESourceCollection extension, or if it is a hierarchical descendant of
another #ESource which has an #ESourceCollection extension.

The returned #ECollectionBackend is referenced for thread-safety.
Unreference the #ECollectionBackend with g_object_unref() when finished
with it.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="156"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="2074">the #ECollectionBackend for @source, or %NULL</doc>
          <type name="CollectionBackend" c:type="ECollectionBackend*"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="2060">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="2061">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_backend_factory"
              c:identifier="e_source_registry_server_ref_backend_factory"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="2101">Returns the #ECollectionBackendFactory for @source, if available.
If @source does not have an #ESourceCollection extension, or if the
#ESourceCollection extension names an #ESourceBackend:backend-name for
which there is no corresponding #ECollectionBackendFactory, the function
returns %NULL.

The returned #ECollectionBackendFactory is referenced for thread-safety.
Unreference the #ECollectionBackendFactory with g_object_unref() when
finished with it.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="160"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="2116">the #ECollectionBackendFactory for @source,
   or %NULL</doc>
          <type name="CollectionBackendFactory"
                c:type="ECollectionBackendFactory*"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="2103">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="2104">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_credentials_provider"
              c:identifier="e_source_registry_server_ref_credentials_provider"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1286">Returns a referenced #ESourceCredentialsProvider. Unref it with
g_object_unref(), when no longer needed.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="114"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="1293">A referenced #ESourceCredentialsProvider.</doc>
          <type name="EDataServer.SourceCredentialsProvider"
                c:type="ESourceCredentialsProvider*"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1288">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_oauth2_support"
              c:identifier="e_source_registry_server_ref_oauth2_support"
              version="3.40">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="2156">Returns the default #EOAuth2Support implementation, which can be used when
the source doesn't have it overwritten.

Free the returned object with g_object_unref(), when no longer needed.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="163"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="2165">the default #EOAuth2Support,
   or %NULL, when none exists</doc>
          <type name="OAuth2Support" c:type="EOAuth2Support*"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="2158">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_source"
              c:identifier="e_source_registry_server_ref_source"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1917">Looks up an #ESource in @server 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>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="145"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="1927">an #ESource, or %NULL if no match was found</doc>
          <type name="EDataServer.Source" c:type="ESource*"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1919">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1920">a unique identifier string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_source"
              c:identifier="e_source_registry_server_remove_source"
              version="3.6">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1427">Removes @source and all of its descendants from @server.</doc>
        <source-position filename="src/libebackend/e-source-registry-server.h"
                         line="122"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1429">an #ESourceRegistryServer</doc>
            <type name="SourceRegistryServer" c:type="ESourceRegistryServer*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1430">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="DataFactory" c:type="EDataFactory"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SourceRegistryServerPrivate"
              c:type="ESourceRegistryServerPrivate*"/>
      </field>
      <glib:signal name="files-loaded" when="last">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1118">Emitted after all data source key files are loaded on startup.
Extensions can connect to this signal to perform any additional
work prior to running the main loop.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
      <glib:signal name="load-error" when="last">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1099">Emitted when an error occurs while loading or parsing a
data source key file.</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"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1102">the #GFile being loaded</doc>
            <type name="Gio.File"/>
          </parameter>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1103">a #GError describing the error</doc>
            <type name="GLib.Error"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="source-added" when="last">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1134">Emitted when an #EServerSideSource is added to @server.</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"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1137">the newly-added #EServerSideSource</doc>
            <type name="ServerSideSource"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="source-removed" when="last">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1150">Emitted when an #EServerSideSource is removed from @server.</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"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1153">the #EServerSideSource that got removed</doc>
            <type name="ServerSideSource"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="tweak-key-file" when="last" version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-source-registry-server.c"
             line="1166">Emitted from e_source_registry_server_load_file() just prior
to instantiating an #EServerSideSource.  Signal handlers can
tweak the @key_file content as necessary and return %TRUE to
write the modified content back to disk.

For the purposes of tweaking, it's easier to deal with a plain
#GKeyFile than an #ESource instance.  An #ESource, for example,
does not allow key file groups to be removed.

The return value is cumulative.  If any signal handler returns
%TRUE, the @key_file content is written back to disk.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-source-registry-server.c"
               line="1184">%TRUE if @key_file was modified, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="key_file" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1169">a #GKeyFile</doc>
            <type name="GLib.KeyFile"/>
          </parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-source-registry-server.c"
                 line="1170">a unique identifier string for @key_file</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="SourceRegistryServerClass"
            c:type="ESourceRegistryServerClass"
            glib:is-gtype-struct-for="SourceRegistryServer">
      <source-position filename="src/libebackend/e-source-registry-server.h"
                       line="108"/>
      <field name="parent_class">
        <type name="DataFactoryClass" c:type="EDataFactoryClass"/>
      </field>
      <field name="load_error">
        <callback name="load_error">
          <source-position filename="src/libebackend/e-source-registry-server.h"
                           line="94"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-source-registry-server.c"
                   line="1897">an #ESourceRegistryServer</doc>
              <type name="SourceRegistryServer"
                    c:type="ESourceRegistryServer*"/>
            </parameter>
            <parameter name="file" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-source-registry-server.c"
                   line="1898">the #GFile that failed to load</doc>
              <type name="Gio.File" c:type="GFile*"/>
            </parameter>
            <parameter name="error" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-source-registry-server.c"
                   line="1899">a #GError describing the load error</doc>
              <type name="GLib.Error" c:type="const GError*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="files_loaded">
        <callback name="files_loaded">
          <source-position filename="src/libebackend/e-source-registry-server.h"
                           line="97"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <type name="SourceRegistryServer"
                    c:type="ESourceRegistryServer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="source_added">
        <callback name="source_added">
          <source-position filename="src/libebackend/e-source-registry-server.h"
                           line="98"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <type name="SourceRegistryServer"
                    c:type="ESourceRegistryServer*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="source_removed">
        <callback name="source_removed">
          <source-position filename="src/libebackend/e-source-registry-server.h"
                           line="100"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <type name="SourceRegistryServer"
                    c:type="ESourceRegistryServer*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="tweak_key_file">
        <callback name="tweak_key_file">
          <source-position filename="src/libebackend/e-source-registry-server.h"
                           line="102"/>
          <return-value transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <type name="SourceRegistryServer"
                    c:type="ESourceRegistryServer*"/>
            </parameter>
            <parameter name="key_file" transfer-ownership="none">
              <type name="GLib.KeyFile" c:type="GKeyFile*"/>
            </parameter>
            <parameter name="uid" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="reserved">
        <array zero-terminated="0" fixed-size="16">
          <type name="gpointer" c:type="gpointer"/>
        </array>
      </field>
    </record>
    <record name="SourceRegistryServerPrivate"
            c:type="ESourceRegistryServerPrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-source-registry-server.h"
                       line="74"/>
    </record>
    <class name="SubprocessFactory"
           c:symbol-prefix="subprocess_factory"
           c:type="ESubprocessFactory"
           version="3.16"
           parent="GObject.Object"
           glib:type-name="ESubprocessFactory"
           glib:get-type="e_subprocess_factory_get_type"
           glib:type-struct="SubprocessFactoryClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-subprocess-factory.h"
           line="52">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-subprocess-factory.h"
                       line="85"/>
      <implements name="Gio.Initable"/>
      <function name="construct_path"
                c:identifier="e_subprocess_factory_construct_path"
                version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-subprocess-factory.c"
             line="334">Returns a new and unique object path for a D-Bus interface based
in the data object path prefix of the @subprocess_factory</doc>
        <source-position filename="src/libebackend/e-subprocess-factory.h"
                         line="109"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-subprocess-factory.c"
               line="340">a newly allocated string, representing the object path for
         the D-Bus interface.

This function is here for a lack of a better place</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
      </function>
      <virtual-method name="backend_closed">
        <source-position filename="src/libebackend/e-subprocess-factory.h"
                         line="82"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="subprocess_factory"
                              transfer-ownership="none">
            <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
          </instance-parameter>
          <parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="EBackend*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="backend_created">
        <source-position filename="src/libebackend/e-subprocess-factory.h"
                         line="80"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="subprocess_factory"
                              transfer-ownership="none">
            <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
          </instance-parameter>
          <parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="EBackend*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="open_data" throws="1">
        <source-position filename="src/libebackend/e-subprocess-factory.h"
                         line="72"/>
        <return-value transfer-ownership="full">
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="subprocess_factory"
                              transfer-ownership="none">
            <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
          </instance-parameter>
          <parameter name="backend" transfer-ownership="none">
            <type name="Backend" c:type="EBackend*"/>
          </parameter>
          <parameter name="connection" transfer-ownership="none">
            <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
          </parameter>
          <parameter name="data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="call_backends_prepare_shutdown"
              c:identifier="e_subprocess_factory_call_backends_prepare_shutdown"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-subprocess-factory.c"
             line="444">Calls e_backend_prepare_shutdown() for the list of used backends.</doc>
        <source-position filename="src/libebackend/e-subprocess-factory.h"
                         line="115"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="subprocess_factory"
                              transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="446">an #ESubprocessFactory</doc>
            <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_backends_list"
              c:identifier="e_subprocess_factory_get_backends_list"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-subprocess-factory.c"
             line="414">Returns a list of used backends.</doc>
        <source-position filename="src/libebackend/e-subprocess-factory.h"
                         line="117"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-subprocess-factory.c"
               line="420">A #GList that contains a
   list of used backends. The list should be freed by the caller using:
   g_list_free_full (backends, g_object_unref).</doc>
          <type name="GLib.List" c:type="GList*">
            <type name="Backend"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="subprocess_factory"
                              transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="416">an #ESubprocessFactory</doc>
            <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_registry"
              c:identifier="e_subprocess_factory_get_registry"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-subprocess-factory.c"
             line="316">Returns the #ESourceRegistry owned by @subprocess_factory.</doc>
        <source-position filename="src/libebackend/e-subprocess-factory.h"
                         line="98"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-subprocess-factory.c"
               line="322">the #ESourceRegistry</doc>
          <type name="EDataServer.SourceRegistry" c:type="ESourceRegistry*"/>
        </return-value>
        <parameters>
          <instance-parameter name="subprocess_factory"
                              transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="318">an #ESubprocessFactory</doc>
            <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="open_backend"
              c:identifier="e_subprocess_factory_open_backend"
              version="3.16"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-subprocess-factory.c"
             line="358">Returns the #EBackend data D-Bus object path</doc>
        <source-position filename="src/libebackend/e-subprocess-factory.h"
                         line="100"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-subprocess-factory.c"
               line="371">a newly allocated string that represents the #EBackend
         data D-Bus object path.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="subprocess_factory"
                              transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="360">an #ESubprocessFactory</doc>
            <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
          </instance-parameter>
          <parameter name="connection" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="361">a #GDBusConnection</doc>
            <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
          </parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="362">UID of an #ESource to open</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="backend_factory_type_name"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="363">the name of the backend factory type</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="module_filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="364">the name (full-path) of the backend module to be loaded</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="365">a #GDBusInterfaceSkeleton, used to communicate to the subprocess backend</doc>
            <type name="Gio.DBusInterfaceSkeleton"
                  c:type="GDBusInterfaceSkeleton*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="366">a #GCancellable</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="ref_initable_backend"
              c:identifier="e_subprocess_factory_ref_initable_backend"
              version="3.16"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-subprocess-factory.c"
             line="211">Returns either a newly-created or existing #EBackend for #ESource.
The returned #EBackend is referenced for thread-safety and must be
unreferenced with g_object_unref() when finished with it.

If the newly-created backend implements the #GInitable interface, then
g_initable_init() is also called on it using @cancellable and @error.

The @subprocess_factory retains a strong reference to @backend.

If no suitable #EBackendFactory exists, or if the #EBackend fails to
initialize, the function sets @error and returns %NULL.</doc>
        <source-position filename="src/libebackend/e-subprocess-factory.h"
                         line="90"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-subprocess-factory.c"
               line="232">an #EBackend for @source, or %NULL</doc>
          <type name="Backend" c:type="EBackend*"/>
        </return-value>
        <parameters>
          <instance-parameter name="subprocess_factory"
                              transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="213">an #ESubprocessFactory</doc>
            <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="214">UID of an #ESource to open</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="backend_factory_type_name"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="215">the name of the backend factory type</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="module_filename" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="216">the name (full-path) of the backend module to be loaded</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="217">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_backend_callbacks"
              c:identifier="e_subprocess_factory_set_backend_callbacks"
              version="3.16">
        <doc xml:space="preserve"
             filename="src/libebackend/e-subprocess-factory.c"
             line="470">Installs a toggle reference on the backend, that can receive a signal to
shutdown once all client connections are closed.</doc>
        <source-position filename="src/libebackend/e-subprocess-factory.h"
                         line="111"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="subprocess_factory"
                              transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="472">an #ESubprocessFactory</doc>
            <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
          </instance-parameter>
          <parameter name="backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="473">an #EBackend</doc>
            <type name="Backend" c:type="EBackend*"/>
          </parameter>
          <parameter name="proxy" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-subprocess-factory.c"
                 line="474">a #GDBusInterfaceSkeleton, used to communicate to the subprocess backend</doc>
            <type name="Gio.DBusInterfaceSkeleton"
                  c:type="GDBusInterfaceSkeleton*"/>
          </parameter>
        </parameters>
      </method>
      <property name="registry" transfer-ownership="none">
        <type name="EDataServer.SourceRegistry"/>
      </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="SubprocessFactoryPrivate"
              c:type="ESubprocessFactoryPrivate*"/>
      </field>
    </class>
    <record name="SubprocessFactoryClass"
            c:type="ESubprocessFactoryClass"
            glib:is-gtype-struct-for="SubprocessFactory">
      <source-position filename="src/libebackend/e-subprocess-factory.h"
                       line="85"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="ref_backend" introspectable="0">
        <callback name="ref_backend" introspectable="0">
          <source-position filename="src/libebackend/e-subprocess-factory.h"
                           line="69"/>
          <return-value>
            <type name="Backend" c:type="EBackend*"/>
          </return-value>
          <parameters>
            <parameter name="registry" transfer-ownership="none">
              <type name="EDataServer.SourceRegistry"
                    c:type="ESourceRegistry*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
            <parameter name="backend_factory_type_name"
                       transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="open_data">
        <callback name="open_data" throws="1">
          <source-position filename="src/libebackend/e-subprocess-factory.h"
                           line="72"/>
          <return-value transfer-ownership="full">
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="subprocess_factory" transfer-ownership="none">
              <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
            </parameter>
            <parameter name="backend" transfer-ownership="none">
              <type name="Backend" c:type="EBackend*"/>
            </parameter>
            <parameter name="connection" transfer-ownership="none">
              <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
            </parameter>
            <parameter name="data"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <type name="gpointer" c:type="gpointer"/>
            </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="backend_created">
        <callback name="backend_created">
          <source-position filename="src/libebackend/e-subprocess-factory.h"
                           line="80"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="subprocess_factory" transfer-ownership="none">
              <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
            </parameter>
            <parameter name="backend" transfer-ownership="none">
              <type name="Backend" c:type="EBackend*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="backend_closed">
        <callback name="backend_closed">
          <source-position filename="src/libebackend/e-subprocess-factory.h"
                           line="82"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="subprocess_factory" transfer-ownership="none">
              <type name="SubprocessFactory" c:type="ESubprocessFactory*"/>
            </parameter>
            <parameter name="backend" transfer-ownership="none">
              <type name="Backend" c:type="EBackend*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="SubprocessFactoryPrivate"
            c:type="ESubprocessFactoryPrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-subprocess-factory.h"
                       line="50"/>
    </record>
    <function-macro name="USER_PROMPTER"
                    c:identifier="E_USER_PROMPTER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter.h" line="30"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USER_PROMPTER_CLASS"
                    c:identifier="E_USER_PROMPTER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter.h" line="33"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USER_PROMPTER_GET_CLASS"
                    c:identifier="E_USER_PROMPTER_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter.h" line="42"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USER_PROMPTER_SERVER"
                    c:identifier="E_USER_PROMPTER_SERVER"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter-server.h"
                       line="26"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USER_PROMPTER_SERVER_CLASS"
                    c:identifier="E_USER_PROMPTER_SERVER_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter-server.h"
                       line="29"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USER_PROMPTER_SERVER_EXTENSION"
                    c:identifier="E_USER_PROMPTER_SERVER_EXTENSION"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                       line="25"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USER_PROMPTER_SERVER_EXTENSION_CLASS"
                    c:identifier="E_USER_PROMPTER_SERVER_EXTENSION_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                       line="28"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USER_PROMPTER_SERVER_EXTENSION_GET_CLASS"
                    c:identifier="E_USER_PROMPTER_SERVER_EXTENSION_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                       line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="USER_PROMPTER_SERVER_GET_CLASS"
                    c:identifier="E_USER_PROMPTER_SERVER_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-user-prompter-server.h"
                       line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <constant name="USER_PROMPTER_SERVER_OBJECT_PATH"
              value="/org/gnome/evolution/dataserver/UserPrompter"
              c:type="E_USER_PROMPTER_SERVER_OBJECT_PATH"
              version="3.8">
      <doc xml:space="preserve"
           filename="src/libebackend/e-user-prompter-server.h"
           line="43">D-Bus object path of the user prompter.</doc>
      <source-position filename="src/libebackend/e-user-prompter-server.h"
                       line="49"/>
      <type name="utf8" c:type="gchar*"/>
    </constant>
    <class name="UserPrompter"
           c:symbol-prefix="user_prompter"
           c:type="EUserPrompter"
           version="3.8"
           parent="GObject.Object"
           glib:type-name="EUserPrompter"
           glib:get-type="e_user_prompter_get_type"
           glib:type-struct="UserPrompterClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-user-prompter.h"
           line="53">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-user-prompter.h" line="69"/>
      <constructor name="new" c:identifier="e_user_prompter_new" version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter.c"
             line="50">Creates a new instance of #EUserPrompter.</doc>
        <source-position filename="src/libebackend/e-user-prompter.h"
                         line="72"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-user-prompter.c"
               line="55">a new instance of #EUserPrompter</doc>
          <type name="UserPrompter" c:type="EUserPrompter*"/>
        </return-value>
      </constructor>
      <method name="extension_prompt"
              c:identifier="e_user_prompter_extension_prompt"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter.c"
             line="486">Asynchronously prompt a user for a decision on an extension-provided dialog.
The caller usually provides an extension for #EUserPrompterServer, a descendant
of #EUserPrompterServerExtension, which registers itself as a dialog provider.
The extension defines @dialog_name, same as meaning of @in_parameters;
only the extension and the caller know about meaning of these.

When the operation is finished, @callback will be called.  You can then
call e_user_prompter_extension_prompt_finish() to get the result of the operation.
If there is no extension providing given dialog name, the operation finishes with
a G_IO_ERROR, G_IO_ERROR_NOT_FOUND #GError.</doc>
        <source-position filename="src/libebackend/e-user-prompter.h"
                         line="95"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="488">an #EUserPrompter</doc>
            <type name="UserPrompter" c:type="EUserPrompter*"/>
          </instance-parameter>
          <parameter name="dialog_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="489">name of a dialog to invoke</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="in_parameters"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="490">optional parameters to pass to extension; can be %NULL</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="491">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"
                 filename="src/libebackend/e-user-prompter.c"
                 line="492">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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="494">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="extension_prompt_finish"
              c:identifier="e_user_prompter_extension_prompt_finish"
              version="3.8"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter.c"
             line="551">Finishes the operation started with e_user_prompter_extension_prompt().
Caller can provide @out_values to get additional values provided by the extension.
In case the caller is not interested in additional values, it can pass %NULL @out_values.
The @out_values will be cleared first, then any values will be added there.
Only the caller and the extension know about meaning of the result code and
additional values.

If an error occurred, the function sets @error and returns -1. If there is
no extension providing given dialog name, the operation finishes with
a G_IO_ERROR, G_IO_ERROR_NOT_FOUND @error.</doc>
        <source-position filename="src/libebackend/e-user-prompter.h"
                         line="102"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-user-prompter.c"
               line="569">Result code of the prompt, as defined by the extension, or -1 on error.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="553">an #EUserPrompter</doc>
            <type name="UserPrompter" c:type="EUserPrompter*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="554">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_values"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="555">Where to store values from the extension, or %NULL</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="ENamedParameters*"/>
          </parameter>
        </parameters>
      </method>
      <method name="extension_prompt_sync"
              c:identifier="e_user_prompter_extension_prompt_sync"
              version="3.8"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter.c"
             line="599">Synchronously prompt a user for a decision on an extension-provided dialog.
The caller usually provides an extension for #EUserPrompterServer, a descendant
of #EUserPrompterServerExtension, which registers itself as a dialog provider.
The extension defines @dialog_name, same as meaning of @in_parameters;
only the extension and the caller know about meaning of these.

Caller can provide @out_values to get additional values provided by the extension.
In case the caller is not interested in additional values, it can pass %NULL @out_values.
The @out_values will be cleared first, then any values will be added there.
Only the caller and the extension know about meaning of the result code and
additional values.

If an error occurred, the function sets @error and returns -1. If there is
no extension providing given dialog name, the operation finishes with
a G_IO_ERROR, G_IO_ERROR_NOT_FOUND @error.</doc>
        <source-position filename="src/libebackend/e-user-prompter.h"
                         line="107"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-user-prompter.c"
               line="624">Result code of the prompt, as defined by the extension, or -1 on error.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="601">an #EUserPrompter</doc>
            <type name="UserPrompter" c:type="EUserPrompter*"/>
          </instance-parameter>
          <parameter name="dialog_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="602">name of a dialog to invoke</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="in_parameters"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="603">optional parameters to pass to extension; can be %NULL</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="out_values"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="604">Where to store values from the extension, or %NULL</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="ENamedParameters*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="605">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prompt"
              c:identifier="e_user_prompter_prompt"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter.c"
             line="316">Asynchronously prompt a user for a decision.

The @type can be one of "info", "warning", "question" or "error", to include
an icon in the message prompt; anything else results in no icon in the message.

If @button_captions is %NULL or empty list, then only one button is shown in
the prompt, a "Dismiss" button.

When the operation is finished, @callback will be called.  You can then
call e_user_prompter_prompt_finish() to get the result of the operation.</doc>
        <source-position filename="src/libebackend/e-user-prompter.h"
                         line="73"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="318">an #EUserPrompter</doc>
            <type name="UserPrompter" c:type="EUserPrompter*"/>
          </instance-parameter>
          <parameter name="type"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="319">type of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="title"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="320">window title of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="primary_text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="321">primary text of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="secondary_text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="322">secondary text of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="use_markup" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="323">whether both texts are with markup</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="button_captions"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="324">captions of buttons to
   use in the message; can be %NULL</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="326">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="8">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="327">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"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="329">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="prompt_finish"
              c:identifier="e_user_prompter_prompt_finish"
              version="3.8"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter.c"
             line="387">Finishes the operation started with e_user_prompter_prompt().

If an error occurred, the function sets @error and returns -1.</doc>
        <source-position filename="src/libebackend/e-user-prompter.h"
                         line="83"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-user-prompter.c"
               line="397">0-based index of a button being used by a user as a response,
  corresponding to 'button_captions' from e_user_prompter_prompt() call.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="389">an #EUserPrompter</doc>
            <type name="UserPrompter" c:type="EUserPrompter*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="390">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="prompt_sync"
              c:identifier="e_user_prompter_prompt_sync"
              version="3.8"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter.c"
             line="424">Prompts a user for a decision.

The @type can be one of "info", "warning", "question" or "error", to include
an icon in the message prompt; anything else results in no icon in the message.

If @button_captions is %NULL or empty list, then only one button is shown in
the prompt, a "Dismiss" button.

If an error occurred, the function sets @error and returns -1.</doc>
        <source-position filename="src/libebackend/e-user-prompter.h"
                         line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-user-prompter.c"
               line="447">0-based index of a button being used by a user as a response,
  corresponding to @button_captions list.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="prompter" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="426">an #EUserPrompter</doc>
            <type name="UserPrompter" c:type="EUserPrompter*"/>
          </instance-parameter>
          <parameter name="type"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="427">type of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="title"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="428">window title of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="primary_text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="429">primary text of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="secondary_text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="430">secondary text of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="use_markup" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="431">whether both texts are with markup</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="button_captions"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="432">captions of buttons to
   use in the message; can be %NULL</doc>
            <type name="GLib.List" c:type="GList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter.c"
                 line="434">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="UserPrompterPrivate" c:type="EUserPrompterPrivate*"/>
      </field>
    </class>
    <record name="UserPrompterClass"
            c:type="EUserPrompterClass"
            glib:is-gtype-struct-for="UserPrompter">
      <source-position filename="src/libebackend/e-user-prompter.h" line="69"/>
      <field name="parent">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
    </record>
    <record name="UserPrompterPrivate"
            c:type="EUserPrompterPrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-user-prompter.h" line="51"/>
    </record>
    <class name="UserPrompterServer"
           c:symbol-prefix="user_prompter_server"
           c:type="EUserPrompterServer"
           version="3.8"
           parent="DBusServer"
           glib:type-name="EUserPrompterServer"
           glib:get-type="e_user_prompter_server_get_type"
           glib:type-struct="UserPrompterServerClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-user-prompter-server.h"
           line="59">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-user-prompter-server.h"
                       line="85"/>
      <implements name="EDataServer.Extensible"/>
      <constructor name="new"
                   c:identifier="e_user_prompter_server_new"
                   version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter-server.c"
             line="468">Creates a new instance of #EUserPrompterServer.</doc>
        <source-position filename="src/libebackend/e-user-prompter-server.h"
                         line="88"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/libebackend/e-user-prompter-server.c"
               line="473">a new instance of #EUserPrompterServer</doc>
          <type name="DBusServer" c:type="EDBusServer*"/>
        </return-value>
      </constructor>
      <virtual-method name="prompt" introspectable="0">
        <source-position filename="src/libebackend/e-user-prompter-server.h"
                         line="77"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <type name="UserPrompterServer" c:type="EUserPrompterServer*"/>
          </instance-parameter>
          <parameter name="id" transfer-ownership="none">
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="title" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="primary_text" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="secondary_text" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="use_markup" transfer-ownership="none">
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="button_captions" transfer-ownership="none">
            <type name="GLib.SList" c:type="const GSList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="register"
              c:identifier="e_user_prompter_server_register"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter-server.c"
             line="546">Registers @extension as a provider of @dialog_name dialog. The names
are compared case sensitively and two extensions cannot provide
the same dialog. If the function succeeds, then it adds its own
reference on the @extension.

Extensions providing multiple dialogs call this function multiple
times, for each dialog name separately.</doc>
        <source-position filename="src/libebackend/e-user-prompter-server.h"
                         line="94"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-user-prompter-server.c"
               line="560">Whether properly registered @extension</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="548">an #EUserPrompterServer</doc>
            <type name="UserPrompterServer" c:type="EUserPrompterServer*"/>
          </instance-parameter>
          <parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="549">an #EUserPrompterServerExtension descendant</doc>
            <type name="EDataServer.Extension" c:type="EExtension*"/>
          </parameter>
          <parameter name="dialog_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="550">name of a dialog, which the @extensions implement</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="response"
              c:identifier="e_user_prompter_server_response"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter-server.c"
             line="483">Finishes prompt initiated by a "prompt" signal or an extension prompt.
The @response for non-extension prompts is a 0-based index of a button
used to close the prompt.

The @extension_values is ignored for non-extension prompts.</doc>
        <source-position filename="src/libebackend/e-user-prompter-server.h"
                         line="89"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="server" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="485">an #EUserPrompterServer</doc>
            <type name="UserPrompterServer" c:type="EUserPrompterServer*"/>
          </instance-parameter>
          <parameter name="prompt_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="486">Id of a prompt, which was responded</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="response" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="487">Response of the prompt</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="extension_values"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="488">For extension prompts can pass extra return values</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="DBusServer" c:type="EDBusServer"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="UserPrompterServerPrivate"
              c:type="EUserPrompterServerPrivate*"/>
      </field>
      <glib:signal name="prompt" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="prompt_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="420">the id of the prompt</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="type"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="421">type of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="title"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="422">window title of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="primary_text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="423">primary text of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="secondary_text"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="424">secondary text of the prompt; can be %NULL</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="use_markup" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="425">whether both texts are with markup</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
          <parameter name="button_captions"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server.c"
                 line="426">captions of buttons to use in the message;
can be %NULL</doc>
            <array>
              <type name="utf8"/>
            </array>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="UserPrompterServerClass"
            c:type="EUserPrompterServerClass"
            glib:is-gtype-struct-for="UserPrompterServer">
      <source-position filename="src/libebackend/e-user-prompter-server.h"
                       line="85"/>
      <field name="parent_class">
        <type name="DBusServerClass" c:type="EDBusServerClass"/>
      </field>
      <field name="prompt" introspectable="0">
        <callback name="prompt" introspectable="0">
          <source-position filename="src/libebackend/e-user-prompter-server.h"
                           line="77"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="server" transfer-ownership="none">
              <type name="UserPrompterServer" c:type="EUserPrompterServer*"/>
            </parameter>
            <parameter name="id" transfer-ownership="none">
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="type" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="title" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="primary_text" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="secondary_text" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="use_markup" transfer-ownership="none">
              <type name="gboolean" c:type="gboolean"/>
            </parameter>
            <parameter name="button_captions" transfer-ownership="none">
              <type name="GLib.SList" c:type="const GSList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <class name="UserPrompterServerExtension"
           c:symbol-prefix="user_prompter_server_extension"
           c:type="EUserPrompterServerExtension"
           version="3.8"
           parent="EDataServer.Extension"
           abstract="1"
           glib:type-name="EUserPrompterServerExtension"
           glib:get-type="e_user_prompter_server_extension_get_type"
           glib:type-struct="UserPrompterServerExtensionClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-user-prompter-server-extension.h"
           line="51">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                       line="76"/>
      <virtual-method name="prompt" invoker="prompt" version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter-server-extension.c"
             line="101">Instructs extension to show dialog @dialog_name. If it cannot be found,
or any error, then return %FALSE. The caller can pass optional @parameters,
if @extension uses any. Meaning of @parameters is known only to the caller
and to the dialog implementor, it's not interpretted nor checked for correctness
in any way in #EUserPrompterServer. The only limitation of @parameters is that
the array elements are strings.

The @prompt_id is used as an identificator of the prompt itself,
and is used in e_user_prompter_server_extension_response() call,
which finishes the prompt.

Note: The function call should not block main loop, it should
just show dialog and return.</doc>
        <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                         line="72"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-user-prompter-server-extension.c"
               line="122">Whether dialog was found and shown.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="103">an #EUserPrompterServerExtension</doc>
            <type name="UserPrompterServerExtension"
                  c:type="EUserPrompterServerExtension*"/>
          </instance-parameter>
          <parameter name="prompt_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="104">Prompt identificator, which is used in call to e_user_prompter_server_extension_response()</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="dialog_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="105">Name of a dialog to run</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="parameters"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="106">Optional extension parameters for the dialog, as passed by a caller</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="prompt"
              c:identifier="e_user_prompter_server_extension_prompt"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter-server-extension.c"
             line="101">Instructs extension to show dialog @dialog_name. If it cannot be found,
or any error, then return %FALSE. The caller can pass optional @parameters,
if @extension uses any. Meaning of @parameters is known only to the caller
and to the dialog implementor, it's not interpretted nor checked for correctness
in any way in #EUserPrompterServer. The only limitation of @parameters is that
the array elements are strings.

The @prompt_id is used as an identificator of the prompt itself,
and is used in e_user_prompter_server_extension_response() call,
which finishes the prompt.

Note: The function call should not block main loop, it should
just show dialog and return.</doc>
        <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                         line="80"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-user-prompter-server-extension.c"
               line="122">Whether dialog was found and shown.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="extension" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="103">an #EUserPrompterServerExtension</doc>
            <type name="UserPrompterServerExtension"
                  c:type="EUserPrompterServerExtension*"/>
          </instance-parameter>
          <parameter name="prompt_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="104">Prompt identificator, which is used in call to e_user_prompter_server_extension_response()</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="dialog_name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="105">Name of a dialog to run</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="parameters"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="106">Optional extension parameters for the dialog, as passed by a caller</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
        </parameters>
      </method>
      <method name="response"
              c:identifier="e_user_prompter_server_extension_response"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/libebackend/e-user-prompter-server-extension.c"
             line="143">A conveniente wrapper function around e_user_prompter_server_response(),
which ends previous call of e_user_prompter_server_extension_prompt().
The @response and @values is known only to the caller and to the dialog implementor,
it's not interpretted nor checked for correctness in any way in #EUserPrompterServer.
The only limitation of @values is that the array elements are strings.</doc>
        <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                         line="85"/>
        <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"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="145">an #EUserPrompterServerExtension</doc>
            <type name="UserPrompterServerExtension"
                  c:type="EUserPrompterServerExtension*"/>
          </instance-parameter>
          <parameter name="prompt_id" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="146">Prompt identificator</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="response" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="147">Response of the prompt</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="values"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="148">Additional response values, if extension defines any</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="EDataServer.Extension" c:type="EExtension"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="UserPrompterServerExtensionPrivate"
              c:type="EUserPrompterServerExtensionPrivate*"/>
      </field>
    </class>
    <record name="UserPrompterServerExtensionClass"
            c:type="EUserPrompterServerExtensionClass"
            glib:is-gtype-struct-for="UserPrompterServerExtension">
      <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                       line="76"/>
      <field name="parent_class">
        <type name="EDataServer.ExtensionClass" c:type="EExtensionClass"/>
      </field>
      <field name="register_dialogs">
        <callback name="register_dialogs">
          <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                           line="69"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="extension" transfer-ownership="none">
              <type name="EDataServer.Extension" c:type="EExtension*"/>
            </parameter>
            <parameter name="server" transfer-ownership="none">
              <type name="gpointer" c:type="_EUserPrompterServer*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="prompt">
        <callback name="prompt">
          <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                           line="72"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-user-prompter-server-extension.c"
                 line="122">Whether dialog was found and shown.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="extension" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-user-prompter-server-extension.c"
                   line="103">an #EUserPrompterServerExtension</doc>
              <type name="UserPrompterServerExtension"
                    c:type="EUserPrompterServerExtension*"/>
            </parameter>
            <parameter name="prompt_id" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-user-prompter-server-extension.c"
                   line="104">Prompt identificator, which is used in call to e_user_prompter_server_extension_response()</doc>
              <type name="gint" c:type="gint"/>
            </parameter>
            <parameter name="dialog_name" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-user-prompter-server-extension.c"
                   line="105">Name of a dialog to run</doc>
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
            <parameter name="parameters"
                       transfer-ownership="none"
                       nullable="1"
                       allow-none="1">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-user-prompter-server-extension.c"
                   line="106">Optional extension parameters for the dialog, as passed by a caller</doc>
              <type name="EDataServer.NamedParameters"
                    c:type="const ENamedParameters*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="UserPrompterServerExtensionPrivate"
            c:type="EUserPrompterServerExtensionPrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-user-prompter-server-extension.h"
                       line="46"/>
    </record>
    <record name="UserPrompterServerPrivate"
            c:type="EUserPrompterServerPrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-user-prompter-server.h"
                       line="57"/>
    </record>
    <function-macro name="WEBDAV_COLLECTION_BACKEND"
                    c:identifier="E_WEBDAV_COLLECTION_BACKEND"
                    introspectable="0">
      <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                       line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="WEBDAV_COLLECTION_BACKEND_CLASS"
                    c:identifier="E_WEBDAV_COLLECTION_BACKEND_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                       line="34"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="WEBDAV_COLLECTION_BACKEND_GET_CLASS"
                    c:identifier="E_WEBDAV_COLLECTION_BACKEND_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                       line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="WebDAVCollectionBackend"
           c:symbol-prefix="webdav_collection_backend"
           c:type="EWebDAVCollectionBackend"
           version="3.26"
           parent="CollectionBackend"
           glib:type-name="EWebDAVCollectionBackend"
           glib:get-type="e_webdav_collection_backend_get_type"
           glib:type-struct="WebDAVCollectionBackendClass">
      <doc xml:space="preserve"
           filename="src/libebackend/e-webdav-collection-backend.h"
           line="54">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                       line="75"/>
      <virtual-method name="get_resource_id"
                      invoker="get_resource_id"
                      version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-webdav-collection-backend.c"
             line="400">Verifies that the @source is expected here and returns its resource ID,
which is used in call to e_collection_backend_new_child(). It returns %NULL,
when the @source is not part of the backend and should be removed instead.
The default implementation allows all sources, which has %ESourceResource
extension defined.</doc>
        <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                         line="71"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-webdav-collection-backend.c"
               line="411">a resource ID corresponding to @source,
   or %NULL, when the @source should be removed.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="webdav_backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="402">an #EWebDAVCollectionBackend</doc>
            <type name="WebDAVCollectionBackend"
                  c:type="EWebDAVCollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="403">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="is_custom_source"
                      invoker="is_custom_source"
                      version="3.26">
        <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                         line="73"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-webdav-collection-backend.c"
               line="437">%TRUE, when the @source is a custom source, thus it
   should not be removed as an obsolete source; %FALSE to not
   force to keep it. It still can be left, when it's one of
   the WebDAV-discovered sources.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="webdav_backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="434">an #EWebDAVCollectionBackend</doc>
            <type name="WebDAVCollectionBackend"
                  c:type="EWebDAVCollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="435">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="discover_sync"
              c:identifier="e_webdav_collection_backend_discover_sync"
              version="3.26"
              throws="1">
        <doc xml:space="preserve"
             filename="src/libebackend/e-webdav-collection-backend.c"
             line="494">This function is usually called in EBackend::authenticate_sync() implementation
of the descendant, causing discovery of CalDAV and CardDAV sources on given URLs.
If either of @calendar_url and @contacts_url is %NULL, that that part is skipped.
The @calendar_url covers all calendars, memo lists and task lists.

The function also takes care of e_collection_backend_authenticate_children() on success.</doc>
        <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                         line="86"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-webdav-collection-backend.c"
               line="515">an #ESourceAuthenticationResult describing whether discovery on given
   addresses succeeded.</doc>
          <type name="EDataServer.SourceAuthenticationResult"
                c:type="ESourceAuthenticationResult"/>
        </return-value>
        <parameters>
          <instance-parameter name="webdav_backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="496">an #EWebDAVCollectionBackend</doc>
            <type name="WebDAVCollectionBackend"
                  c:type="EWebDAVCollectionBackend*"/>
          </instance-parameter>
          <parameter name="calendar_url"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="497">a URL to search calendars at, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="contacts_url"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="498">a URL to search contacts at, or %NULL</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="credentials" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="499">credentials to use when running the discovery</doc>
            <type name="EDataServer.NamedParameters"
                  c:type="const ENamedParameters*"/>
          </parameter>
          <parameter name="out_certificate_pem"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="500">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"
                     nullable="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="503">optional #GTlsCertificateFlags,
  with certificate error flags when the operation failed with SSL error</doc>
            <type name="Gio.TlsCertificateFlags"
                  c:type="GTlsCertificateFlags*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="505">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_resource_id"
              c:identifier="e_webdav_collection_backend_get_resource_id"
              version="3.26">
        <doc xml:space="preserve"
             filename="src/libebackend/e-webdav-collection-backend.c"
             line="400">Verifies that the @source is expected here and returns its resource ID,
which is used in call to e_collection_backend_new_child(). It returns %NULL,
when the @source is not part of the backend and should be removed instead.
The default implementation allows all sources, which has %ESourceResource
extension defined.</doc>
        <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                         line="79"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-webdav-collection-backend.c"
               line="411">a resource ID corresponding to @source,
   or %NULL, when the @source should be removed.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="webdav_backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="402">an #EWebDAVCollectionBackend</doc>
            <type name="WebDAVCollectionBackend"
                  c:type="EWebDAVCollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="403">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_custom_source"
              c:identifier="e_webdav_collection_backend_is_custom_source"
              version="3.26">
        <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                         line="82"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/libebackend/e-webdav-collection-backend.c"
               line="437">%TRUE, when the @source is a custom source, thus it
   should not be removed as an obsolete source; %FALSE to not
   force to keep it. It still can be left, when it's one of
   the WebDAV-discovered sources.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="webdav_backend" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="434">an #EWebDAVCollectionBackend</doc>
            <type name="WebDAVCollectionBackend"
                  c:type="EWebDAVCollectionBackend*"/>
          </instance-parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="435">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </method>
      <field name="parent" readable="0" private="1">
        <type name="CollectionBackend" c:type="ECollectionBackend"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="WebDAVCollectionBackendPrivate"
              c:type="EWebDAVCollectionBackendPrivate*"/>
      </field>
    </class>
    <record name="WebDAVCollectionBackendClass"
            c:type="EWebDAVCollectionBackendClass"
            glib:is-gtype-struct-for="WebDAVCollectionBackend">
      <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                       line="75"/>
      <field name="parent_class">
        <type name="CollectionBackendClass" c:type="ECollectionBackendClass"/>
      </field>
      <field name="get_resource_id">
        <callback name="get_resource_id">
          <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                           line="71"/>
          <return-value transfer-ownership="full" nullable="1">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="411">a resource ID corresponding to @source,
   or %NULL, when the @source should be removed.</doc>
            <type name="utf8" c:type="gchar*"/>
          </return-value>
          <parameters>
            <parameter name="webdav_backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-webdav-collection-backend.c"
                   line="402">an #EWebDAVCollectionBackend</doc>
              <type name="WebDAVCollectionBackend"
                    c:type="EWebDAVCollectionBackend*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-webdav-collection-backend.c"
                   line="403">an #ESource</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="is_custom_source">
        <callback name="is_custom_source">
          <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                           line="73"/>
          <return-value transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/libebackend/e-webdav-collection-backend.c"
                 line="437">%TRUE, when the @source is a custom source, thus it
   should not be removed as an obsolete source; %FALSE to not
   force to keep it. It still can be left, when it's one of
   the WebDAV-discovered sources.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </return-value>
          <parameters>
            <parameter name="webdav_backend" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-webdav-collection-backend.c"
                   line="434">an #EWebDAVCollectionBackend</doc>
              <type name="WebDAVCollectionBackend"
                    c:type="EWebDAVCollectionBackend*"/>
            </parameter>
            <parameter name="source" transfer-ownership="none">
              <doc xml:space="preserve"
                   filename="src/libebackend/e-webdav-collection-backend.c"
                   line="435">an #ESource</doc>
              <type name="EDataServer.Source" c:type="ESource*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="WebDAVCollectionBackendPrivate"
            c:type="EWebDAVCollectionBackendPrivate"
            disguised="1">
      <source-position filename="src/libebackend/e-webdav-collection-backend.h"
                       line="52"/>
    </record>
    <function name="cache_column_info_free"
              c:identifier="e_cache_column_info_free"
              moved-to="CacheColumnInfo.free"
              version="3.26">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.c"
           line="485">Frees the @info structure, previously allocated with e_cache_column_info_new()
or e_cache_column_info_copy().</doc>
      <source-position filename="src/libebackend/e-cache.h" line="170"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="info"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="487">an #ECacheColumnInfo</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <function name="cache_offline_change_free"
              c:identifier="e_cache_offline_change_free"
              moved-to="CacheOfflineChange.free"
              version="3.26">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.c"
           line="415">Frees the @change structure, previously allocated with e_cache_offline_change_new()
or e_cache_offline_change_copy().</doc>
      <source-position filename="src/libebackend/e-cache.h" line="154"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
      <parameters>
        <parameter name="change"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/libebackend/e-cache.c"
               line="417">an #ECacheOfflineChange</doc>
          <type name="gpointer" c:type="gpointer"/>
        </parameter>
      </parameters>
    </function>
    <docsection name="e-backend">
      <doc xml:space="preserve"
           filename="src/libebackend/e-backend.c"
           line="18">An #EBackend is paired with an #ESource to facilitate performing
actions on the local or remote resource described by the #ESource.

In other words, whereas a certain backend type knows how to talk to a
certain type of server or data store, the #ESource fills in configuration
details such as host name, user name, resource path, etc.

All #EBackend instances are created by an #EBackendFactory.</doc>
    </docsection>
    <docsection name="e-backend-factory">
      <doc xml:space="preserve"
           filename="src/libebackend/e-backend-factory.c"
           line="18">An #EBackendFactory's job is to create an #EBackend instance for a
given #ESource.  #EBackendFactory and #EBackend should be subclassed
together, so that each type of #EBackendFactory creates a unique type
of #EBackend.

Each #EBackendFactory subclass must define a hash key to uniquely
identify itself among other #EBackendFactory subclasses.  #EDataFactory
then services incoming connection requests by deriving a hash key from
the requested #ESource, using the dervied hash key to find an appropriate
#EBackendFactory, and creating an #EBackend instance from that factory
to pair with the requested #ESource.</doc>
    </docsection>
    <docsection name="e-cache">
      <doc xml:space="preserve"
           filename="src/libebackend/e-cache.c"
           line="18">The #ECache is an abstract class which consists of the common
parts which can be used by its descendants. It also allows
storing offline state for the stored objects.

The API is thread safe, with special considerations to be made
around e_cache_lock() and e_cache_unlock() for
the sake of isolating transactions across threads.</doc>
    </docsection>
    <docsection name="e-collection-backend">
      <doc xml:space="preserve"
           filename="src/libebackend/e-collection-backend.c"
           line="18">#ECollectionBackend is a base class for backends which manage a
collection of data sources that collectively represent the resources
on a remote server.  The resources can include any number of private
and shared email stores, calendars and address books.

The backend's job is to synchronize local representations of remote
resources by adding and removing #EServerSideSource instances in an
#ESourceRegistryServer.  If possible the backend should also listen
for notifications of newly-added or deleted resources on the remote
server or else poll the remote server at regular intervals and then
update the data source collection accordingly.

The client is responsible to provide credentials to use to authenticate.</doc>
    </docsection>
    <docsection name="e-collection-backend-factory">
      <doc xml:space="preserve"
           filename="src/libebackend/e-collection-backend-factory.c"
           line="18">#ECollectionBackendFactory is a type of #EBackendFactory for creating
#ECollectionBackend instances.</doc>
    </docsection>
    <docsection name="e-file-cache">
      <doc xml:space="preserve"
           filename="src/libebackend/e-file-cache.c"
           line="21">An #EFileCache is a simple hash table of strings backed by an XML file
for permanent storage.  The XML file is written to disk with every unless
the cache is temporarily frozen with e_file_cache_freeze_changes().</doc>
    </docsection>
    <docsection name="e-oauth2-support">
      <doc xml:space="preserve"
           filename="src/libebackend/e-oauth2-support.c"
           line="18">Support for OAuth 2.0 access tokens is typically provided through
dynamically loaded modules.  The module will provide an extension
class which implements the #EOAuth2SupportInterface, which can be
plugged into all appropriate #EServerSideSource instances through
e_server_side_source_set_oauth2_support().  Incoming requests for
access tokens are then forwarded to the extension providing OAuth
2.0 support through e_oauth2_support_get_access_token().</doc>
    </docsection>
    <docsection name="e-offline-listener">
      <doc xml:space="preserve"
           filename="src/libebackend/e-offline-listener.c"
           line="21">An #EOfflineListener basically just tracks Evolution's online/offline
state and emits an #EOfflineListener:changed signal when a state change
is detected.

This class is highly Evolution-centric and for that reason has been
deprecated.  Use #GNetworkMonitor instead.</doc>
    </docsection>
    <docsection name="e-server-side-source">
      <doc xml:space="preserve"
           filename="src/libebackend/e-server-side-source.c"
           line="18">An #EServerSideSource is an #ESource with some additional capabilities
exclusive to the registry D-Bus service.</doc>
    </docsection>
    <docsection name="e-source-registry-server">
      <doc xml:space="preserve"
           filename="src/libebackend/e-source-registry-server.c"
           line="18">The #ESourceRegistryServer is the heart of the registry D-Bus service.
Acting as a global singleton store for all #EServerSideSource instances,
its responsibilities include loading data source content from key files,
exporting data sources to clients over D-Bus, handling content change
requests from clients, and saving content changes back to key files.

It also hosts any number of built-in or 3rd party data source collection
backends, which coordinate with #ESourceRegistryServer to automatically
advertise available data sources on a remote server.</doc>
    </docsection>
    <docsection name="e-user-prompter">
      <doc xml:space="preserve"
           filename="src/libebackend/e-user-prompter.c"
           line="18">Use this to initiate a user prompt from an #EBackend descendant.</doc>
    </docsection>
    <docsection name="e-user-prompter-server">
      <doc xml:space="preserve"
           filename="src/libebackend/e-user-prompter-server.c"
           line="18">The #EUserPrompterServer is the heart of the user prompter D-Bus service.
Acting as a global singleton for user prompts from backends.</doc>
    </docsection>
    <docsection name="e-user-prompter-server-extension">
      <doc xml:space="preserve"
           filename="src/libebackend/e-user-prompter-server-extension.c"
           line="18">The #EUserPrompterServerExtension is a base struct for extension
of EUserPrompterServer, to provide customized or specialized dialog
prompts.

A descendant defines two virtual functions,
the EUserPrompterServerExtensionClass::register_dialogs which is used as
a convenient function, where the descendant registers all the dialogs it
provides on the server with e_user_prompter_server_register().

The next function is EUserPrompterServerExtensionClass::prompt, which is
used to initiate user prompt. The implementor should not block main thread
with this function, because this is treated fully asynchronously.
User's response is passed to the server with
e_user_prompter_server_extension_response() call.</doc>
    </docsection>
    <function name="sqlite3_vfs_init"
              c:identifier="e_sqlite3_vfs_init"
              version="3.2">
      <source-position filename="src/libebackend/e-sqlite3-vfs.h" line="26"/>
      <return-value transfer-ownership="none">
        <type name="none" c:type="void"/>
      </return-value>
    </function>
  </namespace>
</repository>
