<?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="EBookContacts" version="1.2"/>
  <include name="EDataServer" version="1.2"/>
  <include name="GLib" version="2.0"/>
  <include name="GObject" version="2.0"/>
  <include name="Gio" version="2.0"/>
  <include name="libxml2" version="2.0"/>
  <package name="libebook-1.2"/>
  <c:include name="libebook/libebook.h"/>
  <namespace name="EBook"
             version="1.2"
             shared-library="libebook-contacts-1.2.so.1,libedata-book-1.2.so.25,libebook-1.2.so.16,libedataserver-1.2.so.20"
             c:identifier-prefixes="E"
             c:symbol-prefixes="e">
    <class name="BookClient"
           c:symbol-prefix="book_client"
           c:type="EBookClient"
           version="3.2"
           parent="EDataServer.Client"
           glib:type-name="EBookClient"
           glib:get-type="e_book_client_get_type"
           glib:type-struct="BookClientClass">
      <doc xml:space="preserve">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <implements name="Gio.AsyncInitable"/>
      <implements name="Gio.Initable"/>
      <constructor name="new"
                   c:identifier="e_book_client_new"
                   version="3.2"
                   deprecated="1"
                   deprecated-version="3.8"
                   throws="1">
        <doc xml:space="preserve">Creates a new #EBookClient corresponding to the given source.  There are
only two operations that are valid on this book at this point:
e_client_open(), and e_client_remove().</doc>
        <doc-deprecated xml:space="preserve">It covertly makes synchronous D-Bus calls, with no
                 way to cancel.  Use e_book_client_connect() instead,
                 which combines e_book_client_new() and e_client_open()
                 into one step.</doc-deprecated>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new but unopened #EBookClient.</doc>
          <type name="BookClient" c:type="EBookClient*"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">An #ESource pointer</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
        </parameters>
      </constructor>
      <function name="connect"
                c:identifier="e_book_client_connect"
                version="3.8">
        <doc xml:space="preserve">Asynchronously creates a new #EBookClient for @source.

The @wait_for_connected_seconds argument had been added since 3.16,
to let the caller decide how long to wait for the backend to fully
connect to its (possibly remote) data store. This is required due
to a change in the authentication process, which is fully asynchronous
and done on the client side, while not every client is supposed to
response to authentication requests. In case the backend will not connect
within the set interval, then it is opened in an offline mode. A special
value -1 can be used to not wait for the connected state at all.

Unlike with e_book_client_new(), there is no need to call e_client_open()
after obtaining the #EBookClient.

When the operation is finished, @callback will be called.  You can then
call e_book_client_connect_finish() to get the result of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="wait_for_connected_seconds"
                     transfer-ownership="none">
            <doc xml:space="preserve">timeout, in seconds, to wait for the backend to be fully connected</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request
           is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="connect_direct"
                c:identifier="e_book_client_connect_direct"
                version="3.12">
        <doc xml:space="preserve">Like e_book_client_connect(), except creates the book client for
direct read access to the underlying addressbook.

When the operation is finished, @callback will be called.  You can then
call e_book_client_connect_direct_finish() to get the result of the operation.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="wait_for_connected_seconds"
                     transfer-ownership="none">
            <doc xml:space="preserve">timeout, in seconds, to wait for the backend to be fully connected</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve">a #GAsyncReadyCallback to call when the request
           is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">data to pass to the callback function</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </function>
      <function name="connect_direct_finish"
                c:identifier="e_book_client_connect_direct_finish"
                version="3.12"
                throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_book_client_connect_direct().
If an error occurs in connecting to the D-Bus service, the function sets
@error and returns %NULL.

For error handling convenience, any error message returned by this
function will have a descriptive prefix that includes the display
name of the #ESource passed to e_book_client_connect_direct().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #EBookClient, or %NULL</doc>
          <type name="BookClient" c:type="EClient*"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </function>
      <function name="connect_direct_sync"
                c:identifier="e_book_client_connect_direct_sync"
                version="3.8"
                throws="1">
        <doc xml:space="preserve">Like e_book_client_connect_sync(), except creates the book client for
direct read access to the underlying addressbook.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new but unopened #EBookClient.</doc>
          <type name="BookClient" c:type="EClient*"/>
        </return-value>
        <parameters>
          <parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="EDataServer.SourceRegistry" c:type="ESourceRegistry*"/>
          </parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="wait_for_connected_seconds"
                     transfer-ownership="none">
            <doc xml:space="preserve">timeout, in seconds, to wait for the backend to be fully connected</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="connect_finish"
                c:identifier="e_book_client_connect_finish"
                version="3.8"
                throws="1">
        <doc xml:space="preserve">Finishes the operation started with e_book_client_connect().  If an
error occurs in connecting to the D-Bus service, the function sets
@error and returns %NULL.

For error handling convenience, any error message returned by this
function will have a descriptive prefix that includes the display
name of the #ESource passed to e_book_client_connect().</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #EBookClient, or %NULL</doc>
          <type name="BookClient" c:type="EClient*"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </function>
      <function name="connect_sync"
                c:identifier="e_book_client_connect_sync"
                version="3.8"
                throws="1">
        <doc xml:space="preserve">Creates a new #EBookClient for @source.  If an error occurs, the function
will set @error and return %FALSE.

Unlike with e_book_client_new(), there is no need to call
e_client_open_sync() after obtaining the #EBookClient.

The @wait_for_connected_seconds argument had been added since 3.16,
to let the caller decide how long to wait for the backend to fully
connect to its (possibly remote) data store. This is required due
to a change in the authentication process, which is fully asynchronous
and done on the client side, while not every client is supposed to
response to authentication requests. In case the backend will not connect
within the set interval, then it is opened in an offline mode. A special
value -1 can be used to not wait for the connected state at all.

For error handling convenience, any error message returned by this
function will have a descriptive prefix that includes the display
name of @source.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">a new #EBookClient, or %NULL</doc>
          <type name="BookClient" c:type="EClient*"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="wait_for_connected_seconds"
                     transfer-ownership="none">
            <doc xml:space="preserve">timeout, in seconds, to wait for the backend to be fully connected</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_self"
                c:identifier="e_book_client_get_self"
                version="3.2"
                throws="1">
        <doc xml:space="preserve">Get the #EContact referring to the user of the address book
and set it in @out_contact and @out_client.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, otherwise %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve">an #ESourceRegistry</doc>
            <type name="EDataServer.SourceRegistry" c:type="ESourceRegistry*"/>
          </parameter>
          <parameter name="out_contact"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">an #EContact pointer to set</doc>
            <type name="EBookContacts.Contact" c:type="EContact**"/>
          </parameter>
          <parameter name="out_client"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">an #EBookClient pointer to set</doc>
            <type name="BookClient" c:type="EBookClient**"/>
          </parameter>
        </parameters>
      </function>
      <function name="is_self"
                c:identifier="e_book_client_is_self"
                version="3.2">
        <doc xml:space="preserve">Check if @contact is the user of the address book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @contact is the user, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
        </parameters>
      </function>
      <method name="add_contact"
              c:identifier="e_book_client_add_contact"
              version="3.2">
        <doc xml:space="preserve">Adds @contact to @client.
The call is finished by e_book_client_add_contact_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_contact_finish"
              c:identifier="e_book_client_add_contact_finish"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_add_contact() and
sets @out_added_uid to a UID of a newly added contact.
This string should be freed with g_free().

