<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="Camel" version="1.2"/>
  <include name="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="libcamel-1.2.so.64,libebook-1.2.so.21,libebook-contacts-1.2.so.4,libedata-book-1.2.so.27,libedataserver-1.2.so.27"
             c:identifier-prefixes="E"
             c:symbol-prefixes="e">
    <function-macro name="BOOK_CLIENT"
                    c:identifier="E_BOOK_CLIENT"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client.h"
                       line="36"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BOOK_CLIENT_CLASS"
                    c:identifier="E_BOOK_CLIENT_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client.h"
                       line="39"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BOOK_CLIENT_CURSOR"
                    c:identifier="E_BOOK_CLIENT_CURSOR"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                       line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BOOK_CLIENT_CURSOR_CLASS"
                    c:identifier="E_BOOK_CLIENT_CURSOR_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                       line="35"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BOOK_CLIENT_CURSOR_GET_CLASS"
                    c:identifier="E_BOOK_CLIENT_CURSOR_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                       line="44"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BOOK_CLIENT_GET_CLASS"
                    c:identifier="E_BOOK_CLIENT_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client.h"
                       line="48"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BOOK_CLIENT_VIEW"
                    c:identifier="E_BOOK_CLIENT_VIEW"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                       line="31"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BOOK_CLIENT_VIEW_CLASS"
                    c:identifier="E_BOOK_CLIENT_VIEW_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                       line="34"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="BOOK_CLIENT_VIEW_GET_CLASS"
                    c:identifier="E_BOOK_CLIENT_VIEW_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                       line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <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"
           filename="src/addressbook/libebook/e-book-client.h"
           line="59">Contains only private data that should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/addressbook/libebook/e-book-client.h"
                       line="83"/>
      <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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="1622">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="332"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="1631">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1624">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="1502">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="90"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1504">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="wait_for_connected_seconds"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1505">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1506">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1507">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1508">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="1791">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="103"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1793">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="wait_for_connected_seconds"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1794">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1795">optional #GCancellable object, or %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1796">a #GAsyncReadyCallback to call when the request is satisfied</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1797">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="1855">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="108"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="1868">a new #EBookClient, or %NULL on error</doc>
          <type name="BookClient" c:type="EClient*"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1857">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="1711">Like e_book_client_connect_sync(), except creates the book client for
direct read access to the underlying addressbook.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="97"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="1722">a new but unopened #EBookClient or %NULL on error.</doc>
          <type name="BookClient" c:type="EClient*"/>
        </return-value>
        <parameters>
          <parameter name="registry" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1713">an #ESourceRegistry</doc>
            <type name="EDataServer.SourceRegistry" c:type="ESourceRegistry*"/>
          </parameter>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1714">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="wait_for_connected_seconds"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1715">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1716">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="1578">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="95"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="1591">a new #EBookClient,
or %NULL on error</doc>
          <type name="BookClient" c:type="EClient*"/>
        </return-value>
        <parameters>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1580">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="1315">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="86"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="1341">a new #EBookClient,
   or %NULL on error</doc>
          <type name="BookClient" c:type="EClient*"/>
        </return-value>
        <parameters>
          <parameter name="source" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1317">an #ESource</doc>
            <type name="EDataServer.Source" c:type="ESource*"/>
          </parameter>
          <parameter name="wait_for_connected_seconds"
                     transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1318">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1319">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="1939">Get the #EContact referring to the user of the address book
and set it in @out_contact and @out_client.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="111"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="1949">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1941">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1942">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="1943">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2063">Check if @contact is the user of the address book.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2069">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2065">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2132">Adds @contact to @client.
The call is finished by e_book_client_add_contact_finish()
from the @callback.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="119"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2134">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2135">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2136">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2137">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2138">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2139">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2181">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="125"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2194">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2183">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2184">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_added_uid"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2185">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2228">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="130"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2244">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2230">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2231">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2232">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="out_added_uid"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2233">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2234">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2310">Adds @contacts to @client.
The call is finished by e_book_client_add_contacts_finish()
from the @callback.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="136"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2312">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contacts" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2313">a #GSList of #EContact objects to add</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2314">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2315">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2316">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2317">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2360">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="142"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2377">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2362">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2363">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2364">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2409">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="147"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2429">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2411">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contacts" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2412">a #GSList of #EContact objects to add</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2413">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="out_added_uids"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2414">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2416">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="contains_email"
              c:identifier="e_book_client_contains_email"
              version="3.44">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3894">Asynchronously checks whether contains an @email_address. When the @email_address
contains multiple addresses, then returns %TRUE when at least one
address exists in the address book.

When the operation is finished, @callback will be called.  You can then
call e_book_client_contains_email_finish() to get the result of the
operation.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="280"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3896">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="email_address" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3897">an email address</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3898">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3899">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3900">user data for the @callback</doc>
            <type name="gpointer" c:type="gpointer"/>
          </parameter>
        </parameters>
      </method>
      <method name="contains_email_finish"
              c:identifier="e_book_client_contains_email_finish"
              version="3.44"
              throws="1">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3944">Finishes previous call of e_book_client_contains_email().</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="285"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="3952">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3946">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3947">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
        </parameters>
      </method>
      <method name="contains_email_sync"
              c:identifier="e_book_client_contains_email_sync"
              throws="1">
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="289"/>
        <return-value transfer-ownership="none">
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="client" transfer-ownership="none">
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="email_address" transfer-ownership="none">
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
        </parameters>
      </method>
      <method name="get_contact"
              c:identifier="e_book_client_get_contact"
              version="3.2">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3271">Receive #EContact from the @client for the gived @uid.
The call is finished by e_book_client_get_contact_finish()
from the @callback.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="234"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3273">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3274">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3275">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3276">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3277">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3317">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="239"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="3328">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3319">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3320">a #GAsyncResult</doc>
            <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
          </parameter>
          <parameter name="out_contact"
                     direction="out"
                     caller-allocates="0"
                     transfer-ownership="full"
                     optional="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3321">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3360">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="244"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="3372">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3362">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3363">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3364">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3365">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3466">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="249"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3468">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3469">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3470">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3471">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3472">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3515">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="254"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="3527">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3517">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3518">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3519">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3559">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="259"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="3575">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3561">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3562">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3563">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3565">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3684">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="264"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3686">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3687">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3688">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3689">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3690">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3733">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="269"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="3745">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3735">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3736">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3737">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3777">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="274"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="3793">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3779">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3780">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3781">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3783">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="4467">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="308"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4469">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4470">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4471">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4472">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4473">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4474">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4475">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4476">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="4512">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="316"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="4524">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4514">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4515">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4516">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="4557">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="320"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="4575">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4559">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4560">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4561">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4562">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4563">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4564">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4565">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"
              glib:get-property="locale"
              version="3.12">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client.c"
             line="4638">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="328"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="4651">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4640">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="4094">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="294"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4096">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4097">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4098">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4099">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4100">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="4143">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="299"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="4154">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4145">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4146">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4147">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="4186">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="303"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="4201">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4188">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4189">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4190">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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="4191">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2529">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="153"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2531">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2532">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2533">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2534">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2535">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2536">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2578">Finishes previous call of e_book_client_modify_contact().</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="159"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2586">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2580">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2581">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2608">Applies the changes made to @contact to the stored version in @client.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="163"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2618">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2610">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2611">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2612">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2613">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2666">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="169"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2668">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contacts" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2669">a #GSList of #EContact objects</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2670">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2671">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2672">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2673">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2716">Finishes previous call of e_book_client_modify_contacts().</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="175"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2724">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2718">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2719">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2746">Applies the changes made to @contacts to the stored versions in @client.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="179"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2756">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2748">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contacts" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2749">a #GSList of #EContact objects</doc>
            <type name="GLib.SList" c:type="GSList*">
              <type name="EBookContacts.Contact"/>
            </type>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2750">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2751">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2831">Removes @contact from the @client.