Note: This is not modifying original #EContact.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_added_uid"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">UID of a newly added contact; can be %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_contact_sync"
              c:identifier="e_book_client_add_contact_sync"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Adds @contact to @client and
sets @out_added_uid to a UID of a newly added contact.
This string should be freed with g_free().

Note: This is not modifying original @contact, thus if it's needed,
then use e_contact_set (contact, E_CONTACT_UID, new_uid).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="out_added_uid"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">UID of a newly added contact; can be %NULL</doc>
            <type name="utf8" c:type="gchar**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_contacts"
              c:identifier="e_book_client_add_contacts"
              version="3.4">
        <doc xml:space="preserve">Adds @contacts to @client.
The call is finished by e_book_client_add_contacts_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contacts" transfer-ownership="none">
            <doc xml:space="preserve">a #GSList of #EContact objects to add</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="add_contacts_finish"
              c:identifier="e_book_client_add_contacts_finish"
              version="3.4"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_add_contacts() and
sets @out_added_uids to the UIDs of newly added contacts if successful.
This #GSList should be freed with e_client_util_free_string_slist().

If any of the contacts cannot be inserted, all of the insertions will be
reverted and this method will return %FALSE.

Note: This is not modifying original #EContact objects.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_added_uids"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">UIDs of
                 newly added contacts; can be %NULL</doc>
            <type name="GLib.SList" c:type="GSList**">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="add_contacts_sync"
              c:identifier="e_book_client_add_contacts_sync"
              version="3.4"
              throws="1">
        <doc xml:space="preserve">Adds @contacts to @client and
sets @out_added_uids to the UIDs of newly added contacts if successful.
This #GSList should be freed with e_client_util_free_string_slist().

If any of the contacts cannot be inserted, all of the insertions will be
reverted and this method will return %FALSE.

Note: This is not modifying original @contacts, thus if it's needed,
then use e_contact_set (contact, E_CONTACT_UID, new_uid).</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contacts" transfer-ownership="none">
            <doc xml:space="preserve">a #GSList of #EContact objects to add</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
          <parameter name="out_added_uids"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">UIDs of newly
                 added contacts; can be %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">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contact"
              c:identifier="e_book_client_get_contact"
              version="3.2">
        <doc xml:space="preserve">Receive #EContact from the @client for the gived @uid.
The call is finished by e_book_client_get_contact_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve">a unique string ID specifying the contact</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contact_finish"
              c:identifier="e_book_client_get_contact_finish"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_get_contact().
If successful, then the @out_contact is set to newly allocated
#EContact, which should be freed with g_object_unref().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_contact"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">an #EContact for previously given uid</doc>
            <type name="EBookContacts.Contact" c:type="EContact**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contact_sync"
              c:identifier="e_book_client_get_contact_sync"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Receive #EContact from the @client for the gived @uid.
If successful, then the @out_contact is set to newly allocated
#EContact, which should be freed with g_object_unref().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve">a unique string ID specifying the contact</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_contact"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">an #EContact for given @uid</doc>
            <type name="EBookContacts.Contact" c:type="EContact**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contacts"
              c:identifier="e_book_client_get_contacts"
              version="3.2">
        <doc xml:space="preserve">Query @client with @sexp, receiving a list of contacts which
matched. The call is finished by e_book_client_get_contacts_finish()
from the @callback.

Note: @sexp can be obtained through #EBookQuery, by converting it
to a string with e_book_query_to_string().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve">an S-expression representing the query</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contacts_finish"
              c:identifier="e_book_client_get_contacts_finish"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_get_contacts().
If successful, then the @out_contacts is set to newly allocated list of
#EContact-s, which should be freed with e_client_util_free_object_slist().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_contacts"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a #GSList
               of matched #EContact-s</doc>
            <type name="GLib.SList" c:type="GSList**">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="get_contacts_sync"
              c:identifier="e_book_client_get_contacts_sync"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Query @client with @sexp, receiving a list of contacts which matched.
If successful, then the @out_contacts is set to newly allocated #GSList of
#EContact-s, which should be freed with e_client_util_free_object_slist().

Note: @sexp can be obtained through #EBookQuery, by converting it
to a string with e_book_query_to_string().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve">an S-expression representing the query</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_contacts"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a #GSList of matched
               #EContact-s</doc>
            <type name="GLib.SList" c:type="GSList**">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contacts_uids"
              c:identifier="e_book_client_get_contacts_uids"
              version="3.2">
        <doc xml:space="preserve">Query @client with @sexp, receiving a list of contacts UIDs which
matched. The call is finished by e_book_client_get_contacts_uids_finish()
from the @callback.

Note: @sexp can be obtained through #EBookQuery, by converting it
to a string with e_book_query_to_string().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve">an S-expression representing the query</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contacts_uids_finish"
              c:identifier="e_book_client_get_contacts_uids_finish"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_get_contacts_uids().
If successful, then the @out_contact_uids is set to newly allocated list
of UID strings, which should be freed with e_client_util_free_string_slist().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_contact_uids"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a #GSList of matched
                   contact UIDs stored as strings</doc>
            <type name="GLib.SList" c:type="GSList**">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="get_contacts_uids_sync"
              c:identifier="e_book_client_get_contacts_uids_sync"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Query @client with @sexp, receiving a list of contacts UIDs which matched.
If successful, then the @out_contact_uids is set to newly allocated list
of UID strings, which should be freed with e_client_util_free_string_slist().

Note: @sexp can be obtained through #EBookQuery, by converting it
to a string with e_book_query_to_string().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve">an S-expression representing the query</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_contact_uids"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">a #GSList of matched
                   contacts UIDs stored as strings</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">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_cursor"
              c:identifier="e_book_client_get_cursor"
              version="3.12">
        <doc xml:space="preserve">Create an #EBookClientCursor.
The call is finished by e_book_client_get_view_finish()
from the @callback.

Note: @sexp can be obtained through #EBookQuery, by converting it
to a string with e_book_query_to_string().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve">an S-expression representing the query</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="sort_fields" transfer-ownership="none">
            <doc xml:space="preserve">an array of #EContactFields to sort the cursor with</doc>
            <type name="EBookContacts.ContactField"
                  c:type="const EContactField*"/>
          </parameter>
          <parameter name="sort_types" transfer-ownership="none">
            <doc xml:space="preserve">an array of #EBookCursorSortTypes to complement @sort_fields</doc>
            <type name="EBookContacts.BookCursorSortType"
                  c:type="const EBookCursorSortType*"/>
          </parameter>
          <parameter name="n_fields" transfer-ownership="none">
            <doc xml:space="preserve">the length of the input @sort_fields and @sort_types arrays</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="6">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_cursor_finish"
              c:identifier="e_book_client_get_cursor_finish"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_get_cursor().
If successful, then the @out_cursor is set to newly create
#EBookClientCursor, the cursor should be freed with g_object_unref()
when no longer needed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_cursor"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">return location for an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_cursor_sync"
              c:identifier="e_book_client_get_cursor_sync"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Create an #EBookClientCursor. If successful, then the @out_cursor is set
to newly allocated #EBookClientCursor, the cursor should be freed with g_object_unref()
when no longer needed.

Note: @sexp can be obtained through #EBookQuery, by converting it
to a string with e_book_query_to_string().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve">an S-expression representing the query</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="sort_fields" transfer-ownership="none">
            <doc xml:space="preserve">an array of #EContactFields to sort the cursor with</doc>
            <type name="EBookContacts.ContactField"
                  c:type="const EContactField*"/>
          </parameter>
          <parameter name="sort_types" transfer-ownership="none">
            <doc xml:space="preserve">an array of #EBookCursorSortTypes to complement @sort_fields</doc>
            <type name="EBookContacts.BookCursorSortType"
                  c:type="const EBookCursorSortType*"/>
          </parameter>
          <parameter name="n_fields" transfer-ownership="none">
            <doc xml:space="preserve">the length of the input @sort_fields and @sort_types arrays</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="out_cursor"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">return location for an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_locale"
              c:identifier="e_book_client_get_locale"
              version="3.12">
        <doc xml:space="preserve">Reports the locale in use for @client. The addressbook might sort contacts
in different orders, or store and compare phone numbers in different ways
depending on the currently set locale.

Locales can change dynamically if systemd decides to change the locale, so
it's important to listen for notifications on the #EBookClient:locale property
if you depend on sorted result lists. Ordered results should be reloaded
after a locale change is detected.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The currently set locale for @client</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_view"
              c:identifier="e_book_client_get_view"
              version="3.2">
        <doc xml:space="preserve">Query @client with @sexp, creating an #EBookClientView.
The call is finished by e_book_client_get_view_finish()
from the @callback.

Note: @sexp can be obtained through #EBookQuery, by converting it
to a string with e_book_query_to_string().</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve">an S-expression representing the query</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_view_finish"
              c:identifier="e_book_client_get_view_finish"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_get_view().
If successful, then the @out_view is set to newly allocated
#EBookClientView, which should be freed with g_object_unref().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_view"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView**"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_view_sync"
              c:identifier="e_book_client_get_view_sync"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Query @client with @sexp, creating an #EBookClientView.
If successful, then the @out_view is set to newly allocated
#EBookClientView, which should be freed with g_object_unref().

Note: @sexp can be obtained through #EBookQuery, by converting it
to a string with e_book_query_to_string().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve">an S-expression representing the query</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="out_view"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full">
            <doc xml:space="preserve">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView**"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contact"
              c:identifier="e_book_client_modify_contact"
              version="3.2">
        <doc xml:space="preserve">Applies the changes made to @contact to the stored version in @client.
The call is finished by e_book_client_modify_contact_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contact_finish"
              c:identifier="e_book_client_modify_contact_finish"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_modify_contact().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contact_sync"
              c:identifier="e_book_client_modify_contact_sync"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Applies the changes made to @contact to the stored version in @client.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contacts"
              c:identifier="e_book_client_modify_contacts"
              version="3.4">
        <doc xml:space="preserve">Applies the changes made to @contacts to the stored versions in @client.
The call is finished by e_book_client_modify_contacts_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contacts" transfer-ownership="none">
            <doc xml:space="preserve">a #GSList of #EContact objects</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contacts_finish"
              c:identifier="e_book_client_modify_contacts_finish"
              version="3.4"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_modify_contacts().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="modify_contacts_sync"
              c:identifier="e_book_client_modify_contacts_sync"
              version="3.4"
              throws="1">
        <doc xml:space="preserve">Applies the changes made to @contacts to the stored versions in @client.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contacts" transfer-ownership="none">
            <doc xml:space="preserve">a #GSList of #EContact objects</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact"
              c:identifier="e_book_client_remove_contact"
              version="3.2">
        <doc xml:space="preserve">Removes @contact from the @client.
The call is finished by e_book_client_remove_contact_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_by_uid"
              c:identifier="e_book_client_remove_contact_by_uid"
              version="3.2">
        <doc xml:space="preserve">Removes contact with @uid from the @client.
The call is finished by e_book_client_remove_contact_by_uid_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve">a UID of a contact to remove</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_by_uid_finish"
              c:identifier="e_book_client_remove_contact_by_uid_finish"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_remove_contact_by_uid().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_by_uid_sync"
              c:identifier="e_book_client_remove_contact_by_uid_sync"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Removes contact with @uid from the @client.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve">a UID of a contact to remove</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_finish"
              c:identifier="e_book_client_remove_contact_finish"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_remove_contact().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contact_sync"
              c:identifier="e_book_client_remove_contact_sync"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Removes @contact from the @client.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contacts"
              c:identifier="e_book_client_remove_contacts"
              version="3.2">
        <doc xml:space="preserve">Removes the contacts with uids from the list @uids from @client.  This is
always more efficient than calling e_book_client_remove_contact() if you
have more than one uid to remove, as some backends can implement it
as a batch request.
The call is finished by e_book_client_remove_contacts_finish()
from the @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uids" transfer-ownership="none">
            <doc xml:space="preserve">a #GSList of UIDs to remove</doc>
            <type name="GLib.SList" c:type="const GSList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contacts_finish"
              c:identifier="e_book_client_remove_contacts_finish"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Finishes previous call of e_book_client_remove_contacts().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_contacts_sync"
              c:identifier="e_book_client_remove_contacts_sync"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Removes the contacts with uids from the list @uids from @client.  This is
always more efficient than calling e_book_client_remove_contact() if you
have more than one uid to remove, as some backends can implement it
as a batch request.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uids" transfer-ownership="none">
            <doc xml:space="preserve">a #GSList of UIDs to remove</doc>
            <type name="GLib.SList" c:type="const GSList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_self"
              c:identifier="e_book_client_set_self"
              version="3.2"
              throws="1">
        <doc xml:space="preserve">Specify that @contact residing in @client is the #EContact that
refers to the user of the address book.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
        </parameters>
      </method>
      <property name="locale" version="3.12" transfer-ownership="none">
        <doc xml:space="preserve">The currently active locale for this addressbook.</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <field name="parent" readable="0" private="1">
        <type name="EDataServer.Client" c:type="EClient"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="BookClientPrivate" c:type="EBookClientPrivate*"/>
      </field>
    </class>
    <record name="BookClientClass"
            c:type="EBookClientClass"
            glib:is-gtype-struct-for="BookClient"
            version="3.2">
      <doc xml:space="preserve">Class structure for the #EBookClient class.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="EDataServer.ClientClass" c:type="EClientClass"/>
      </field>
    </record>
    <class name="BookClientCursor"
           c:symbol-prefix="book_client_cursor"
           c:type="EBookClientCursor"
           version="3.12"
           parent="GObject.Object"
           glib:type-name="EBookClientCursor"
           glib:get-type="e_book_client_cursor_get_type"
           glib:type-struct="BookClientCursorClass">
      <doc xml:space="preserve">Contains only private data.</doc>
      <implements name="Gio.Initable"/>
      <virtual-method name="refresh">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="get_alphabet"
              c:identifier="e_book_client_cursor_get_alphabet"
              version="3.12">
        <doc xml:space="preserve">Fetches the array of displayable labels for the &lt;link linkend="cursor-alphabet"&gt;active alphabet&lt;/link&gt;.

The active alphabet is based on the current locale configuration of the
addressbook, and can be a different alphabet for locales requiring non-Latin
language scripts. These UTF-8 labels are appropriate to display in a user
interface to represent the alphabetic position of the cursor in the user's
native alphabet.

The @underflow, @inflow and @overflow parameters allow one to observe which
indexes Evolution Data Server is using to store words which sort outside
of the alphabet, for instance words from foreign language scripts and
words which start with numeric characters, or other types of character.