The call is finished by e_book_client_remove_contact_finish()
from the @callback.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="185"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2833">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2834">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2835">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2836">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2837">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2838">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2971">Removes contact with @uid from the @client.
The call is finished by e_book_client_remove_contact_by_uid_finish()
from the @callback.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="201"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2973">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2974">a UID of a contact to remove</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2975">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2976">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2977">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2978">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3020">Finishes previous call of e_book_client_remove_contact_by_uid().</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="208"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="3028">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3022">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3023">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3050">Removes contact with @uid from the @client.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="212"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="3060">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3052">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3053">a UID of a contact to remove</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3054">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3055">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2880">Finishes previous call of e_book_client_remove_contact().</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="191"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2888">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2882">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2883">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2910">Removes @contact from the @client.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="195"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2920">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2912">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2913">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2914">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2915">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3108">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="218"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3110">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uids" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3111">a #GSList of UIDs to remove</doc>
            <type name="GLib.SList" c:type="const GSList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3112">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3113">a #GCancellable; can be %NULL</doc>
            <type name="Gio.Cancellable" c:type="GCancellable*"/>
          </parameter>
          <parameter name="callback"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1"
                     scope="async"
                     closure="4">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3114">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3115">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3161">Finishes previous call of e_book_client_remove_contacts().</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="224"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="3169">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3163">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3164">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="3191">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>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="228"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="3204">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3193">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="uids" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3194">a #GSList of UIDs to remove</doc>
            <type name="GLib.SList" c:type="const GSList*">
              <type name="utf8"/>
            </type>
          </parameter>
          <parameter name="opflags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3195">bit-or of #EBookOperationFlags</doc>
            <type name="EBookContacts.BookOperationFlags" c:type="guint32"/>
          </parameter>
          <parameter name="cancellable"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="3196">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"
             filename="src/addressbook/libebook/e-book-client.c"
             line="2029">Specify that @contact residing in @client is the #EContact that
refers to the user of the address book.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client.h"
                         line="115"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client.c"
               line="2038">%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"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2031">an #EBookClient</doc>
            <type name="BookClient" c:type="EBookClient*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client.c"
                 line="2032">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
        </parameters>
      </method>
      <property name="locale"
                version="3.12"
                transfer-ownership="none"
                getter="get_locale">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client.c"
             line="1272">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"
           filename="src/addressbook/libebook/e-book-client.h"
           line="73">Class structure for the #EBookClient class.</doc>
      <source-position filename="src/addressbook/libebook/e-book-client.h"
                       line="83"/>
      <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"
           filename="src/addressbook/libebook/e-book-client-cursor.h"
           line="57">Contains only private data.</doc>
      <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                       line="86"/>
      <implements name="Gio.Initable"/>
      <virtual-method name="refresh">
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="85"/>
        <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"
              glib:get-property="alphabet"
              version="3.12">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2166">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>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="92"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-cursor.c"
               line="2194">
  The array of displayable labels for each index in the active alphabet.</doc>
          <array c:type="const gchar* const*">
            <type name="utf8"/>
          </array>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2168">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2169">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2170">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2171">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2172">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2763">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>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="149"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-cursor.c"
               line="2779">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2765">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2766">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"
              glib:get-property="position"
              version="3.12">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2239">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>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="99"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-cursor.c"
               line="2254">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2241">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"
              glib:get-property="total"
              version="3.12">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2220">Fetches the total number of contacts in the addressbook
which match @cursor's query</doc>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="98"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-cursor.c"
               line="2227">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2222">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2143">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>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="90"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-cursor.c"
               line="2154">an #EBookClient</doc>
          <type name="BookClient" c:type="_EBookClient*"/>
        </return-value>
        <parameters>
          <instance-parameter name="cursor" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2145">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2606">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>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="134"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2608">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2609">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2610">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2611">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2612">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2655">Completes an asynchronous call initiated by e_book_client_cursor_set_alphabetic_index().</doc>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="140"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-cursor.c"
               line="2663">%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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2657">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2658">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2699">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 an #EBookClientCursor:alphabet
property change notification is delivered and then proceed to load the new
alphabet before trying to set any alphabetic index.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="144"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-cursor.c"
               line="2730">%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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2701">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="index" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2702">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2703">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2266">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>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="101"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2268">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2269">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2270">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2271">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2272">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2315">Completes an asynchronous call initiated by e_book_client_cursor_set_sexp(), reporting
whether the new search expression was accepted.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="106"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-cursor.c"
               line="2324">%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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2317">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2318">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2360">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>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="110"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-cursor.c"
               line="2383">%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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2362">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="sexp" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2363">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2364">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2419">&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>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="115"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2421">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2422">The #EBookCursorStepFlags for this step</doc>
            <type name="EBookContacts.BookCursorStepFlags"
                  c:type="EBookCursorStepFlags"/>
          </parameter>
          <parameter name="origin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2423">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2424">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2425">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2426">callback to call when a result is ready</doc>
            <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
          </parameter>
          <parameter name="user_data"
                     transfer-ownership="none"
                     nullable="1"
                     allow-none="1">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2427">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2474">Completes an asynchronous call initiated by e_book_client_cursor_step(), fetching
any contacts which might have been returned by the call.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="122"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-cursor.c"
               line="2484">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2476">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="result" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2477">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2478">return location for a #GSList of #EContact</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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="2527">&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>
        <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                         line="127"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-cursor.c"
               line="2568">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2529">an #EBookClientCursor</doc>
            <type name="BookClientCursor" c:type="EBookClientCursor*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2530">The #EBookCursorStepFlags for this step</doc>
            <type name="EBookContacts.BookCursorStepFlags"
                  c:type="EBookCursorStepFlags"/>
          </parameter>
          <parameter name="origin" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2531">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2532">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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2533">return location for a #GSList of #EContact</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"
                 filename="src/addressbook/libebook/e-book-client-cursor.c"
                 line="2534">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"
                getter="get_alphabet">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="822">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="709">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="751">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="728">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="799">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="775">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"
                getter="get_position">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="876">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="686">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"
                getter="get_total">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="854">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"
             filename="src/addressbook/libebook/e-book-client-cursor.c"
             line="910">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"
           filename="src/addressbook/libebook/e-book-client-cursor.h"
           line="70">The cursor class structure.</doc>
      <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                       line="86"/>
      <field name="parent_class" readable="0" private="1">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="refresh">
        <callback name="refresh">
          <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                           line="85"/>
          <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">
      <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                       line="53"/>
    </record>
    <record name="BookClientPrivate" c:type="EBookClientPrivate" disguised="1">
      <source-position filename="src/addressbook/libebook/e-book-client.h"
                       line="57"/>
    </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"
           filename="src/addressbook/libebook/e-book-client-view.h"
           line="56">Contains only private data the should be read and manipulated using the