While the @underflow and @overflow are for words which sort below or
above the active alphabets, the @inflow index is for words which sort
in between multiple concurrently active alphabets. The active alphabet
array might contain more than one alphabet for locales where it is
very common or expected to have names in Latin script as well as names
in another script.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">
  The array of displayable labels for each index in the active alphabet.</doc>
          <array c:type="gchar**">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="n_labels"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">The number of labels in the active alphabet</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="underflow"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">The underflow index, for any words which sort below the active alphabet</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="inflow"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">The inflow index, for any words which sort between the active alphabets (if there is more than one)</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
          <parameter name="overflow"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">The overflow index, for any words which sort above the active alphabet</doc>
            <type name="gint" c:type="gint*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contact_alphabetic_index"
              c:identifier="e_book_client_cursor_get_contact_alphabetic_index"
              version="3.12">
        <doc xml:space="preserve">Checks which alphabetic index @contact would be sorted
into according to @cursor.

So long as the active #EBookClientCursor:alphabet does
not change, the returned index will be a valid position
in the array of labels returned by e_book_client_cursor_get_alphabet().

If the index returned by this function is needed for
any extended period of time, it should be recalculated
whenever the #EBookClientCursor:alphabet changes.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The alphabetic index of @contact in @cursor.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve">the #EContact to check</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_position"
              c:identifier="e_book_client_cursor_get_position"
              version="3.12">
        <doc xml:space="preserve">Fetches the number of contacts leading up to the current
cursor position, inclusive of the current cursor position.

The position value can be anywhere from 0 to the total
number of contacts plus one. A value of 0 indicates
that the cursor is positioned before the contact list in
the symbolic %E_BOOK_CURSOR_ORIGIN_BEGIN state. If
the position is greater than the total, as returned by
e_book_client_cursor_get_total(), then the cursor is positioned
after the last contact in the symbolic %E_BOOK_CURSOR_ORIGIN_END position.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The current cursor position</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_total"
              c:identifier="e_book_client_cursor_get_total"
              version="3.12">
        <doc xml:space="preserve">Fetches the total number of contacts in the addressbook
which match @cursor's query</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The total number of contacts matching @cursor's query</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_client"
              c:identifier="e_book_client_cursor_ref_client"
              version="3.12">
        <doc xml:space="preserve">Returns the #EBookClientCursor:client associated with @cursor.

The returned #EBookClient is referenced because the cursor
does not keep a strong reference to the client.

Unreference the #EBookClient with g_object_unref() when finished with it.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">an #EBookClient</doc>
          <type name="gpointer" c:type="_EBookClient*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_alphabetic_index"
              c:identifier="e_book_client_cursor_set_alphabetic_index"
              version="3.12">
        <doc xml:space="preserve">Sets the current cursor position to point to an &lt;link linkend="cursor-alphabet"&gt;Alphabetic Index&lt;/link&gt;.

See: e_book_client_cursor_set_alphabetic_index_sync().

This asynchronous call is completed with a call to
e_book_client_cursor_set_alphabetic_index_finish() from the specified @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">the alphabetic index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable to optionally cancel this operation while in progress</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_alphabetic_index_finish"
              c:identifier="e_book_client_cursor_set_alphabetic_index_finish"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Completes an asynchronous call initiated by e_book_client_cursor_set_alphabetic_index().</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, otherwise %FALSE is returned and @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_alphabetic_index_sync"
              c:identifier="e_book_client_cursor_set_alphabetic_index_sync"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Sets the cursor to point to an &lt;link linkend="cursor-alphabet"&gt;Alphabetic Index&lt;/link&gt;.

After setting the alphabetic index, for example the
index for letter 'E', then further calls to e_book_client_cursor_step()
will return results starting with the letter 'E' (or results starting
with the last result in 'D' when navigating through cursor results
in reverse).

The passed index must be a valid index into the alphabet parameters
returned by e_book_client_cursor_get_alphabet().

If this method is called from the same thread context in which
the cursor was created, then the updates to the #EBookClientCursor:position
property are guaranteed to be delivered synchronously upon successful completion
of moving the cursor. Otherwise, notifications will be delivered asynchronously
in the cursor's original thread context.

If this method completes with an %E_CLIENT_ERROR_OUT_OF_SYNC error, it is an
indication that the addressbook has been set into a new locale and it would be
unsafe to set the alphabetic index at this time. If you receive an out of sync
error from this method, then you should wait until a #EBookClientCursor:alphabet
property change notification is delivered and then proceed to load the new
alphabet before trying to set any alphabetic index.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, otherwise %FALSE is returned and @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve">the alphabetic index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable to optionally cancel this operation while in progress</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sexp"
              c:identifier="e_book_client_cursor_set_sexp"
              version="3.12">
        <doc xml:space="preserve">Sets the &lt;link linkend="cursor-search"&gt;Search Expression&lt;/link&gt; for the cursor.

See: e_book_client_cursor_set_sexp_sync().

This asynchronous call is completed with a call to
e_book_client_cursor_set_sexp_finish() from the specified @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve">the new search expression for @cursor</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable to optionally cancel this operation while in progress</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="3">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sexp_finish"
              c:identifier="e_book_client_cursor_set_sexp_finish"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Completes an asynchronous call initiated by e_book_client_cursor_set_sexp(), reporting
whether the new search expression was accepted.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, otherwise %FALSE is returned and @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_sexp_sync"
              c:identifier="e_book_client_cursor_set_sexp_sync"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Sets the &lt;link linkend="cursor-search"&gt;Search Expression&lt;/link&gt; for the cursor.

A side effect of setting the search expression is that the
&lt;link linkend="cursor-pos-total"&gt;position and total&lt;/link&gt;
properties will be updated.

If this method is called from the same thread context in which
the cursor was created, then the updates to the #EBookClientCursor:position
and #EBookClientCursor:total properties are guaranteed to be delivered
synchronously upon successful completion of setting the search expression.
Otherwise, notifications will be delivered asynchronously in the cursor's
original thread context.

If the backend does not support the given search expression,
an %E_CLIENT_ERROR_INVALID_QUERY error will be set.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE on success, otherwise %FALSE is returned and @error is set.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve">the new search expression for @cursor</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable to optionally cancel this operation while in progress</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="step"
              c:identifier="e_book_client_cursor_step"
              version="3.12">
        <doc xml:space="preserve">&lt;link linkend="cursor-iteration"&gt;Steps the cursor through the results&lt;/link&gt; by
a maximum of @count and fetch the results traversed.

See: e_book_client_cursor_step_sync().

This asynchronous call is completed with a call to
e_book_client_cursor_step_finish() from the specified @callback.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">The #EBookCursorStepFlags for this step</doc>
            <type name="EBookContacts.BookCursorStepFlags"
                  c:type="EBookCursorStepFlags"/>
          </parameter>
          <parameter name="origin" transfer-ownership="none">
            <doc xml:space="preserve">The #EBookCursorOrigin from whence to step</doc>
            <type name="EBookContacts.BookCursorOrigin"
                  c:type="EBookCursorOrigin"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve">a positive or negative amount of contacts to try and fetch</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable to optionally cancel this operation while in progress</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="5">
            <doc xml:space="preserve">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data" transfer-ownership="none">
            <doc xml:space="preserve">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="step_finish"
              c:identifier="e_book_client_cursor_step_finish"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">Completes an asynchronous call initiated by e_book_client_cursor_step(), fetching
any contacts which might have been returned by the call.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The number of contacts traversed if successful, otherwise -1 is
returned and @error is set.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_contacts"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">return location for a #GSList of #EContacts</doc>
            <type name="GLib.SList" c:type="GSList**">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="step_sync"
              c:identifier="e_book_client_cursor_step_sync"
              version="3.12"
              throws="1">
        <doc xml:space="preserve">&lt;link linkend="cursor-iteration"&gt;Steps the cursor through the results&lt;/link&gt; by
a maximum of @count and fetch the results traversed.

If @count is negative, then the cursor will move backwards.

If @cursor reaches the beginning or end of the query results, then the
returned list might not contain the amount of desired contacts, or might
return no results if the cursor currently points to the last contact.
Reaching the end of the list is not considered an error condition. Attempts
to step beyond the end of the list after having reached the end of the list
will however trigger an %E_CLIENT_ERROR_QUERY_REFUSED error.

If %E_BOOK_CURSOR_STEP_FETCH is specified in %flags, a pointer to
a %NULL #GSList pointer should be provided for the @results parameter.

If %E_BOOK_CURSOR_STEP_MOVE is specified in %flags, then the cursor's
state will be modified and the &lt;link linkend="cursor-pos-total"&gt;position&lt;/link&gt;
property will be updated as a result.

If this method is called from the same thread context in which
the cursor was created, then the updates to the #EBookClientCursor:position
property are guaranteed to be delivered synchronously upon successful completion
of moving the cursor. Otherwise, notifications will be delivered asynchronously
in the cursor's original thread context.

If this method completes with an %E_CLIENT_ERROR_OUT_OF_SYNC error, it is an
indication that the addressbook has been modified and it would be unsafe to
move the cursor at this time. Any %E_CLIENT_ERROR_OUT_OF_SYNC error is guaranteed
to be followed by an #EBookClientCursor::refresh signal at which point any content
should be reloaded.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The number of contacts traversed if successful, otherwise -1 is
returned and @error is set.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">The #EBookCursorStepFlags for this step</doc>
            <type name="EBookContacts.BookCursorStepFlags"
                  c:type="EBookCursorStepFlags"/>
          </parameter>
          <parameter name="origin" transfer-ownership="none">
            <doc xml:space="preserve">The #EBookCursorOrigin from whence to step</doc>
            <type name="EBookContacts.BookCursorOrigin"
                  c:type="EBookCursorOrigin"/>
          </parameter>
          <parameter name="count" transfer-ownership="none">
            <doc xml:space="preserve">a positive or negative amount of contacts to try and fetch</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
          <parameter name="out_contacts"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve">return location for a #GSList of #EContacts</doc>
            <type name="GLib.SList" c:type="GSList**">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve">a #GCancellable to optionally cancel this operation while in progress</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <property name="alphabet" version="3.12" transfer-ownership="none">
        <doc xml:space="preserve">The currently &lt;link linkend="cursor-alphabet"&gt;active alphabet&lt;/link&gt;.

The value is a %NULL terminated array of strings,
each string is suitable to display a specific letter
in the active alphabet.

Indexes from this array can later be used with
e_book_client_cursor_set_alphabetic_index().

This property will automatically change if the
active locale of the addressbook server changes.

Property change notifications are guaranteed to be
delivered in the #GMainContext which was the thread
default context at cursor creation time.</doc>
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="client"
                version="3.12"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The #EBookClient which this cursor was created for</doc>
        <type name="BookClient"/>
      </property>
      <property name="connection"
                version="3.12"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The #GDBusConnection to the addressbook server.

&lt;note&gt;&lt;para&gt;This is an internal parameter for constructing the
cursor, to construct the cursor use e_book_client_get_cursor().
&lt;/para&gt;&lt;/note&gt;</doc>
        <type name="Gio.DBusConnection"/>
      </property>
      <property name="context"
                version="3.12"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The #GMainContext in which the #EBookClient created this cursor.

&lt;note&gt;&lt;para&gt;This is an internal parameter for constructing the
cursor, to construct the cursor use e_book_client_get_cursor().
&lt;/para&gt;&lt;/note&gt;</doc>
        <type name="GLib.MainContext"/>
      </property>
      <property name="direct-cursor"
                version="3.12"
                introspectable="0"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The direct handle to the #EDataBookCursor for direct read access mode.

&lt;note&gt;&lt;para&gt;This is an internal parameter for constructing the
cursor, to construct the cursor use e_book_client_get_cursor().
&lt;/para&gt;&lt;/note&gt;</doc>
        <type/>
      </property>
      <property name="object-path"
                version="3.12"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The D-Bus object path to find the server side cursor object.

&lt;note&gt;&lt;para&gt;This is an internal parameter for constructing the
cursor, to construct the cursor use e_book_client_get_cursor().
&lt;/para&gt;&lt;/note&gt;</doc>
        <type name="utf8" c:type="gchar*"/>
      </property>
      <property name="position" version="3.12" transfer-ownership="none">
        <doc xml:space="preserve">The current cursor position in the cursor's result list.

More specifically, the cursor position is defined as
the number of contacts leading up to the current
cursor position, inclusive of the current cursor
position.

If the position value is %0, then the cursor is positioned
before the contact list in the symbolic %E_BOOK_CURSOR_ORIGIN_BEGIN
position. If the position value is greater than
#EBookClientCursor:total, this indicates that the cursor is
positioned after the contact list in the symbolic
%E_BOOK_CURSOR_ORIGIN_END position.

Property change notifications are guaranteed to be
delivered in the #GMainContext which was the thread
default context at cursor creation time.</doc>
        <type name="gint" c:type="gint"/>
      </property>
      <property name="sort-fields"
                version="3.12"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <doc xml:space="preserve">The #EContactField names to sort this cursor with

&lt;note&gt;&lt;para&gt;This is an internal parameter for constructing the
cursor, to construct the cursor use e_book_client_get_cursor().
&lt;/para&gt;&lt;/note&gt;</doc>
        <array>
          <type name="utf8"/>
        </array>
      </property>
      <property name="total" version="3.12" transfer-ownership="none">
        <doc xml:space="preserve">The total number of contacts which satisfy the cursor's query.

Property change notifications are guaranteed to be
delivered in the #GMainContext which was the thread
default context at cursor creation time.</doc>
        <type name="gint" c:type="gint"/>
      </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="BookClientCursorPrivate"
              c:type="EBookClientCursorPrivate*"/>
      </field>
      <glib:signal name="refresh" when="last" version="3.12">
        <doc xml:space="preserve">Indicates that the addressbook has been modified and
that any content currently being displayed from the current
cursor position should be reloaded.

This signal is guaranteed to be delivered in the #GMainContext
which was the thread default context at cursor creation time.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="BookClientCursorClass"
            c:type="EBookClientCursorClass"
            glib:is-gtype-struct-for="BookClientCursor"
            version="3.12">
      <doc xml:space="preserve">The cursor class structure.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="refresh">
        <callback name="refresh">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="cursor" transfer-ownership="none">
              <type name="BookClientCursor" c:type="EBookClientCursor*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="BookClientCursorPrivate"
            c:type="EBookClientCursorPrivate"
            disguised="1">
    </record>
    <record name="BookClientPrivate" c:type="EBookClientPrivate" disguised="1">
    </record>
    <class name="BookClientView"
           c:symbol-prefix="book_client_view"
           c:type="EBookClientView"
           version="3.2"
           parent="GObject.Object"
           glib:type-name="EBookClientView"
           glib:get-type="e_book_client_view_get_type"
           glib:type-struct="BookClientViewClass">
      <doc xml:space="preserve">Contains only private data the should be read and manipulated using the