functions below.</doc>
      <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                       line="99"/>
      <implements name="Gio.Initable"/>
      <virtual-method name="complete">
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="97"/>
        <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">
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="88"/>
        <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">
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="90"/>
        <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">
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="92"/>
        <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">
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="94"/>
        <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"
              glib:get-property="client"
              deprecated="1"
              deprecated-version="3.10">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client-view.c"
             line="1090">Returns the #EBookClientView:client associated with @client_view.</doc>
        <doc-deprecated xml:space="preserve">Use e_book_client_view_ref_client() instead.</doc-deprecated>
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="124"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-view.c"
               line="1096">an #EBookClient</doc>
          <type name="BookClient" c:type="_EBookClient*"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1092">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"
              glib:get-property="connection"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client-view.c"
             line="1118">Returns the #GDBusConnection used to create the D-Bus proxy.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="105"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-view.c"
               line="1124">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"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1120">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"
              glib:get-property="object-path"
              version="3.8">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client-view.c"
             line="1136">Returns the object path used to create the D-Bus proxy.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="107"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-view.c"
               line="1142">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"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1138">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">
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="109"/>
        <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">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-client-view.c"
             line="1066">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>
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="103"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-client-view.c"
               line="1075">an #EBookClient</doc>
          <type name="BookClient" c:type="_EBookClient*"/>
        </return-value>
        <parameters>
          <instance-parameter name="client_view" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1068">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"
             filename="src/addressbook/libebook/e-book-client-view.c"
             line="1241">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>
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="110"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1243">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
          <parameter name="fields_of_interest" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1244">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"
             filename="src/addressbook/libebook/e-book-client-view.c"
             line="1213">Sets the @flags which control the behaviour of @client_view.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="118"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1215">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
          <parameter name="flags" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1216">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"
             filename="src/addressbook/libebook/e-book-client-view.c"
             line="1154">Tells @client_view to start processing events.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="114"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1156">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"
             filename="src/addressbook/libebook/e-book-client-view.c"
             line="1187">Tells @client_view to stop processing events.</doc>
        <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                         line="116"/>
        <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"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1189">an #EBookClientView</doc>
            <type name="BookClientView" c:type="EBookClientView*"/>
          </instance-parameter>
        </parameters>
      </method>
      <property name="client"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_client">
        <type name="BookClient"/>
      </property>
      <property name="connection"
                writable="1"
                construct-only="1"
                transfer-ownership="none"
                getter="get_connection">
        <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"
                getter="get_object_path">
        <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="objects" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="989">a #GSList
   of added #EContact objects into the @client_view.</doc>
            <type name="GLib.SList" c:type="gpointer">
              <type name="EBookContacts.Contact"/>
            </type>
          </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="objects" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1004">a #GSList
   of modified #EContact objects within the @client_view</doc>
            <type name="GLib.SList" c:type="gpointer">
              <type name="EBookContacts.Contact"/>
            </type>
          </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="uids" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-book-client-view.c"
                 line="1019">a #GSList
   of removed objects, described by their UID.</doc>
            <type name="GLib.SList" c:type="gpointer">
              <type name="utf8"/>
            </type>
          </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"
           filename="src/addressbook/libebook/e-book-client-view.h"
           line="70">Class structure for the #EBookClient class.</doc>
      <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                       line="99"/>
      <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">
          <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                           line="88"/>
          <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">
          <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                           line="90"/>
          <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">
          <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                           line="92"/>
          <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">
          <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                           line="94"/>
          <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">
          <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                           line="97"/>
          <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">
      <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                       line="52"/>
    </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"
           filename="src/addressbook/libebook/e-book-types.h"
           line="48">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"
              glib:name="E_BOOK_ERROR_OK">
      </member>
      <member name="invalid_arg"
              value="1"
              c:identifier="E_BOOK_ERROR_INVALID_ARG"
              glib:nick="invalid-arg"
              glib:name="E_BOOK_ERROR_INVALID_ARG">
      </member>
      <member name="busy"
              value="2"
              c:identifier="E_BOOK_ERROR_BUSY"
              glib:nick="busy"
              glib:name="E_BOOK_ERROR_BUSY">
      </member>
      <member name="repository_offline"
              value="3"
              c:identifier="E_BOOK_ERROR_REPOSITORY_OFFLINE"
              glib:nick="repository-offline"
              glib:name="E_BOOK_ERROR_REPOSITORY_OFFLINE">
      </member>
      <member name="no_such_book"
              value="4"
              c:identifier="E_BOOK_ERROR_NO_SUCH_BOOK"
              glib:nick="no-such-book"
              glib:name="E_BOOK_ERROR_NO_SUCH_BOOK">
      </member>
      <member name="no_self_contact"
              value="5"
              c:identifier="E_BOOK_ERROR_NO_SELF_CONTACT"
              glib:nick="no-self-contact"
              glib:name="E_BOOK_ERROR_NO_SELF_CONTACT">
      </member>
      <member name="source_not_loaded"
              value="6"
              c:identifier="E_BOOK_ERROR_SOURCE_NOT_LOADED"
              glib:nick="source-not-loaded"
              glib:name="E_BOOK_ERROR_SOURCE_NOT_LOADED">
      </member>
      <member name="source_already_loaded"
              value="7"
              c:identifier="E_BOOK_ERROR_SOURCE_ALREADY_LOADED"
              glib:nick="source-already-loaded"
              glib:name="E_BOOK_ERROR_SOURCE_ALREADY_LOADED">
      </member>
      <member name="permission_denied"
              value="8"
              c:identifier="E_BOOK_ERROR_PERMISSION_DENIED"
              glib:nick="permission-denied"
              glib:name="E_BOOK_ERROR_PERMISSION_DENIED">
      </member>
      <member name="contact_not_found"
              value="9"
              c:identifier="E_BOOK_ERROR_CONTACT_NOT_FOUND"
              glib:nick="contact-not-found"
              glib:name="E_BOOK_ERROR_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"
              glib:name="E_BOOK_ERROR_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"
              glib:name="E_BOOK_ERROR_PROTOCOL_NOT_SUPPORTED">
      </member>
      <member name="cancelled"
              value="12"
              c:identifier="E_BOOK_ERROR_CANCELLED"
              glib:nick="cancelled"
              glib:name="E_BOOK_ERROR_CANCELLED">
      </member>
      <member name="could_not_cancel"
              value="13"
              c:identifier="E_BOOK_ERROR_COULD_NOT_CANCEL"
              glib:nick="could-not-cancel"
              glib:name="E_BOOK_ERROR_COULD_NOT_CANCEL">
      </member>
      <member name="authentication_failed"
              value="14"
              c:identifier="E_BOOK_ERROR_AUTHENTICATION_FAILED"
              glib:nick="authentication-failed"
              glib:name="E_BOOK_ERROR_AUTHENTICATION_FAILED">
      </member>
      <member name="authentication_required"
              value="15"
              c:identifier="E_BOOK_ERROR_AUTHENTICATION_REQUIRED"
              glib:nick="authentication-required"
              glib:name="E_BOOK_ERROR_AUTHENTICATION_REQUIRED">
      </member>
      <member name="tls_not_available"
              value="16"
              c:identifier="E_BOOK_ERROR_TLS_NOT_AVAILABLE"
              glib:nick="tls-not-available"
              glib:name="E_BOOK_ERROR_TLS_NOT_AVAILABLE">
      </member>
      <member name="dbus_exception"
              value="17"
              c:identifier="E_BOOK_ERROR_DBUS_EXCEPTION"
              glib:nick="dbus-exception"
              glib:name="E_BOOK_ERROR_DBUS_EXCEPTION">
      </member>
      <member name="no_such_source"
              value="18"
              c:identifier="E_BOOK_ERROR_NO_SUCH_SOURCE"
              glib:nick="no-such-source"
              glib:name="E_BOOK_ERROR_NO_SUCH_SOURCE">
      </member>
      <member name="offline_unavailable"
              value="19"
              c:identifier="E_BOOK_ERROR_OFFLINE_UNAVAILABLE"
              glib:nick="offline-unavailable"
              glib:name="E_BOOK_ERROR_OFFLINE_UNAVAILABLE">
      </member>
      <member name="other_error"
              value="20"
              c:identifier="E_BOOK_ERROR_OTHER_ERROR"
              glib:nick="other-error"
              glib:name="E_BOOK_ERROR_OTHER_ERROR">
      </member>
      <member name="invalid_server_version"
              value="21"
              c:identifier="E_BOOK_ERROR_INVALID_SERVER_VERSION"
              glib:nick="invalid-server-version"
              glib:name="E_BOOK_ERROR_INVALID_SERVER_VERSION">
      </member>
      <member name="unsupported_authentication_method"
              value="22"
              c:identifier="E_BOOK_ERROR_UNSUPPORTED_AUTHENTICATION_METHOD"
              glib:nick="unsupported-authentication-method"
              glib:name="E_BOOK_ERROR_UNSUPPORTED_AUTHENTICATION_METHOD">
      </member>
      <member name="no_space"
              value="23"
              c:identifier="E_BOOK_ERROR_NO_SPACE"
              glib:nick="no-space"
              glib:name="E_BOOK_ERROR_NO_SPACE">
      </member>
      <member name="not_supported"
              value="24"
              c:identifier="E_BOOK_ERROR_NOT_SUPPORTED"
              glib:nick="not-supported"
              glib:name="E_BOOK_ERROR_NOT_SUPPORTED">
      </member>
    </enumeration>
    <function-macro name="DESTINATION"
                    c:identifier="E_DESTINATION"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-destination.h"
                       line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DESTINATION_CLASS"
                    c:identifier="E_DESTINATION_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-destination.h"
                       line="41"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="DESTINATION_GET_CLASS"
                    c:identifier="E_DESTINATION_GET_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-destination.h"
                       line="50"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <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">
      <source-position filename="src/addressbook/libebook/e-destination.h"
                       line="77"/>
      <constructor name="new" c:identifier="e_destination_new">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-destination.c"
             line="160">Creates a new #EDestination with blank values.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="81"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="165">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1692">Exports multiple #EDestination elements to a single XML document.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="149"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1698">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1694">a %NULL-terminated array of pointers to #EDestination</doc>
            <array c:type="EDestination**">
              <type name="Destination" c:type="EDestination*"/>
            </array>
          </parameter>
        </parameters>
      </function>
      <function name="freev" c:identifier="e_destination_freev">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-destination.c"
             line="1792">Unrefs the elements of @destv and frees @destv itself.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="158"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="destv" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1794">a %NULL-terminated array of pointers to #EDestination</doc>
            <array c:type="EDestination**">
              <type name="Destination" c:type="EDestination*"/>
            </array>
          </parameter>
        </parameters>
      </function>
      <function name="get_textrepv" c:identifier="e_destination_get_textrepv">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-destination.c"
             line="1312">Generates a joint text representation of all the #EDestination