functions below.</doc>
      <implements name="Gio.Initable"/>
      <virtual-method name="complete">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
          <parameter name="error" transfer-ownership="none">
            <type name="GLib.Error" c:type="const GError*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="objects_added" introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
          <parameter name="objects" transfer-ownership="none">
            <type name="GLib.SList" c:type="const GSList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="objects_modified" introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
          <parameter name="objects" transfer-ownership="none">
            <type name="GLib.SList" c:type="const GSList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="objects_removed" introspectable="0">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
          <parameter name="uids" transfer-ownership="none">
            <type name="GLib.SList" c:type="const GSList*">
              <type name="gpointer" c:type="gpointer"/>
            </type>
          </parameter>
        </parameters>
      </virtual-method>
      <virtual-method name="progress">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
          <parameter name="percent" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="message" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </virtual-method>
      <method name="get_client"
              c:identifier="e_book_client_view_get_client"
              deprecated="1"
              deprecated-version="3.10">
        <doc xml:space="preserve">Returns the #EBookClientView:client associated with @client_view.</doc>
        <doc-deprecated xml:space="preserve">Use e_book_client_view_ref_client() instead.</doc-deprecated>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an #EBookClient</doc>
          <type name="gpointer" c:type="_EBookClient*"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_connection"
              c:identifier="e_book_client_view_get_connection"
              version="3.8">
        <doc xml:space="preserve">Returns the #GDBusConnection used to create the D-Bus proxy.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the #GDBusConnection</doc>
          <type name="Gio.DBusConnection" c:type="GDBusConnection*"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_object_path"
              c:identifier="e_book_client_view_get_object_path"
              version="3.8">
        <doc xml:space="preserve">Returns the object path used to create the D-Bus proxy.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">the object path</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_running" c:identifier="e_book_client_view_is_running">
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="ref_client"
              c:identifier="e_book_client_view_ref_client"
              version="3.10"
              introspectable="0">
        <doc xml:space="preserve">Returns the #EBookClientView:client associated with @client_view.

The returned #EBookClient is referenced for thread-safety.  Unreference
the #EBookClient with g_object_unref() when finished with it.</doc>
        <return-value>
          <doc xml:space="preserve">an #EBookClient</doc>
          <type name="gpointer" c:type="_EBookClient*"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_fields_of_interest"
              c:identifier="e_book_client_view_set_fields_of_interest"
              throws="1">
        <doc xml:space="preserve">Client can instruct server to which fields it is interested in only, thus
the server can return less data over the wire. The server can still return
complete objects, this is just a hint to it that the listed fields will
be used only. The UID field is returned always. Initial views has no fields
of interest and using %NULL for @fields_of_interest will unset any previous
changes.