elements in @destv.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="145"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1319">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1314">%NULL-terminated array of pointers to #EDestination</doc>
            <array c:type="EDestination**">
              <type name="Destination" c:type="EDestination*"/>
            </array>
          </parameter>
        </parameters>
      </function>
      <function name="import" c:identifier="e_destination_import">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-destination.c"
             line="1661">Creates an #EDestination from an XML document.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="150"/>
        <return-value transfer-ownership="full" nullable="1">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1667">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1663">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1733">Creates an array of pointers to #EDestination elements
from an XML document.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="151"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1740">A %NULL-terminated
array of pointers to #EDestination elements.</doc>
          <array c:type="EDestination**">
            <type name="Destination" c:type="EDestination*"/>
          </array>
        </return-value>
        <parameters>
          <parameter name="str" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1735">an XML string</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </function>
      <virtual-method name="changed">
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="70"/>
        <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"
             filename="src/addressbook/libebook/e-destination.c"
             line="173">Creates a new #EDestination identical to @dest.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="82"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="179">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="175">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="264">Checks if @dest is blank.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="84"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="270">%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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="266">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="292">Checks if @a and @b are equal.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="85"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="299">%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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="294">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
          <parameter name="b" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="295">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1626">Exports a destination to an XML document.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="148"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1632">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1628">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1812">Exports the contact information from @dest to parameters
and values in @attr, suitable for an address book.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="154"/>
        <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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1814">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="attr" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1815">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1050">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>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="110"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1058">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1052">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="815">Gets the contact @dest is pointing to, if any.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="97"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="821">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="817">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="831">Gets the unique contact ID @dest is pointing to, if any.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="99"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="837">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="833">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="965">Gets the e-mail address of @dest's addressee.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="109"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="971">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="967">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="864">Gets the index of the e-mail address of the contact that
@dest is pointing to, if any.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="100"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="871">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="866">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1268">Check if @dest wants to get mail formatted as HTML.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="123"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1274">%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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1270">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="884">Gets the full name of @dest's addressee, or if the addressee is
a contact list, the name the list was filed under. The name can
be encoded in quoted printable.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="108"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="892">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="886">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="847">Gets the unique source ID @dest is pointing to, if any. The source
ID specifies which address book @dest's contact came from.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="98"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="854">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="849">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1124">Generates a textual representation of @dest, suitable for referring
to the destination during user interaction. The name can be encoded
in quoted printable.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="143"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1133">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1126">an #EDestination</doc>
            <type name="Destination" c:type="const EDestination*"/>
          </instance-parameter>
          <parameter name="include_email" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1127">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="777">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>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="133"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="785">%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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="779">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1172">Checks if @dest is a list of addresses.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="112"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1178">%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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1174">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="937">Check if @dest is to be ignored.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="118"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="943">%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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="939">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1232">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>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="115"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1240">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1234">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1208">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>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="116"/>
        <return-value transfer-ownership="none" nullable="1">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1216">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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1210">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1188">If @dest is a list, checks if the addresses in the list