Some backends can use summary information of its cache to create artifical
objects, which will omit stored object parsing. If this cannot be done then
it will simply return object as is stored in the cache.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
          <parameter name="fields_of_interest" transfer-ownership="none">
            <doc xml:space="preserve">List of field names in which
                     the client is interested</doc>
            <type name="GLib.SList" c:type="const GSList*">
              <type name="utf8"/>
            </type>
          </parameter>
        </parameters>
      </method>
      <method name="set_flags"
              c:identifier="e_book_client_view_set_flags"
              version="3.4"
              throws="1">
        <doc xml:space="preserve">Sets the @flags which control the behaviour of @client_view.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve">the #EBookClientViewFlags for @client_view</doc>
            <type name="EBookContacts.BookClientViewFlags"
                  c:type="EBookClientViewFlags"/>
          </parameter>
        </parameters>
      </method>
      <method name="start" c:identifier="e_book_client_view_start" throws="1">
        <doc xml:space="preserve">Tells @client_view to start processing events.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="stop" c:identifier="e_book_client_view_stop" throws="1">
        <doc xml:space="preserve">Tells @client_view to stop processing events.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="client"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="BookClient"/>
      </property>
      <property name="connection"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type name="Gio.DBusConnection"/>
      </property>
      <property name="direct-backend"
                introspectable="0"
                readable="0"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <type/>
      </property>
      <property name="object-path"
                writable="1"
                construct-only="1"
                transfer-ownership="none">
        <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="BookClientViewPrivate" c:type="EBookClientViewPrivate*"/>
      </field>
      <glib:signal name="complete" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="GLib.Error"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="objects-added" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="objects-modified" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="objects-removed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="progress" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="object" transfer-ownership="none">
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="p0" transfer-ownership="none">
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="BookClientViewClass"
            c:type="EBookClientViewClass"
            glib:is-gtype-struct-for="BookClientView"
            version="3.2">
      <doc xml:space="preserve">Class structure for the #EBookClient class.</doc>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="objects_added" introspectable="0">
        <callback name="objects_added" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client_view" transfer-ownership="none">
              <type name="BookClientView" c:type="EBookClientView*"/>
            </parameter>
            <parameter name="objects" transfer-ownership="none">
              <type name="GLib.SList" c:type="const GSList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="objects_modified" introspectable="0">
        <callback name="objects_modified" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client_view" transfer-ownership="none">
              <type name="BookClientView" c:type="EBookClientView*"/>
            </parameter>
            <parameter name="objects" transfer-ownership="none">
              <type name="GLib.SList" c:type="const GSList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="objects_removed" introspectable="0">
        <callback name="objects_removed" introspectable="0">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client_view" transfer-ownership="none">
              <type name="BookClientView" c:type="EBookClientView*"/>
            </parameter>
            <parameter name="uids" transfer-ownership="none">
              <type name="GLib.SList" c:type="const GSList*">
                <type name="gpointer" c:type="gpointer"/>
              </type>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="progress">
        <callback name="progress">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client_view" transfer-ownership="none">
              <type name="BookClientView" c:type="EBookClientView*"/>
            </parameter>
            <parameter name="percent" transfer-ownership="none">
              <type name="guint" c:type="guint"/>
            </parameter>
            <parameter name="message" transfer-ownership="none">
              <type name="utf8" c:type="const gchar*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="complete">
        <callback name="complete">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="client_view" transfer-ownership="none">
              <type name="BookClientView" c:type="EBookClientView*"/>
            </parameter>
            <parameter name="error" transfer-ownership="none">
              <type name="GLib.Error" c:type="const GError*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
    </record>
    <record name="BookClientViewPrivate"
            c:type="EBookClientViewPrivate"
            disguised="1">
    </record>
    <enumeration name="BookStatus"
                 deprecated="1"
                 deprecated-version="3.2"
                 glib:type-name="EBookStatus"
                 glib:get-type="e_book_status_get_type"
                 c:type="EBookStatus">
      <doc xml:space="preserve">Error codes for the #E_BOOK_ERROR error</doc>
      <doc-deprecated xml:space="preserve">Use #EBookClient and it's error codes instead</doc-deprecated>
      <member name="ok"
              value="0"
              c:identifier="E_BOOK_ERROR_OK"
              glib:nick="ok">
      </member>
      <member name="invalid_arg"
              value="1"
              c:identifier="E_BOOK_ERROR_INVALID_ARG"
              glib:nick="invalid-arg">
      </member>
      <member name="busy"
              value="2"
              c:identifier="E_BOOK_ERROR_BUSY"
              glib:nick="busy">
      </member>
      <member name="repository_offline"
              value="3"
              c:identifier="E_BOOK_ERROR_REPOSITORY_OFFLINE"
              glib:nick="repository-offline">
      </member>
      <member name="no_such_book"
              value="4"
              c:identifier="E_BOOK_ERROR_NO_SUCH_BOOK"
              glib:nick="no-such-book">
      </member>
      <member name="no_self_contact"
              value="5"
              c:identifier="E_BOOK_ERROR_NO_SELF_CONTACT"
              glib:nick="no-self-contact">
      </member>
      <member name="source_not_loaded"
              value="6"
              c:identifier="E_BOOK_ERROR_SOURCE_NOT_LOADED"
              glib:nick="source-not-loaded">
      </member>
      <member name="source_already_loaded"
              value="7"
              c:identifier="E_BOOK_ERROR_SOURCE_ALREADY_LOADED"
              glib:nick="source-already-loaded">
      </member>
      <member name="permission_denied"
              value="8"
              c:identifier="E_BOOK_ERROR_PERMISSION_DENIED"
              glib:nick="permission-denied">
      </member>
      <member name="contact_not_found"
              value="9"
              c:identifier="E_BOOK_ERROR_CONTACT_NOT_FOUND"
              glib:nick="contact-not-found">
      </member>
      <member name="contact_id_already_exists"
              value="10"
              c:identifier="E_BOOK_ERROR_CONTACT_ID_ALREADY_EXISTS"
              glib:nick="contact-id-already-exists">
      </member>
      <member name="protocol_not_supported"
              value="11"
              c:identifier="E_BOOK_ERROR_PROTOCOL_NOT_SUPPORTED"
              glib:nick="protocol-not-supported">
      </member>
      <member name="cancelled"
              value="12"
              c:identifier="E_BOOK_ERROR_CANCELLED"
              glib:nick="cancelled">
      </member>
      <member name="could_not_cancel"
              value="13"
              c:identifier="E_BOOK_ERROR_COULD_NOT_CANCEL"
              glib:nick="could-not-cancel">
      </member>
      <member name="authentication_failed"
              value="14"
              c:identifier="E_BOOK_ERROR_AUTHENTICATION_FAILED"
              glib:nick="authentication-failed">
      </member>
      <member name="authentication_required"
              value="15"
              c:identifier="E_BOOK_ERROR_AUTHENTICATION_REQUIRED"
              glib:nick="authentication-required">
      </member>
      <member name="tls_not_available"
              value="16"
              c:identifier="E_BOOK_ERROR_TLS_NOT_AVAILABLE"
              glib:nick="tls-not-available">
      </member>
      <member name="dbus_exception"
              value="17"
              c:identifier="E_BOOK_ERROR_DBUS_EXCEPTION"
              glib:nick="dbus-exception">
      </member>
      <member name="no_such_source"
              value="18"
              c:identifier="E_BOOK_ERROR_NO_SUCH_SOURCE"
              glib:nick="no-such-source">
      </member>
      <member name="offline_unavailable"
              value="19"
              c:identifier="E_BOOK_ERROR_OFFLINE_UNAVAILABLE"
              glib:nick="offline-unavailable">
      </member>
      <member name="other_error"
              value="20"
              c:identifier="E_BOOK_ERROR_OTHER_ERROR"
              glib:nick="other-error">
      </member>
      <member name="invalid_server_version"
              value="21"
              c:identifier="E_BOOK_ERROR_INVALID_SERVER_VERSION"
              glib:nick="invalid-server-version">
      </member>
      <member name="unsupported_authentication_method"
              value="22"
              c:identifier="E_BOOK_ERROR_UNSUPPORTED_AUTHENTICATION_METHOD"
              glib:nick="unsupported-authentication-method">
      </member>
      <member name="no_space"
              value="23"
              c:identifier="E_BOOK_ERROR_NO_SPACE"
              glib:nick="no-space">
      </member>
      <member name="not_supported"
              value="24"
              c:identifier="E_BOOK_ERROR_NOT_SUPPORTED"
              glib:nick="not-supported">
      </member>
    </enumeration>
    <class name="Destination"
           c:symbol-prefix="destination"
           c:type="EDestination"
           parent="GObject.Object"
           glib:type-name="EDestination"
           glib:get-type="e_destination_get_type"
           glib:type-struct="DestinationClass">
      <constructor name="new" c:identifier="e_destination_new">
        <doc xml:space="preserve">Creates a new #EDestination with blank values.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly created #EDestination.</doc>
          <type name="Destination" c:type="EDestination*"/>
        </return-value>
      </constructor>
      <function name="exportv" c:identifier="e_destination_exportv">
        <doc xml:space="preserve">Exports multiple #EDestination elements to a single XML document.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An XML string, allocated with g_malloc.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="destv" transfer-ownership="none">
            <doc xml:space="preserve">a %NULL-terminated array of pointers to #EDestination</doc>
            <type name="Destination" c:type="EDestination**"/>
          </parameter>
        </parameters>
      </function>
      <function name="freev" c:identifier="e_destination_freev">
        <doc xml:space="preserve">Unrefs the elements of @destv and frees @destv itself.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="destv" transfer-ownership="none">
            <doc xml:space="preserve">a %NULL-terminated array of pointers to #EDestination</doc>
            <type name="Destination" c:type="EDestination**"/>
          </parameter>
        </parameters>
      </function>
      <function name="get_textrepv" c:identifier="e_destination_get_textrepv">
        <doc xml:space="preserve">Generates a joint text representation of all the #EDestination
elements in @destv.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">The text representation of @destv.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <parameter name="destv" transfer-ownership="none">
            <doc xml:space="preserve">%NULL-terminated array of pointers to #EDestination</doc>
            <type name="Destination" c:type="EDestination**"/>
          </parameter>
        </parameters>
      </function>
      <function name="import" c:identifier="e_destination_import">
        <doc xml:space="preserve">Creates an #EDestination from an XML document.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An #EDestination, or %NULL if the document was not
well-formed.</doc>
          <type name="Destination" c:type="EDestination*"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">an XML string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <function name="importv" c:identifier="e_destination_importv">
        <doc xml:space="preserve">Creates an array of pointers to #EDestination elements
from an XML document.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A %NULL-terminated array of pointers to
#EDestination elements.</doc>
          <type name="Destination" c:type="EDestination**"/>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve">an XML string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="changed">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="destination" transfer-ownership="none">
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
        </parameters>
      </virtual-method>
      <method name="copy" c:identifier="e_destination_copy">
        <doc xml:space="preserve">Creates a new #EDestination identical to @dest.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">A newly created #EDestination, identical to @dest.</doc>
          <type name="Destination" c:type="EDestination*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="empty" c:identifier="e_destination_empty">
        <doc xml:space="preserve">Checks if @dest is blank.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if @dest is empty, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="equal" c:identifier="e_destination_equal">
        <doc xml:space="preserve">Checks if @a and @b are equal.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if the destinations are equal, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="a" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
          <parameter name="b" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </parameter>
        </parameters>
      </method>
      <method name="export" c:identifier="e_destination_export">
        <doc xml:space="preserve">Exports a destination to an XML document.</doc>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve">An XML string, allocated with g_malloc.</doc>
          <type name="utf8" c:type="gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="export_to_vcard_attribute"
              c:identifier="e_destination_export_to_vcard_attribute">
        <doc xml:space="preserve">Exports the contact information from @dest to parameters
and values in @attr, suitable for an address book.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve">an #EVCardAttribute</doc>
            <type name="EBookContacts.VCardAttribute"
                  c:type="EVCardAttribute*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_address" c:identifier="e_destination_get_address">
        <doc xml:space="preserve">Gets the encoded name and email address, or in the case of lists, the