should be presented to the user during interaction.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="113"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-destination.c"
               line="1195">%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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1190">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="795">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>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="134"/>
        <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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="797">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="value" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="798">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="608">Specify the source @dest's contact comes from. This is useful
if you need to update the contact later.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="95"/>
        <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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="610">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="client" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="611">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="372">Sets @dest to point to one of @contact's e-mail addresses
indicated by @email_num.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="89"/>
        <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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="374">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="contact" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="375">an #EContact</doc>
            <type name="EBookContacts.Contact" c:type="EContact*"/>
          </parameter>
          <parameter name="email_num" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="376">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="640">Sets @dest to point to one of the contact specified by @uid's e-mail
addresses indicated by @email_num.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="92"/>
        <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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="642">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="uid" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="643">a unique contact ID</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="email_num" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="644">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="731">Sets the e-mail address of @dest's addressee.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="106"/>
        <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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="733">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="email" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="734">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1287">Specifies whether @dest wants to get mail formatted as HTML.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="125"/>
        <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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1289">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="flag" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1290">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="951">Set the ignore flag on an #EDestination.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="119"/>
        <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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="953">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="ignored" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="954">%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"
             filename="src/addressbook/libebook/e-destination.c"
             line="694">Sets the full name of @dest's addressee.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="104"/>
        <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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="696">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="name" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="697">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"
             filename="src/addressbook/libebook/e-destination.c"
             line="1092">Sets @dest to point to the name and e-mail address resulting from
parsing the supplied string. Useful for user input.</doc>
        <source-position filename="src/addressbook/libebook/e-destination.h"
                         line="139"/>
        <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"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1094">an #EDestination</doc>
            <type name="Destination" c:type="EDestination*"/>
          </instance-parameter>
          <parameter name="raw" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="src/addressbook/libebook/e-destination.c"
                 line="1095">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">
      <source-position filename="src/addressbook/libebook/e-destination.h"
                       line="77"/>
      <field name="parent_class">
        <type name="GObject.ObjectClass" c:type="GObjectClass"/>
      </field>
      <field name="changed">
        <callback name="changed">
          <source-position filename="src/addressbook/libebook/e-destination.h"
                           line="70"/>
          <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">
          <source-position filename="src/addressbook/libebook/e-destination.h"
                           line="73"/>
          <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">
          <source-position filename="src/addressbook/libebook/e-destination.h"
                           line="74"/>
          <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">
          <source-position filename="src/addressbook/libebook/e-destination.h"
                           line="75"/>
          <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">
          <source-position filename="src/addressbook/libebook/e-destination.h"
                           line="76"/>
          <return-value transfer-ownership="none">
            <type name="none" c:type="void"/>
          </return-value>
        </callback>
      </field>
    </record>
    <record name="DestinationPrivate"
            c:type="EDestinationPrivate"
            disguised="1">
      <source-position filename="src/addressbook/libebook/e-destination.h"
                       line="59"/>
    </record>
    <function-macro name="IS_BOOK_CLIENT"
                    c:identifier="E_IS_BOOK_CLIENT"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client.h"
                       line="42"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BOOK_CLIENT_CLASS"
                    c:identifier="E_IS_BOOK_CLIENT_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client.h"
                       line="45"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BOOK_CLIENT_CURSOR"
                    c:identifier="E_IS_BOOK_CLIENT_CURSOR"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                       line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BOOK_CLIENT_CURSOR_CLASS"
                    c:identifier="E_IS_BOOK_CLIENT_CURSOR_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client-cursor.h"
                       line="41"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BOOK_CLIENT_VIEW"
                    c:identifier="E_IS_BOOK_CLIENT_VIEW"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                       line="37"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_BOOK_CLIENT_VIEW_CLASS"
                    c:identifier="E_IS_BOOK_CLIENT_VIEW_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-book-client-view.h"
                       line="40"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DESTINATION"
                    c:identifier="E_IS_DESTINATION"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-destination.h"
                       line="44"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_DESTINATION_CLASS"
                    c:identifier="E_IS_DESTINATION_CLASS"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-destination.h"
                       line="47"/>
      <parameters>
        <parameter name="cls">
        </parameter>
      </parameters>
    </function-macro>
    <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>
    <function name="book_utils_get_recipient_certificates_sync"
              c:identifier="e_book_utils_get_recipient_certificates_sync"
              version="3.30"
              throws="1">
      <doc xml:space="preserve"
           filename="src/addressbook/libebook/e-book-utils.c"
           line="187">Synchronously searches for @recipients S/MIME or PGP certificates either
in provided @only_clients #EBookClient, or, when %NULL, in each found
address book configured for auto-completion.

This function can be used within camel_session_get_recipient_certificates_sync()
implementation.</doc>
      <source-position filename="src/addressbook/libebook/e-book-utils.h"
                       line="30"/>
      <return-value transfer-ownership="none">
        <doc xml:space="preserve"
             filename="src/addressbook/libebook/e-book-utils.c"
             line="206">%TRUE when no fatal error occurred, %FALSE otherwise.</doc>
        <type name="gboolean" c:type="gboolean"/>
      </return-value>
      <parameters>
        <parameter name="registry" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-utils.c"
               line="189">an #ESourceRegistry</doc>
          <type name="EDataServer.SourceRegistry" c:type="ESourceRegistry*"/>
        </parameter>
        <parameter name="only_clients"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-utils.c"
               line="190">optional #GSList of
   the #EBookClient objects to search for the certificates in, or %NULL</doc>
          <type name="GLib.SList" c:type="const GSList*">
            <type name="BookClient"/>
          </type>
        </parameter>
        <parameter name="flags" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-utils.c"
               line="192">bit-or of #CamelRecipientCertificateFlags</doc>
          <type name="Camel.RecipientCertificateFlags" c:type="guint32"/>
        </parameter>
        <parameter name="recipients" transfer-ownership="none">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-utils.c"
               line="193">a #GPtrArray of recipients' email addresses</doc>
          <array name="GLib.PtrArray" c:type="const GPtrArray*">
            <type name="utf8"/>
          </array>
        </parameter>
        <parameter name="out_certificates"
                   direction="out"
                   caller-allocates="0"
                   transfer-ownership="full">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-utils.c"
               line="194">a #GSList of gathered certificates
   encoded in base64</doc>
          <type name="GLib.SList" c:type="GSList**">
            <type name="utf8"/>
          </type>
        </parameter>
        <parameter name="cancellable"
                   transfer-ownership="none"
                   nullable="1"
                   allow-none="1">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-book-utils.c"
               line="196">optional #GCancellable object, or %NULL</doc>
          <type name="Gio.Cancellable" c:type="GCancellable*"/>
        </parameter>
      </parameters>
    </function>
    <docsection name="e-book">
      <doc xml:space="preserve"
           filename="src/addressbook/libebook/e-book.c"
           line="24">The old asynchronous API was deprecated since 3.0 and is replaced with