encoded list of email addresses, from @dest.  The returned string is
suitable for use in an email header, but not for displaying to users.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">an encoded destination string suitable for use in an
         email header, or %NULL if the destination was empty</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_contact" c:identifier="e_destination_get_contact">
        <doc xml:space="preserve">Gets the contact @dest is pointing to, if any.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">An #EContact, or %NULL if none was set.</doc>
          <type name="EBookContacts.Contact" c:type="EContact*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_contact_uid"
              c:identifier="e_destination_get_contact_uid">
        <doc xml:space="preserve">Gets the unique contact ID @dest is pointing to, if any.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A unique contact ID, or %NULL if none was set.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_email" c:identifier="e_destination_get_email">
        <doc xml:space="preserve">Gets the e-mail address of @dest's addressee.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">An e-mail address, or an empty string if none was set.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_email_num" c:identifier="e_destination_get_email_num">
        <doc xml:space="preserve">Gets the index of the e-mail address of the contact that
@dest is pointing to, if any.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The e-mail index, or -1 if none was set.</doc>
          <type name="gint" c:type="gint"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_html_mail_pref"
              c:identifier="e_destination_get_html_mail_pref">
        <doc xml:space="preserve">Check if @dest wants to get mail formatted as HTML.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if destination wants HTML, %FALSE if not.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_name" c:identifier="e_destination_get_name">
        <doc xml:space="preserve">Gets the full name of @dest's addressee, or if the addressee is
a contact list, the name the list was filed under.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">The full name of the addressee, or %NULL if none was set.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_source_uid"
              c:identifier="e_destination_get_source_uid">
        <doc xml:space="preserve">Gets the unique source ID @dest is pointing to, if any. The source
ID specifies which address book @dest's contact came from.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A unique source ID, or %NULL if none was set.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="get_textrep" c:identifier="e_destination_get_textrep">
        <doc xml:space="preserve">Generates a textual representation of @dest, suitable for referring
to the destination during user interaction.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A textual representation of the destination.</doc>
          <type name="utf8" c:type="const gchar*"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
          <parameter name="include_email" transfer-ownership="none">
            <doc xml:space="preserve">whether to include the e-mail address</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="is_auto_recipient"
              c:identifier="e_destination_is_auto_recipient">
        <doc xml:space="preserve">Checks if @dest is flagged as an automatic recipient, meaning
it was not explicitly specified by the user. This can be used
to hide it from some UI elements.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if destination is an auto recipient, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_evolution_list"
              c:identifier="e_destination_is_evolution_list">
        <doc xml:space="preserve">Checks if @dest is a list of addresses.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if destination is a list, %FALSE if it is an individual.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="is_ignored" c:identifier="e_destination_is_ignored">
        <doc xml:space="preserve">Check if @dest is to be ignored.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if this destination should be ignored, else %FALSE.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_get_dests"
              c:identifier="e_destination_list_get_dests"
              version="3.2">
        <doc xml:space="preserve">If @dest is a list, gets recursively list of all destinations.
Everything returned from this function belongs to @dest and
thus should not be freed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A list of elements of type #EDestination, or %NULL.</doc>
          <type name="GLib.List" c:type="const GList*">
            <type name="Destination"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_get_root_dests"
              c:identifier="e_destination_list_get_root_dests"
              version="3.2">
        <doc xml:space="preserve">If @dest is a list, gets the list of EDestinations assigned directly
to @dest.
The list and its elements belong to @dest, and should not be freed.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">A list of elements of type #EDestination, or %NULL.</doc>
          <type name="GLib.List" c:type="const GList*">
            <type name="Destination"/>
          </type>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="list_show_addresses"
              c:identifier="e_destination_list_show_addresses">
        <doc xml:space="preserve">If @dest is a list, checks if the addresses in the list
should be presented to the user during interaction.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve">%TRUE if addresses should be shown, %FALSE otherwise.</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="set_auto_recipient"
              c:identifier="e_destination_set_auto_recipient">
        <doc xml:space="preserve">Sets the flag indicating if @dest is an automatic recipient, meaning
it was not explicitly specified by the user. This can be used
to hide it from some UI elements.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve">the auto recipient flag</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_client"
              c:identifier="e_destination_set_client"
              version="3.2">
        <doc xml:space="preserve">Specify the source @dest's contact comes from. This is useful
if you need to update the contact later.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_contact" c:identifier="e_destination_set_contact">
        <doc xml:space="preserve">Sets @dest to point to one of @contact's e-mail addresses
indicated by @email_num.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="email_num" transfer-ownership="none">
            <doc xml:space="preserve">an email index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_contact_uid"
              c:identifier="e_destination_set_contact_uid">
        <doc xml:space="preserve">Sets @dest to point to one of the contact specified by @uid's e-mail
addresses indicated by @email_num.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve">a unique contact ID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="email_num" transfer-ownership="none">
            <doc xml:space="preserve">an email index</doc>
            <type name="gint" c:type="gint"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_email" c:identifier="e_destination_set_email">
        <doc xml:space="preserve">Sets the e-mail address of @dest's addressee.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="email" transfer-ownership="none">
            <doc xml:space="preserve">the destination's e-mail address</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_html_mail_pref"
              c:identifier="e_destination_set_html_mail_pref">
        <doc xml:space="preserve">Specifies whether @dest wants to get mail formatted as HTML.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve">whether the destination wants HTML mail</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_ignored" c:identifier="e_destination_set_ignored">
        <doc xml:space="preserve">Set the ignore flag on a #EDestination.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="ignored" transfer-ownership="none">
            <doc xml:space="preserve">%TRUE if this #EDestination should be ignored.</doc>
            <type name="gboolean" c:type="gboolean"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_name" c:identifier="e_destination_set_name">
        <doc xml:space="preserve">Sets the full name of @dest's addressee.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve">the destination's full name</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="set_raw" c:identifier="e_destination_set_raw">
        <doc xml:space="preserve">Sets @dest to point to the name and e-mail address resulting from
parsing the supplied string. Useful for user input.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="dest" transfer-ownership="none">
            <doc xml:space="preserve">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="raw" transfer-ownership="none">
            <doc xml:space="preserve">an unparsed string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <field name="object">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv">
        <type name="DestinationPrivate" c:type="EDestinationPrivate*"/>
      </field>
      <glib:signal name="changed" when="last">
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
      </glib:signal>
    </class>
    <record name="DestinationClass"
            c:type="EDestinationClass"
            glib:is-gtype-struct-for="Destination">
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="changed">
        <callback name="changed">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
          <parameters>
            <parameter name="destination" transfer-ownership="none">
              <type name="Destination" c:type="EDestination*"/>
            </parameter>
          </parameters>
        </callback>
      </field>
      <field name="_ebook_reserved1" introspectable="0">
        <callback name="_ebook_reserved1">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved2" introspectable="0">
        <callback name="_ebook_reserved2">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved3" introspectable="0">
        <callback name="_ebook_reserved3">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
      <field name="_ebook_reserved4" introspectable="0">
        <callback name="_ebook_reserved4">
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="DestinationPrivate"
            c:type="EDestinationPrivate"
            disguised="1">
    </record>
    <function name="book_error_quark" c:identifier="e_book_error_quark">
      <return-value transfer-ownership="none">
        <type name="GLib.Quark" c:type="GQuark"/>
      </return-value>
    </function>
  </namespace>
</repository>