their an equivalent version which has a detailed #GError
structure in the asynchronous callback, instead of a status code only.

As an example, e_book_async_open() is replaced by e_book_open_async().</doc>
    </docsection>
    <docsection name="e-book-client">
      <doc xml:space="preserve"
           filename="src/addressbook/libebook/e-book-client.c"
           line="21">This class is the main user facing API for accessing and modifying
the addressbook.</doc>
    </docsection>
    <docsection name="e-book-client-cursor">
      <doc xml:space="preserve"
           filename="src/addressbook/libebook/e-book-client-cursor.c"
           line="20">The #EBookClientCursor is an iteration based interface for browsing
a sorted list of contacts in the addressbook.

Aside from the documentation found here, a fully functional example
program &lt;link linkend="eds-cursor-example"&gt;can be found here&lt;/link&gt;.

&lt;refsect2 id="cursor-sort-keys"&gt;
&lt;title&gt;Sort Keys&lt;/title&gt;
&lt;para&gt;
When creating the cursor initially with e_book_client_get_cursor(),
a list of #EContactFields must be provided to define the sort order for
the newly created cursor. Only contact fields of type %G_TYPE_STRING
can potentially be used to define a cursor's sort order.
&lt;/para&gt;
&lt;para&gt;
Backends which support cursors may refuse to create a cursor based
on the fields specified as sort keys,  if this happens then an
%E_CLIENT_ERROR_INVALID_QUERY error will be reported by
e_book_client_get_cursor().
&lt;/para&gt;
&lt;para&gt;
The default SQLite backend provided with Evolution Data Server
only supports #EContactFields that are specified as summary information
to be used as sort keys. Whether a contact field is configured to
be part of the summary for your addressbook can be verified with
e_source_backend_summary_setup_get_summary_fields().
&lt;/para&gt;
&lt;para&gt;
The order of sort keys given to e_book_client_get_cursor() defines
which sort key will be the primary sort key and which keys will
serve as tie breakers where the previous sort keys are exact matches.
In the following example we create a typical cursor sorted with
%E_CONTACT_FAMILY_NAME as the primary sort key and %E_CONTACT_GIVEN_NAME
as a tie breaker.
|[
    EBookClientCursor *cursor = NULL;
    EContactField sort_fields[] = { E_CONTACT_FAMILY_NAME, E_CONTACT_GIVEN_NAME };
    EBookCursorSortType sort_types[] = { E_BOOK_CURSOR_SORT_ASCENDING, E_BOOK_CURSOR_SORT_ASCENDING };
    GError *error = NULL;

    if (e_book_client_get_cursor_sync (book_client, // EBookClient
                                       NULL,        // Search Expression
                                       sort_fields, // Sort Keys
                                       sort_types,  // Ascending / Descending
                                       2,           // Number of keys
                                       &amp;cursor,     // Return location for cursor
                                       NULL,        // GCancellable
                                       &amp;error)) {
            // Now we have a cursor ...
    }
]|
&lt;/para&gt;
&lt;para&gt;
Sort order is immutable, if you need to browse content in a different
order, then you need to create a separate cursor.
&lt;/para&gt;
&lt;/refsect2&gt;

&lt;refsect2 id="cursor-state"&gt;
&lt;title&gt;Understanding cursor state&lt;/title&gt;
&lt;para&gt;
At any given time in a cursor's life cycle, a cursor's internal state will refer to a
relative position in a sorted list.
&lt;/para&gt;
&lt;para&gt;
There are three basic varieties of cursor states:
&lt;itemizedlist&gt;
  &lt;listitem&gt;
    &lt;para&gt;
      Virtual states referring to the beginnng and end of the list.
    &lt;/para&gt;
    &lt;para&gt;
      The beginning state is positioned before any contact in the addressbook.
      When the cursor is in this state, a call to e_book_client_cursor_step()
      will always start reporting contacts from the beginning of the list.
      Similarly when in the end state, stepping in reverse will start
      reporting contacts from the end of the list.
    &lt;/para&gt;
    &lt;para&gt;
      The beginning and end states can be reached by stepping off the
      end of the list, or by specifying the %E_BOOK_CURSOR_ORIGIN_BEGIN or
      %E_BOOK_CURSOR_ORIGIN_END origins to e_book_client_cursor_step(). The
      cursor is also initially positioned before the contact list.
    &lt;/para&gt;
  &lt;/listitem&gt;
  &lt;listitem&gt;
    &lt;para&gt;
      States referring to a specific contact.
    &lt;/para&gt;
    &lt;para&gt;
      A state which refers to a specific contact in the list of
      contacts associated with a given cursor. At the end of any
      successful call to e_book_client_cursor_step() with
      the %E_BOOK_CURSOR_STEP_MOVE flag specified; the cursor
      state is updated with the value of the last result.
    &lt;/para&gt;
  &lt;/listitem&gt;
  &lt;listitem&gt;
    &lt;para&gt;
      States referring to an alphabetic position.
    &lt;/para&gt;
    &lt;para&gt;
      When a state refers to an
      &lt;link linkend="cursor-alphabet"&gt;Alphabetic Index&lt;/link&gt;,
      it refers to a position which is in between contacts.
      For instance the alphabetic position "E" refers to a
      position after contacts starting with "D" and before contacts
      starting with "E".
    &lt;/para&gt;
  &lt;/listitem&gt;
&lt;/itemizedlist&gt;
&lt;/para&gt;
&lt;/refsect2&gt;

&lt;refsect2 id="cursor-pos-total"&gt;
&lt;title&gt;Cursor position and total&lt;/title&gt;
&lt;para&gt;
The #EBookClientCursor:position and #EBookClientCursor:total attributes
provide feedback about a cursor's position in relation to the addressbook
provided the cursor's sort order.
&lt;/para&gt;
&lt;para&gt;
The total reflects that total amount of contacts in the addressbook given
the cursor's &lt;link linkend="cursor-search"&gt;Search Expression&lt;/link&gt;. The position
is defined as the number of contacts leading up to the cursor position inclusive
of the cursor position.
&lt;/para&gt;
&lt;para&gt;
To help illustrate how the total and position attributes relate to a sorted list
of contacts, we've provided the diagram below.
&lt;/para&gt;
&lt;inlinegraphic fileref="cursor-positions.png" format="PNG" align="center"&gt;&lt;/inlinegraphic&gt;
&lt;para&gt;
The above diagram shows two representations of a sorted contact list, using
%E_CONTACT_FAMILY_NAME as the primary sort key and %E_CONTACT_GIVEN_NAME as
a secondary sort key. On either side we can see the symbolic positions
%E_BOOK_CURSOR_ORIGIN_BEGIN and %E_BOOK_CURSOR_ORIGIN_END.
&lt;/para&gt;
&lt;para&gt;
For a given cursor state, the position value will be equal to the total
number of contacts leading up to the current cursor state inclusive of the
cursor state itself. In the left hand side of the above diagram the cursor
points to the fourth contact and the cursor position is also 4. An exception
to this is when the cursor state refers to the %E_BOOK_CURSOR_ORIGIN_END position.
When the cursor state refers to the end of list, the position property
will have a value of (total + 1).
&lt;/para&gt;
&lt;para&gt;
Another thing the above diagram illustrates is the effect that an
asynchronous addressbook modification has on the cursor. The right
hand side of the diagram portrays the result of deleting "Mickey Mouse"
from the original list on the left.
&lt;/para&gt;
&lt;para&gt;
The cursor state at this time still litteraly refers to "Mickey Mouse",
however the number of contacts leading up to "Mickey Mouse" is now 3
instead of 4. As one might have guessed, any addition of a contact
which is considered to be less than or equal to "Mickey Mouse" at this point,
will cause the position to increase again. In this way, asynchronous
addressbook modification might cause the cursor's position and total
values to change, but never effect the cursor's state and it's
actual position in relation to other contacts in the sorted list.
&lt;/para&gt;
&lt;para&gt;
The position and total can be useful for various tasks
such as determining "Forward" / "Back" button sensitivity
in a browser interface, or displaying some indication
of the view window's position in the full contact list.
|[
    gint position, total;
    gdouble percent;

    // Fetch the position &amp; total
    position = e_book_client_cursor_get_position (cursor);
    total    = e_book_client_cursor_get_total (cursor);

    // The position can be total + 1 if we're at the end of the
    // list, let's ignore that for this calculation.
    position = CLAMP (position, 0, total);

    // Calculate the percentage.
    percent = position * 1.0F / (total - N_DISPLAY_CONTACTS);

    // Let the user know the percentage of contacts in the list
    // which are positioned before the view position (the
    // percentage of the addressbook which the user has seen so far).
    update_percentage_of_list_browsed (user_interface, percent);
]|
&lt;/para&gt;
&lt;para&gt;
These total and position values are guaranteed to always be coherent, they are
updated synchronously upon successful completion of any of the asynchronous
cursor API calls, and also updated asynchronously whenever the addressbook
changes and an #EBookClientCursor::refresh signal is delivered.
&lt;/para&gt;
&lt;para&gt;
Change notifications are guaranteed to only ever be delivered in the #GMainContext which
was the thread default main context at cursor creation time.
&lt;/para&gt;
&lt;/refsect2&gt;

&lt;refsect2 id="cursor-search"&gt;
&lt;title&gt;Search Expressions&lt;/title&gt;
&lt;para&gt;
The list of contacts associated to a given cursor can be filtered
with a search expression generated by e_book_query_to_string(). Since
this effects how the data will be traversed in the backend, seach
expressions come with the same limitation as sort keys. Backends
will report %E_CLIENT_ERROR_INVALID_QUERY for contact fields which
are not supported. For the default local addressbook, any fields
which are configured in the summary can be used to filter cursor
results.
&lt;/para&gt;
&lt;para&gt;
Changing the search expression can be done at any time using
e_book_client_cursor_set_sexp().
The cursor &lt;link linkend="cursor-pos-total"&gt;position and total&lt;/link&gt;
values will be updated synchronously after successfully setting the
search expression at which time you might refresh the current
view, displaying the new filtered list of contacts at the same
cursor position.
&lt;/para&gt;
&lt;inlinegraphic fileref="cursor-positions-filtered.png" format="PNG" align="center"&gt;&lt;/inlinegraphic&gt;
&lt;/refsect2&gt;

&lt;refsect2 id="cursor-iteration"&gt;
&lt;title&gt;Iteration with the cursor API&lt;/title&gt;
&lt;para&gt;
The cursor API allows you to iterate through a sorted list of contacts
without keeping a potentially large collection of contacts loaded
in memory.
&lt;/para&gt;
&lt;para&gt;
Iterating through the contact list is done with e_book_client_cursor_step(), this
function allows one to move the cursor and fetch the results following the current
cursor position.
|[
    GError *error = NULL;
    GSList *results = NULL;
    gint n_results;

    // Move the cursor forward by 10 contacts and fetch the results.
    n_results = e_book_client_cursor_step_sync (cursor,
                                                E_BOOK_CURSOR_STEP_MOVE |
                                                E_BOOK_CURSOR_STEP_FETCH,
                                                E_BOOK_CURSOR_ORIGIN_CURRENT,
                                                10,
                                                &amp;results,
                                                NULL,
                                                &amp;error);

    if (n_results &lt; 0)
      {
        if (g_error_matches (error,
                             E_CLIENT_ERROR,
                             E_CLIENT_ERROR_OUT_OF_SYNC))
          {
            // The addressbook has been modified at the same time as
            // we asked to step. The appropriate thing to do is wait
            // for the "refresh" signal before trying again.
            handle_out_of_sync_condition (cursor);
          }
        else if (g_error_matches (error,
                                  E_CLIENT_ERROR,
                                  E_CLIENT_ERROR_QUERY_REFUSED))
          {
            // We asked for 10 contacts but were already positioned
            // at the end of the list (or we asked for -10 contacts
            // and were positioned at the beginning).
            handle_end_of_list_condition (cursor);
          }
        else
          {
            // Some error actually occurred
            handle_error_condition (cursor, error);
          }

        g_clear_error (&amp;error);
      }
    else if (n_results &lt; 10)
      {
        // Cursor did not traverse as many contacts as requested.
        //
        // This is not an error but rather an indication that
        // the end of the list was reached. The next attempt to
        // move the cursor in the same direction will result in
        // an E_CLIENT_ERROR_QUERY_REFUSED error.
      }
]|
In the above example we chose %E_BOOK_CURSOR_ORIGIN_CURRENT as our #EBookCursorOrigin so the above
call will traverse 10 contacts following the cursor's current position. One can also choose the
%E_BOOK_CURSOR_ORIGIN_BEGIN or %E_BOOK_CURSOR_ORIGIN_END origin to start at the beginning or end
of the results at any time.
&lt;/para&gt;
&lt;para&gt;
We also specified both of the flags %E_BOOK_CURSOR_STEP_MOVE and %E_BOOK_CURSOR_STEP_FETCH,
this means we want to receive results from the addressbook and we also want to modify
the current cursor state (move the cursor), these operations can however be done
completely independantly of eachother, which is often what is desired for a contact
browsing user interface. It is however recommended to move and fetch
results in a single pass wherever that makes sense in your application.
&lt;/para&gt;
&lt;para&gt;
Because the addressbook might be modified at any time by another application,
it's important to handle the %E_CLIENT_ERROR_OUT_OF_SYNC error. This error will occur
at any time that the cursor detects an addressbook change while trying to step.
Whenever an out of sync condition arises, the cursor should be left alone until the
next #EBookClientCursor::refresh signal. The #EBookClientCursor::refresh signal is triggered
any time that the addressbook changes and is the right place to refresh the currently
loaded content, it is also guaranteed to be triggered after any %E_CLIENT_ERROR_OUT_OF_SYNC
error.
&lt;/para&gt;
&lt;para&gt;
The diagram below illustrates some scenarios of how the cursor state is updated
in calls to e_book_client_cursor_step().
&lt;/para&gt;
&lt;inlinegraphic fileref="cursor-positions-step.png" format="PNG" align="center"&gt;&lt;/inlinegraphic&gt;
&lt;/refsect2&gt;

&lt;refsect2 id="cursor-alphabet"&gt;
&lt;title&gt;Alphabetic Indexes&lt;/title&gt;
&lt;para&gt;
The cursor permits navigation of the sorted contact list in terms of alphabetic
positions in the list, allowing one to jump from one letter to the next in
the active alphabet.
&lt;/para&gt;
&lt;para&gt;
The active alphabet itself is represented as an array of UTF-8 strings which are
suitable to display a given glyph or alphabetic position in the user's active alphabet.
This array of alphabetic position labels is exposed via the #EBookClientCursor:alphabet
property and can always be fetched with e_book_client_cursor_get_alphabet().
&lt;/para&gt;
&lt;para&gt;
As shown below, each index in the active alphabet array is a potential cursor state
which refers to a position before, after or in between contacts in the sorted contact list.
Most of the positions in the active alphabet array refer to alphabetic glyhps or positions,
however the 'underflow', 'inflow' and 'overflow' positions represent positions for
contacts which sort outside the bounderies of the active alphabet.
&lt;/para&gt;
&lt;inlinegraphic fileref="cursor-alphabetic-indexes.png" format="PNG" align="center"&gt;&lt;/inlinegraphic&gt;
&lt;para&gt;
The active alphabet is dynamically resolved from the system locale at startup time and
whenever a system locale change notification is delivered to Evolution Data Server. If
ever the system locale changes at runtime then a change notification will be delivered
for the #EBookClientCursor:alphabet property, this is a good time to refresh the list
of alphabetic positions available in a user interface.
&lt;/para&gt;
&lt;para&gt;
Using the active alphabet, one can build a user interface which allows the user
to navigate to a specific letter in the results. To set the cursor's position
directly before any results starting with a specific letter, one can use
e_book_client_cursor_set_alphabetic_index().
|[
    GError *error = NULL;
    gint index = currently_selected_index (user_interface);

    // At this point 'index' must be a numeric value corresponding
    // to one of the positions in the array returned by
    // e_book_client_cursor_get_alphabet().
    if (!e_book_client_cursor_set_alphabetic_index_sync (cursor,
                                                         index,
                                                         NULL,
                                                         &amp;error))
      {
        if (g_error_matches (error,
                             E_CLIENT_ERROR,
                             E_CLIENT_ERROR_OUT_OF_SYNC))
          {
            // The system locale has changed at the same time
            // as we were setting an alphabetic cursor position.
            handle_out_of_sync_condition (cursor);
          }
        else
          {
            // Some error actually occurred
            handle_error_condition (cursor, error);
          }

        g_clear_error (&amp;error);
      }
]|
After setting the alphabetic index successfully, you can go ahead
and use e_book_client_cursor_step() to load some contacts at the
beginning of the given letter.
&lt;/para&gt;
&lt;para&gt;
This API can result in an %E_CLIENT_ERROR_OUT_OF_SYNC error. This error will
occur at any time that the cursor tries to set the alphabetic index whilst the
addressbook is changing its active locale setting. In the case of a dynamic locale
change, a change notification will be delivered for the #EBookClientCursor:alphabet
property at which point the application should reload anything related to the
alphabet (an #EBookClientCursor::refresh signal will also be delivered at this point).
&lt;/para&gt;
&lt;para&gt;
While moving through the cursor results using e_book_client_cursor_step(),
it can be useful to know which alphabetic position a given contact sorts
under. This can be useful if your user interface displays an alphabetic
label indicating where the first contact in your view is positioned in
the alphabet.
&lt;/para&gt;
&lt;para&gt;
One can determine the appropriate index for a given #EContact by calling
e_book_client_cursor_get_contact_alphabetic_index() after refreshing
the currently displayed contacts in a view.
|[
    EContact *contact;
    const gchar * const *alphabet;
    gint index;

    // Fetch the first displayed EContact in the view
    contact = first_contact_in_the_list (user_interface);

    // Calculate the position in the alphabet for this contact
    index = e_book_client_cursor_get_contact_alphabetic_index (cursor, contact);

    // Fetch the alphabet labels
    alphabet = e_book_client_cursor_get_alphabet (cursor, &amp;n_labels,
                                                  NULL, NULL, NULL);

    // Update label in user interface
    set_alphabetic_position_feedback_text (user_interface, alphabet[index]);
]|
&lt;/para&gt;
&lt;/refsect2&gt;</doc>
    </docsection>
    <docsection name="e-book-client-view">
      <doc xml:space="preserve"
           filename="src/addressbook/libebook/e-book-client-view.c"
           line="22">This class provides functionality for watching for changes on a
given addressbook opened with an #EBookClient. Use e_book_client_get_view()
to create an #EBookClientView.</doc>
    </docsection>
    <function-macro name="return_async_error_if_fail"
                    c:identifier="e_return_async_error_if_fail"
                    version="2.32"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-error.h"
                       line="55"/>
      <parameters>
        <parameter name="expr">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-error.h"
               line="50">the expression to check</doc>
        </parameter>
        <parameter name="error">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-error.h"
               line="51">a #GError</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="return_async_error_val_if_fail"
                    c:identifier="e_return_async_error_val_if_fail"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-error.h"
                       line="65"/>
      <parameters>
        <parameter name="expr">
        </parameter>
        <parameter name="error">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="return_error_if_fail"
                    c:identifier="e_return_error_if_fail"
                    version="2.30"
                    introspectable="0">
      <doc xml:space="preserve"
           filename="src/addressbook/libebook/e-error.h"
           line="19">FIXME Document me!</doc>
      <source-position filename="src/addressbook/libebook/e-error.h"
                       line="28"/>
      <parameters>
        <parameter name="expr">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-error.h"
               line="21">the expression to check</doc>
        </parameter>
        <parameter name="error_code">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-error.h"
               line="22">the error code to set if @expr fails</doc>
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="return_ex_async_error_if_fail"
                    c:identifier="e_return_ex_async_error_if_fail"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-error.h"
                       line="75"/>
      <parameters>
        <parameter name="expr">
        </parameter>
        <parameter name="error">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="return_ex_async_error_val_if_fail"
                    c:identifier="e_return_ex_async_error_val_if_fail"
                    version="2.32"
                    introspectable="0">
      <source-position filename="src/addressbook/libebook/e-error.h"
                       line="97"/>
      <parameters>
        <parameter name="expr">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-error.h"
               line="92">the expression to check</doc>
        </parameter>
        <parameter name="error">
          <doc xml:space="preserve"
               filename="src/addressbook/libebook/e-error.h"
               line="93">a #GError</doc>
        </parameter>
      </parameters>
    </function-macro>
  </namespace>
</repository>
